Frage Process.Start (URL) unter Windows 8 / Chrome - gibt es Alternativen?


Um eine URL aus einer .NET-Anwendung zu öffnen, werden viele Websites (einschließlich auf StackOverflow) Zitiere dieses Beispiel:

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

Unter Windows 8 funktioniert dies, wenn Internet Explorer der Standardbrowser ist. Wenn Google Chrome jedoch der Standard ist, schlägt es fehl mit:

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

Bedeutet dies, dass diese Methode nicht mehr der richtige Weg ist, URLs unter Windows zu öffnen? Welche Alternativen gibt es? Ist es sicherer, Internet Explorer direkt zu starten?


22
2017-08-30 22:17


Ursprung


Antworten:


Sie können versuchen, den Prozess filename "explorer.exe" explizit anzugeben, wie im folgenden Thread vorgeschlagen:

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

23
2017-09-03 13:34



Armins Antwort ist die, die ich am Ende benutzt habe und es hat gut funktioniert.

Ich möchte nur hinzufügen, dass ich nur die Ausnahme "Class Not Registered" bekomme, wenn ich den Prozess von einem Programm starte, das mit erhöhten Berechtigungen ausgeführt wird. Dies scheint ein neues Verhalten bei Windows 8 zu sein.


1
2017-10-10 19:25



Ich habe viele Lösungen ausprobiert, aber da ich in einem UI-Projekt (WPF oder WinForm) bin, habe ich ein eingebettetes Browser-Steuerelement verwendet. Wenn Sie navigieren, wird durch Setzen der URL und dann auf "_blank" ein externes Browserfenster gestartet.

_webBrowser.Navigate(uri, "_blank");

Hoffe das hilft. DC


1
2018-03-01 17:17



Benutze die Startprogramm Objekt zum Öffnen von URLs.

Beispiel:

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

0
2017-08-31 00:34



Die einzige robuste Lösung, die ich für dieses Problem gefunden habe, ist hier beschrieben: http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default-browser-in-csharp

Im Grunde müssen Sie in der Windows-Registrierung nach dem ausgewählten Standardbrowser suchen und diesen direkt als Prozess mit der URL als Argument starten.


0
2017-08-13 21:59