检测对Windows URL协议的调用何时失败

时间:2013-12-02 16:54:38

标签: c# .net process protocols

我有一个新注册的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?

1 个答案:

答案 0 :(得分:3)

您需要将UseShellExecute设置为true才能使用网址启动应用程序。当UseShellExecute为false FileName时,Process对象将仅直接运行EXE。 UseShellExecute的文档指出:

  

当UseShellExecute为false时,FileName属性必须是完全的   可执行文件的限定路径。