2009-05-01 15 views
7

varsayılan tarayıcı uygulamanın yolunu alabileceğiniz Ne RegKey?, Windows RegKey - Varsayılan Tarayıcı Uygulama Yolu

iyi yolu C# /. NET gelen onu almak için?

+3

Sen varsayılan web tarayıcısını başlatmak için denemek için kayıt araştırması değil. Ne yapmaya çalışıyorsun? – Michael

+0

Varsayılan tarayıcıyı başlatmak istemedim. Birisinin tercih ettiği tarayıcı bilge- sine göre farklı seçimler yapabilecek bir programım vardı. – BuddyJoe

cevap

16

Burada istediğiniz ipucu şöyledir: İhtiyacınız olduğunda

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ http \ shell \ open komutu \

Ve burada, kisa registry tutorial for C# bu.

Düzenleme:

kullanıcı başına ayarları için, kullanmak bu anahtar:

HKEY_CLASSES_ROOT \ http \ shell \ open komutu \

(HKCR makinesi ve kullanıcıyı hem sahiptir ayarları, kullanıcı önceliği alır). Bu Vista üzerinde işe yaramayabilir

Not. Daha fazla bilgi için, see here. aşağıdaki gibi C# kullanarak anahtar kayıt

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

aşağıdaki kaydetme Windows 7 varsayılan tarayıcı yolu için

+0

10 Ancak, HKEY_CURRENT_USER içinde doğru mu demek istediniz? – BuddyJoe

+0

HKCU'da eşleşen anahtar yok. Daha fazla bilgi için düzenlememe bakın. –

+0

harika. Teşekkürler. – BuddyJoe

1

bunu alabilirsiniz -

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

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

Yanıtlarınıza göre bunu gerektiği Bu örnek kodu yazdım Ne isterseniz yapın (test edilmedi)

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

Win7'de, bu "Progid" bağlantı içermiyor gibi görünüyor. Kayıt defterinde "HKCR/FetchedProgramId" (FetchedProgramId program kimliği valut daha önce getirilmiş) ile aranacak bir program kimliği içerir. Bu anahtarın altında, yine, gerçek yolu bulduğunuz bir "\ shell \ open \ command" olur. – Nyerguds

+0

Bu, Windows 10 yolunu vermek için görünmüyordu. Sadece IE.HTTP değerini döndürdü – Fractal

0

Bunun için bir işlev yapıyorum:

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)); 
    } 
İlgili konular