23

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

Process.Start("http://www.google.com/");

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

Unhandled Exception: System.ComponentModel.Win32Exception: Class not registered

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

4

4 回答 4

27

您可以尝试明确指定进程文件名“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);
于 2012-09-03T13:34:07.313 回答
1

使用Launcher对象打开 URL。

例子:

await Launcher.LaunchUriAsync(new Uri("www.google.com"));
于 2012-08-31T00:34:02.713 回答
1

我尝试了很多解决方案,但由于我在 UI 项目(wpf 或 winform)中,我最终使用了嵌入式浏览器控件。调用导航,将 url 然后目标设置为“_blank”会启动一个外部浏览器窗口。

_webBrowser.Navigate(uri, "_blank");

希望这可以帮助。直流

于 2013-03-01T17:17:42.913 回答
0

我发现这个问题的唯一可靠的解决方案在这里描述:https ://web.archive.org/web/20160304114550/http://www.seirer.net/blog/2014/6/10/solved-how -to-open-a-url-in-the-default-browser-in-csharp

基本上,您需要查看 Windows 注册表以查找所选的默认浏览器是什么,然后将其作为进程直接启动,并以 URL 作为参数。

于 2018-08-13T21:59:07.230 回答