启动进程时程序崩溃。启动Windows时启动()

时间:2016-11-25 18:05:43

标签: c# startup process.start

我有2个exe,A.exe和B.exe。 A.exe被添加到注册表的运行键,以便它启动Windows启动。 在A的主要内部,有这样的代码:

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

A和B都在同一目录中。如果我通过双击手动启动A,它工作正常,B启动正常。但是,当我试图重新启动Windows以检查它是否在Windows启动时工作正常,每次A.exe崩溃,因此B.exe从未启动。我认为这是A中的一些其他问题,也许系统加载一些依赖关系很慢但是没有,当我删除上面的部分代码时,一切正常,在Windows启动时,A不会崩溃,但B不会启动。那么问题或如何解决这个问题呢?

编辑:
使用了试试,这就出现了,我不知道为什么会出现这种情况:

  

System.ComponentModel.Win32Exception:系统找不到该文件   指定于   System.Diagonstics.Process.StartWithShellExecuteEx(ProcessSt ARTINFO   startInfo)在System.Diagonostics.Process.Start()at   System.Diagonostics.Process.Start(ProcessStartInfo startInfo)at   System.Diagnostics.Process.Start(String fileName,String arguments)at   ....

我甚至尝试使用完整文件路径仍然是同样的错误。但是,手动启动它不会导致错误,并且工作完全正常。只是这个窗口启动就搞乱了。

3 个答案:

答案 0 :(得分:0)

尝试一下

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

答案 1 :(得分:0)

我相信您可能遇到安全错误。进程需要某些权限才能工作。请参阅此处的安全性部分说明:

Process Class

找出一种记录问题的方法,看看这是否是您遇到的问题。

答案 2 :(得分:0)

尝试指定WorkingDirectory:

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