我有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 ....
我甚至尝试使用完整文件路径仍然是同样的错误。但是,手动启动它不会导致错误,并且工作完全正常。只是这个窗口启动就搞乱了。
答案 0 :(得分:0)
尝试一下
Process pr = new Process();
pr.StartInfo.FileName = Application.StartupPath+"/B.exe";
pr.StartInfo.Arguments = SomeArgs;
pr.Start();
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试指定WorkingDirectory:
Process pr = new Process();
pr.StartInfo.WorkingDirectory = @"C:\path\to";
pr.StartInfo.FileName = "B.exe";
pr.StartInfo.Arguments = SomeArgs;
pr.Start();