关于Process.Start 导致启动失败的的一些使用注意事项


**最近半年里因为工作原因开发了很多控制台形式的服务应用 **

这些控制台应用用于处理各个模块的业务,这半年积累下来看着服务器任务栏一堆清一色窗口图标有点无语了 (控制台不只是我一个)。由于有些模块服务器上运行不是很稳定 时不时会有进程崩溃退出的情况 最后就出现要找是那个软件崩了 都要花上好一会,而且作为一名Bug大佬 也不能实时去盯着重启软件于是就写了个类似进程管理的进程守护软件 好应对以上的情况 用着感觉还可以了

同类需求的可以自取 软件地址 :http://www.yuantk.com/wizard.html (网上也有很多类似的软件 试了好几款但感觉不是很符合我的要求 首当其冲就是界面老掉牙 其次功能上也不是很满意 也有部分压根运行不起来 等等)

言归真传 开发软件过程中 Process.Start 用到了很多次 碰到过很多情况 无法启动对应的进程 以下是一些注意事项

1.如果启动单独一个exe文件是没有问题的,但是当这个程序有配置文件需或者启动时需要读取其他文件时启动失败,然而双击是可以正常打开的。 原因:需要配置程序的工作目录

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Application;
psi.Arguments = Arguments;
psi.UseShellExecute = false;
psi.CreateNoWindow = NoWindow;
psi.WorkingDirectory = System.IO.Path.GetDirectoryName(Application);//即使这里
var p = Process.Start(psi);

2.使用Process.Start 打开网页报错 例如:Process.Start("http://www.yuantk.com"); 看着没问题但是实际却出现了异常 据说是 UseShellExecute=false的问题 正确方式是:

System.Diagnostics.Process.Start(new ProcessStartInfo(url) { UseShellExecute = true });

3.当启动程序文件处于系统盘 或者有一定权限的目录时 也会出现启动后程序直接崩溃推出的情况 事件查看器可以看到 有关KERNELBASE.dll(背黑锅最多的dll) 啥的未处理异常

解决办法: 管理员启动程序 然后程序里再使用Process.Start 去启动进程

文章地址: 关于Process.Start 导致启动失败的的一些使用注意事项 | Yuan天空博客

相关内容