我正在运行一个工具,为特定值采样HW PCI(我没有写它)。
当我从命令提示符运行它时,它会返回一个退出代码(正确的退出代码)但是当我使用Process.Start
从另一个应用程序运行它时,它会返回另一个退出代码。
直接运行应用程序或通过Process.Start
之间有区别吗?
您是否知道此问题的简单解决方法?
答案 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所在的目录,运行它,然后切换回以前的工作目录。