的Process.Start(URL)在Windows 8 /铬破 - 有没有办法?(Process

2019-06-27 14:29发布

为了从.NET应用程序打开一个URL,许多网站( 包括在计算器上 )举这个例子:

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

在Windows 8,这个工作如果Internet Explorer是默认的浏览器。 但是,如果谷歌浏览器是默认的,它失败:

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

这是否表明,这种方法不再是打开的URL在Windows上的正确方法? 什么选择存在吗? 它是更安全,只是直接启动Internet Explorer?

Answer 1:

您可以尝试到指定进程文件名“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);


Answer 2:

阿明的回答就是我结束了使用,它的运作良好。

我只想补充一点,我只得到了“类未注册”的例外,当我开始从与提升的权限运行一个程序的过程。 这似乎是与Windows 8的新特性。



Answer 3:

我试过很多的解决方案,但正如我在UI项目(WPF或WinForm的)是我结束了使用嵌入式浏览器的控制。 呼叫导航,设置URL,然后定位到“_blank”启动外部浏览器窗口。

_webBrowser.Navigate(uri, "_blank");

希望这可以帮助。 DC



Answer 4:

使用启动对象打开的URL。

例:

await Launcher.LaunchUriAsync(new Uri("www.google.com"));


Answer 5:

唯一可靠的解决方案,我发现这个问题说明如下: http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default -browser功能于CSHARP

基本上,你需要寻找通过Windows注册表中找到所选择的默认浏览器是什么,以及直接启动与URL作为参数的过程。



文章来源: Process.Start(url) broken on Windows 8/Chrome - are there alternatives?