To open a URL from a .NET application, many sites (including on StackOverflow) cite this example:
Process.Start(\"http://www.google.com/\");
<
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);
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
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.
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.
Use the Launcher object to open URLs.
Example:
await Launcher.LaunchUriAsync(new Uri("www.google.com"));