Process.Start(url) broken on Windows 8/Chrome - are there alternatives?

假装没事ソ 提交于 2019-11-27 02:33:57

问题


To open a URL from a .NET application, many sites (including on StackOverflow) cite this example:

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

On Windows 8, this works if Internet Explorer is the default browser. However if Google Chrome is the default, it fails with:

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

Does this suggest that this method is no longer the right way to open URL's on Windows? What alternatives exist? Is it safer to just launch Internet Explorer directly?


回答1:


You may try to specify the Process filename "explorer.exe" explicitly, like suggested in the following thread:

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);



回答2:


Armin's answer is the one I ended up using and it's worked well.

I just want to add that I only get the 'Class Not Registered' exception when I'm starting the process from a program that is running with elevated permissions. This appears to be new behavior with Windows 8.




回答3:


I've tried many a solution but as i'm in a UI project (wpf or winform) I ended up using an embedded browser control. Calling navigate, setting the url then target to "_blank" launches an external browser window.

_webBrowser.Navigate(uri, "_blank");

Hope this helps. DC




回答4:


Use the Launcher object to open URLs.

Example:

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



回答5:


The only robust solution I've found to this problem is described here: http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default-browser-in-csharp

Basically, you need to look through the Windows registry to find what the selected default browser is, and launch that directly as the process with the URL as the argument.



来源:https://stackoverflow.com/questions/12206368/process-starturl-broken-on-windows-8-chrome-are-there-alternatives

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!