我正在運行一個工具,用於爲特定值(我沒有寫入它)對HW PCI進行採樣。使用process.start運行應用程序會返回與手動運行應用程序不同的值
當我從命令提示符運行它時,它會返回一個退出代碼(正確的),但是當我使用Process.Start
從另一個應用程序運行它時,它會返回另一個退出代碼。
直接運行應用程序還是通過Process.Start
運行應用程序有區別嗎? 你知道這個問題的一個簡單的解決方法嗎?
我正在運行一個工具,用於爲特定值(我沒有寫入它)對HW PCI進行採樣。使用process.start運行應用程序會返回與手動運行應用程序不同的值
當我從命令提示符運行它時,它會返回一個退出代碼(正確的),但是當我使用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文件所在的目錄,運行它,然後再切換回無論你以前的工作目錄。
沒有任何真實的細節,誰知道?什麼工具?你有源嗎?它有文檔嗎?它是否描述退出代碼?環境是否一樣?等等,等等。 – leppie 2012-07-22 11:15:41
*你打電話給'Process.Start'?* – Adam 2012-07-22 11:16:13
該工具是公司內部的。 – 2012-07-22 11:19:05