1

特定の値のHWPCIをサンプリングするツールを実行しています(私はそれを作成しませんでした)。

コマンドプロンプトから実行すると、1つの終了コード(正しいコード)が返されますが、を使用して別のアプリケーションから実行すると、Process.Start別の終了コードが返されます。

アプリケーションを直接実行するか、経由して実行するかには違いがありますProcess.Startか?この問題の簡単な回避策を知っていますか?

4

2 に答える 2

1

から同じ結果が必要な場合Process.Start()は、コマンド ラインと同じ作業ディレクトリでアプリケーションを実行する必要があります。

于 2012-07-22T11:34:20.517 に答える
1

Hassan の回答 (私の同様の問題を解決した) で述べたように、Process.Start() から返される終了コードは、実行可能ファイルの場所、特にそれが配置されているディレクトリの影響を受けます。使用したコードは次のとおりです。

    string yourExe = "C\\Program Files\\Your Directory\\YourExe.exe";
    string currentDir = Directory.GetCurrentDirectory();
    string yourExeDir = "C\\Program Files\\Your Directory";

    try
    {
        Directory.SetCurrentDirectory(yourExeDir);
    }
    catch (DirectoryNotFoundExeption dnfe)
    {
        MessageBox.Show("The specified directory does not exist. " + dnfe.Message);
    }

    if (!File.Exists(yourExe))
    {
        MessageBox.Show("Can't find yourExe");
    }
    else
    {
        Process.Start(yourExe);
    }

    try
    {
        //Set the current directory.
        Directory.SetCurrentDirectory(currentDir);
    }
    catch (DirectoryNotFoundException dnfe)
    {
        MessageBox.Show("The specified directory does not exist. " + dnfe.Message);
    }

これにより、現在の作業ディレクトリが .exe があるディレクトリに切り替わり、それが実行されてから、以前の作業ディレクトリに戻ります。

于 2012-09-10T15:40:06.237 に答える