1

asp.net プロジェクトの参照として exe ファイルを追加しました。しかし、プロセスを使用してトリガーできないようです。現在、次のコードを使用してexeをトリガーしています。しかし、「c:/file/myEXE.exe」などのexeのフルパスを指定した場合にのみ機能したようです

    process.StartInfo.FileName = "myEXE.exe";
    process.StartInfo.Arguments = path;
    process.StartInfo.CreateNoWindow = true;
    process.Start();
    process.WaitForExit();
    int exitCode = process.ExitCode;

プロセスが参照からexeをトリガーできるようにするには、どのようにコーディングすればよいですか?

ありがとう!

4

2 に答える 2

0

はいピーター、

アドバイスをありがとう、今私はそれを機能させることができます。

public string checkPlatform(string path)
{
    //new process
    Process process = new Process();
    //required to change the path during hosting.
    string exelocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
    process.StartInfo.FileName = exelocation+"\\BitCheck.exe";
    process.StartInfo.Arguments = path;
    process.StartInfo.CreateNoWindow = true;
    process.Start();
    process.WaitForExit();
    int exitCode = process.ExitCode;
    switch (exitCode)
    {
        case 0:
            return "X86";
        case 1:
            return "X64";
        case 2:
            return "ANY";
        case 3:
            return "ERROR";
    }
    return "ERROR";
}

基本的に、現在の作業ディレクトリ パスを取得するには、この行が必要です。

string exelocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);

アドバイスと注意をありがとう

乾杯

于 2012-09-12T04:09:56.087 に答える
0

ここでいくつかのポイントがあります。

まず、他の人がコメントで述べているように、ビルド時に bin フォルダーにコピーするためだけに、プロジェクトへの参照として実行可能アセンブリを追加する必要はありません。実行可能ファイルをプロジェクト アイテムとして追加し、右クリックして [Propertiesプロパティ] ウィンドウを表示し、Copy to Output Directory値を に変更しますCopy if Newer。プロジェクトをビルドするたびに、そのファイルが bin/output フォルダーにコピーされます。

次に、@trailmax もコメントで述べているように、実行可能ファイルへのフルパスを指定して、確実に見つけられるようにすることをお勧めします。

最後に、これは ASP.NET プロジェクトであると述べたので、次のナレッジ ベース記事を参照してください。

ASP.NET からプロセスを開始できない

これが問題の原因であると言っているわけではありませんが、IIS で実行している場合、新しいプロセスを開始するために必要なアクセス許可がない可能性があるため、可能性があります。

于 2012-09-11T12:07:54.270 に答える