2012-09-19 28 views
12

Estoy usando System.Diagnostics.Process.Start desde una aplicación de escritorio para iniciar el navegador predeterminado para visitar un enlace, como se muestra a continuación. Esto está usando C# con .NET 4.0 en Windows 8 Pro RTM.Abrir una URL en el navegador predeterminado en una aplicación de escritorio de Windows 8

System.Diagnostics.Process.Start(new ProcessStartInfo 
{ 
    FileName = @"http://www.google.com", 
    UseShellExecute = true 
}); 

Esto funciona bien en Windows 7, pero en Windows 8 estoy consiguiendo una excepción que puede ser reproducido en LINQPad. Las excepciones son:

UseShellExecute = true da Win32Exception: Clase no registrada. UseShellExecute = false da Win32Exception: El sistema no puede encontrar el archivo especificado.

¿Cómo se puede abrir una URL en el navegador predeterminado?

+1

Answer esto: http://stackoverflow.com/a/12248929/2608 –

Respuesta

21

Para WinRT aplicaciones únicamente, es simplemente

Launcher.LaunchUriAsync(new Uri("http://www.google.com")); 

Tome una mirada here.

+0

¿Es posible acceder Windows.System.Launcher desde una aplicación .NET 4.0? –

+0

¿has visto el enlace? Hay un ejemplo en C#. – Cybermaxs

+1

Sí, pero eso se aplica al desarrollo de WinRT. Estoy usando .NET 4.0 aquí en una aplicación de escritorio estándar, no en una aplicación de Windows Store. –

5

Parece que debe especificar el nombre del proceso en Win8. La respuesta a continuación proviene de Armin's, respuesta here.

var startInfo = new ProcessStartInfo("explorer.exe", @"http://www.google.com"); 
Process.Start(startInfo); 
+0

no funciona en Windows 8. Sólo menos de Windows 7. –

+0

Funciona bien para mí en W8 +. –

+0

Cuando la url contiene caracteres especiales, como '=', entonces debe ser citada: 'Process.Start (" explorer.exe ", $" \ "{url} \" ";' – xmedeko

Cuestiones relacionadas