C# 使用process.start运行应用程序返回的值与手动运行应用程序返回的值不同

C# 使用process.start运行应用程序返回的值与手动运行应用程序返回的值不同,c#,.net,process.start,C#,.net,Process.start,我正在运行一个工具,该工具对硬件PCI进行采样以获取特定值(我没有编写它) 当我从命令提示符运行它时,它返回一个退出代码(正确的退出代码),但当我使用Process.Start从另一个应用程序运行它时,它返回另一个退出代码 直接运行应用程序与通过进程启动运行应用程序之间是否有区别? 您知道这个问题的简单解决方法吗?如果您想从Process.Start()获得相同的结果,您必须在 与命令行相同的工作目录。正如Hassan的回答(解决了我的类似问题)中所述,Process.Start()返回的退出代

我正在运行一个工具,该工具对硬件PCI进行采样以获取特定值(我没有编写它)

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

直接运行应用程序与通过
进程启动运行应用程序之间是否有区别?

您知道这个问题的简单解决方法吗?

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

正如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所在的目录,运行它,然后切换回以前的工作目录。

没有任何实际细节,谁知道呢?什么工具?你有消息来源吗?有文件吗?它描述了出口代码吗?环境是一样的吗?等等等等等等。你如何调用
进程。启动
?该工具是公司内部的。@RoiShidlovsky:然后询问作者或维护人员为什么会这样。以“太本地化”结束(抱歉)。@Roi这里有很多人愿意帮忙。但是没有一个能变魔术。如果您要分享如何调用
Process.Start
,以及直接从命令行运行该工具的方式,可能会有人提供帮助。