.net - Process.Start(url) roto en Windows 8/Chrome-¿hay alternativas?
google-chrome windows-8 (5)
Para abrir una URL desde una aplicación .NET, muchos sitios ( incluido en StackOverflow ) citan este ejemplo:
Process.Start("http://www.google.com/");
En Windows 8, esto funciona si Internet Explorer es el navegador predeterminado. Sin embargo, si Google Chrome es el predeterminado, falla con:
Unhandled Exception: System.ComponentModel.Win32Exception: Class not registered
¿Esto sugiere que este método ya no es la forma correcta de abrir URL en Windows? ¿Qué alternativas existen? ¿Es más seguro simplemente lanzar Internet Explorer directamente?
He probado muchas soluciones pero, como estoy en un proyecto de IU (wpf o winform), terminé usando un control de navegador integrado. Al llamar a navegar, al establecer la URL y luego al destino "_blank" se inicia una ventana del navegador externo.
_webBrowser.Navigate(uri, "_blank");
Espero que esto ayude. corriente continua
La única solución robusta que he encontrado para este problema se describe aquí: http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default-browser-in-csharp
Básicamente, debe buscar en el registro de Windows para encontrar el navegador predeterminado seleccionado e iniciarlo directamente como proceso con la URL como argumento.
La respuesta de Armin es la que terminé usando y funcionó bien.
Solo quiero agregar que solo obtengo la excepción ''Clase no registrada'' cuando comienzo el proceso desde un programa que se ejecuta con permisos elevados. Esto parece ser un nuevo comportamiento con Windows 8.
Puede intentar especificar el nombre de archivo de proceso "explorer.exe" explícitamente, como se sugiere en el siguiente hilo:
var startInfo = new ProcessStartInfo("explorer.exe", url);
Process.Start(startInfo);
Usa el objeto Launcher para abrir URLs.
Ejemplo:
await Launcher.LaunchUriAsync(new Uri("www.google.com"));