我有一个新注册的URL协议,我的应用程序处理。我们称之为notify://
。套件中还有其他应用程序具有Process.Start("notify://2125551234/");
之类的调用。可能是未安装处理这些调用的实际应用程序。在这种情况下,我希望检测到该失败,以便我可以改为使用callto://
协议。
我开始时:
Process proc = new Process();
proc.StartInfo.FileName = "notify://2125551234/";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
proc.WaitForExit();
MessageBox.Show(proc.ExitCode.ToString());
但这会变得奇怪Win32Exception The system cannot find the file specified.
无论协议处理程序是否安装,我都会收到此错误。如何启动此过程以便最终处理ExitCode? p>
答案 0 :(得分:3)
您需要将UseShellExecute
设置为true
才能使用网址启动应用程序。当UseShellExecute
为false FileName
时,Process对象将仅直接运行EXE。 UseShellExecute
的文档指出:
当UseShellExecute为false时,FileName属性必须是完全的 可执行文件的限定路径。