2009-05-01 7 views
7

Mit welchem ​​RegKey können Sie den Pfad der Standard-Browseranwendung abrufen?Windows RegKey - Standard-Browser-Anwendungspfad

Der beste Weg, um von C# /. NET zu bekommen?

+3

Sie sollten die Registrierung nicht überprüfen, um zu versuchen, den Standardwebbrowser zu starten. Was versuchst du zu machen? – Michael

+0

Ich wollte den Standardbrowser nicht starten. Ich hatte ein Programm, das verschiedene Entscheidungen treffen konnte, basierend auf dem, was jemand browsertechnisch bevorzugte. – BuddyJoe

Antwort

16

Hier ist der Schlüssel Sie möchten:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ http \ shell \ open \ command

Und hier ist eine schnelle registry tutorial for C#, wenn Sie es brauchen.

bearbeiten:

Für Einstellungen pro Benutzer, diese Taste benutzen:

HKEY_CLASSES_ROOT \ http \ shell \ open \ command

(HKCR hat sowohl Maschine und Benutzer Einstellungen, Benutzer hat Priorität).

Beachten Sie, dass dies unter Vista möglicherweise nicht funktioniert. Für weitere Informationen, see here.

+0

Aber ich nehme an, Sie meinen in HKEY_CURRENT_USER richtig? – BuddyJoe

+0

In HKCU gibt es keinen passenden Schlüssel. Siehe meine Bearbeitung für weitere Informationen. –

+0

genial. Vielen Dank. – BuddyJoe

1

für windows 7 Standard-Browser Pfad speichern in folgenden Registrierungsschlüssel

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ Associations\UrlAssociations\http 

von C# verwenden, können Sie es wie folgt -

RegistryKey regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", false); 

string browser = regkey.GetValue("Progid").ToString(); 
1

Basierend auf Ihren Antworten schrieb ich diesen Beispielcode, der sollte Mach was du willst (nicht getestet)

public static string GetDefaultBrowserPath() 
    { 
     string defaultBrowserPath = null; 
     RegistryKey regkey; 

     // Check if we are on Vista or Higher 
     OperatingSystem OS = Environment.OSVersion; 
     if ((OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6)) 
     { 
      regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", false); 
      if (regkey != null) 
      { 
       defaultBrowserPath = regkey.GetValue("Progid").ToString(); 
      } 
      else 
      { 
       regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Classes\\IE.HTTP\\shell\\open\\command", false); 
       defaultBrowserPath = regkey.GetValue("").ToString(); 
      } 
     } 
     else 
     { 
      regkey = Registry.ClassesRoot.OpenSubKey("http\\shell\\open\\command", false); 
      defaultBrowserPath = regkey.GetValue("").ToString(); 
     } 

     return defaultBrowserPath; 
    } 
+2

Auf Win7 scheint dieses "Progid" jedoch keine Verbindung zu enthalten. Es enthält eine Programm-ID, die in der Registrierung unter "HKCR/FetchedProgramId" gesucht wird (mit FetchedProgramId die zuvor abgerufene Programm-ID valut). Unter diesem Schlüssel befindet sich wiederum ein "\ shell \ open \ command", in dem Sie den tatsächlichen Pfad finden. – Nyerguds

+0

Dies schien nicht den Pfad unter Windows 10 zu geben. Es gab nur einen Wert von IE.HTTP zurück – Fractal

0

Ich habe gerade eine Funktion dafür gemacht:

public void launchBrowser(string url) 
    { 
     string browserName = "iexplore.exe"; 
     using (RegistryKey userChoiceKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice")) 
     { 
      if (userChoiceKey != null) 
      { 
       object progIdValue = userChoiceKey.GetValue("Progid"); 
       if (progIdValue != null) 
       { 
        if(progIdValue.ToString().ToLower().Contains("chrome")) 
         browserName = "chrome.exe"; 
        else if(progIdValue.ToString().ToLower().Contains("firefox")) 
         browserName = "firefox.exe"; 
        else if (progIdValue.ToString().ToLower().Contains("safari")) 
         browserName = "safari.exe"; 
        else if (progIdValue.ToString().ToLower().Contains("opera")) 
         browserName = "opera.exe"; 
       } 
      } 
     } 

     Process.Start(new ProcessStartInfo(browserName, url)); 
    } 
Verwandte Themen