2012-09-19 10 views
12

Sto utilizzando System.Diagnostics.Process.Start da un'applicazione desktop per avviare il browser predefinito per visitare un collegamento, come di seguito. Questo sta usando C# con .NET 4.0 su Windows 8 Pro RTM.Apertura di un URL nel browser predefinito in un'applicazione desktop Windows 8

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

Questo funziona bene con Windows 7, ma sotto Windows 8 io sono sempre un'eccezione che può essere riprodotto in LINQPad. Le eccezioni sono:

UseShellExecute = true fornisce Win32Exception: Classe non registrata. UseShellExecute = false fornisce Win32Exception: il sistema non riesce a trovare il file specificato.

Come si può aprire un URL nel browser predefinito?

+1

Risponde questo: http://stackoverflow.com/a/12248929/2608 –

risposta

21

Per WinRT apps solo, è semplicemente

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

Date un'occhiata here.

+0

E 'possibile accedere Windows.System.Launcher da un'applicazione .NET 4.0? –

+0

hai visto il link? C'è un esempio in C#. – Cybermaxs

+1

Sì, ma questo vale per lo sviluppo di WinRT. Sto usando .NET 4.0 qui in un'applicazione desktop standard, non in un'applicazione Windows Store. –

5

Sembra che sia necessario specificare il nome del processo in Win8. La risposta di seguito viene fornita dalla Armin's risposta here.

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

non funziona in Windows 8. Solo in meno di Windows 7. –

+0

Funziona bene per me sotto W8 +. –

+0

Quando l'url contiene caratteri speciali, come '=', allora deve essere quotato: 'Process.Start (" explorer.exe ", $" \ "{url} \" ");' – xmedeko

Problemi correlati