2016-11-25 142 views
0

我有2 exe,A.exe和B.exe。 A.exe被添加到註冊表的運行鍵,以便它啓動與Windows啓動。 A的內幕主力,有這樣的代碼:當啓動process.Start()啓動時程序崩潰

Process pr = new Process(); 
pr.StartInfo.FileName = "B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start(); 

A和B是在同一目錄下。如果我通過雙擊手動啓動A,它工作正常,B啓動正常。但是,當我試圖重新啓動窗口來檢查它是否可以在Windows啓動時正常工作時,每當A.exe崩潰,因此B.exe從未啓動。我認爲這是A中的一些其他問題,也許系統加載一些依賴性很慢,但是沒有,當我刪除上面的代碼部分時,一切正常工作在Windows啓動,一個不崩潰,但B不啓動。那麼可能是什麼問題或如何解決這個問題?

編輯:

使用嘗試捕捉,這來了,我不知道爲什麼這雖然想出了:

System.ComponentModel.Win32Exception:系統無法找到 指定的文件 System.Diagonstics.Process.StartWithShellExecuteEx(ProcessSt artInfo startInfo)at System.Diagonostics.Process.Start()at System.Diagonostics.Process.Start(ProcessStartInfo startInfo)at System.Diagnostics.Process.Start(String fileName,字符串參數)在 ....

我什至嘗試完整的文件路徑仍然相同的錯誤。但是,手動啓動它不會導致錯誤,並且工作得很好。只是這個窗口啓動正在搞亂它。

回答

0

嘗試一個

Process pr = new Process(); 
pr.StartInfo.FileName = Application.StartupPath+"/B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start(); 
+0

試過也沒有運氣。 –

0

我相信你可能正在運行到一個安全錯誤。進程需要某些權限才能工作。見安全部分在這裏指出:

Process Class

想出一個辦法來記錄問題,看看這是你碰到的問題。

+0

使用了一個try catch,並且出現了,我不知道爲什麼會出現這個問題:System.ComponentModel.Win32Exception:系統找不到在System.Diagonostics的System.Diagonstics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)中指定的文件.Process.Start()在System.Diagnostics.Process.Start(ProcessStartInfo startInfo)在System.Diagnostics.Process.Start(字符串文件名,字符串參數)在.... –

+0

我甚至嘗試完整的文件路徑仍然相同的錯誤。但是,手動啓動它不會導致錯誤,並且工作得很好。 –

+0

這基本上意味着可執行文件的路徑是錯誤的。我知道你提到你嘗試了完整的道路。你的路徑是否包含空格? – JuanR

0

嘗試指定WorkingDirectory:

Process pr = new Process(); 
pr.StartInfo.WorkingDirectory = @"C:\path\to"; 
pr.StartInfo.FileName = "B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start();