2010-11-11 24 views
0

J'essaie d'ouvrir une URL dans le navigateur par défaut. Évidemment, je pensais que Shell Exec va l'ouvrir dans le navigateur par défaut, mais ce n'est pas le cas.DefaultBrowser from Registry ne fonctionne pas

Alors j'ai essayé explicite:

Process.Start(GetDefaultBrowserPath(), "http://stackoverflow.com"); 

private static string GetDefaultBrowserPath() 
{ 
    string key = @"htmlfile\shell\open\command"; 
    RegistryKey registryKey = 
    Registry.ClassesRoot.OpenSubKey(key, false); 
    // get default browser path 
    return ((string)registryKey.GetValue(null, null)).Split('"')[1]; 
} 

Il retourne toujours Internet Explorer, mais pas mon défaut qui est Firefox. Je l'ai essayé sur plusieurs ordinateurs ...

Je ne me soucie pas de quelle manière d'appeler le lien dans le navigateur par défaut, mais il doit être le par défaut

+0

Quand vous dites qu'il est votre défaut, êtes-vous sûr que si vous créez un nouveau .html déposer sur votre bureau et double-cliquez dessus, il ouvre en effet dans Firefox? – Jeff

+0

oui, j'ai juste essayé. nouveau fichier .html sur le bureau, double-cliquez et ouvrez dans Firefox. – Kai

+0

'Process.Start (" http://stackoverflow.com ");' fonctionne sur ma machine (ouvre Chrome). – dtb

Répondre

4

Avez-vous essayé juste en cours d'exécution:

Process.Start("http://stackoverflow.com"); 

mon application de test (ci-dessous) ouvre le site dans mon navigateur par défaut:

using System; 
using System.Diagnostics; 

namespace ProcessStartSample 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process.Start("http://stackoverflow.com"); 
     } 
    } 
} 

en d'autres termes, que le fonctionnement de ystem faire le gros travail de travailler sur ce que le navigateur par défaut des utilisateurs est pour vous! =)

0

Windows démarre le navigateur par défaut sur le système de l'utilisateur pour vous automatiquement si vous spécifiez simplement l'URL pour ouvrir:

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

Pas besoin supercherie de registre de fantaisie, à moins que vous essayez de déterminer Le navigateur est défini par défaut.

+0

J'ai déjà essayé ça. Idem - ouvre toujours IE – Kai

1

Essayez ça :)

Process.Start("http://stackoverflow.com"); 

Et si vous voulez trouver votre navigateur par défaut vous devez ouvrir la clé HKEY_CLASSES_ROOT\http\shell\open\command\default.

S'il vous plaît prêter attention "http" et non "htmlFile"

EDIT:

CODE:

RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command", false); 
string value = registryKey.GetValue("").ToString(); 
+0

RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey ("\ http \ shell \ open \ command \ par défaut", false); mais maintenant registryKey est null – Kai

+0

Veuillez vérifier l'édition pour le code. – Barun