使用process.start运行应用程序返回的值不同于手动运行它

时间:2012-07-22 11:13:42

标签: c# .net process.start

我正在运行一个工具,为特定值采样HW PCI(我没有写它)。

当我从命令提示符运行它时,它会返回一个退出代码(正确的退出代码)但是当我使用Process.Start从另一个应用程序运行它时,它会返回另一个退出代码。

直接运行应用程序或通过Process.Start之间有区别吗? 您是否知道此问题的简单解决方法?

2 个答案:

答案 0 :(得分:1)

如果您想从Process.Start()获得相同的结果,则必须执行您的应用程序 与命令行相同的工作目录。

答案 1 :(得分: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所在的目录,运行它,然后切换回以前的工作目录。