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