在Windows 8/Chrome上打破了Process.Start(url) - 还有其他选择吗?

Pau*_*ell 23 .net google-chrome process process.start windows-8

要从.NET应用程序打开URL,许多站点(包括StackOverflow)都引用了这个示例:

Process.Start("http://www.google.com/");
Run Code Online (Sandbox Code Playgroud)

在Windows 8上,如果Internet Explorer是默认浏览器,则此方法有效.但是,如果Google Chrome是默认设置,则会失败并显示:

Unhandled Exception: System.ComponentModel.Win32Exception: Class not registered
Run Code Online (Sandbox Code Playgroud)

这是否表明此方法不再是在Windows上打开URL的正确方法?有哪些替代品?直接启动Internet Explorer更安全吗?

Arm*_*min 26

您可以尝试显式指定进程文件名"explorer.exe",如以下线程中所示:

http://social.msdn.microsoft.com/Forums/nl-BE/toolsforwinapps/thread/e051a102-469e-4ede-882c-c2c89377652a

var startInfo = new ProcessStartInfo("explorer.exe", url);
Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)

  • 当url包含特殊字符时,如`=`,则需要引用:`Process.Start("explorer.exe", $"\"{url}\"");` (4认同)
  • 不幸的是,这不适用于被截断的长URL. (2认同)

小智 1

使用Launcher对象打开 URL。

例子:

await Launcher.LaunchUriAsync(new Uri("www.google.com"));
Run Code Online (Sandbox Code Playgroud)