『QQ:1353814576』

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


最近半年里因为工作原因开发了很多控制台形式的服务应用 当然自己开发的会特意设置个图标来加以区分找程序相对没那么麻烦,有设置自然也有不设置的。。。放个图感受一下疾风吧

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

有同类软件进程守护工具需求的可以看看这款小工具

软件地址 : TK精灵-EXE、BAT脚本守护工具

(网上也有很多类似的软件 试了好几款但总感觉不是很符合我的要求 大多数界面老掉牙 其次功能上也不是很满意 也有部分压根运行不起来 等等)

言归真传

开发软件过程中 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 去启动进程