2011-09-27 13 views
10

Buduję aplikację i jest to prosta, wszystko, co chcę to zrobić, to wyświetlić informacje o os w języku angielskim i architekturze, a także sprawdzić zainstalowane przeglądarki, a następnie I Dodam możliwość usuwania plików cookie, a co nie.Jak sprawdzić dla zainstalowanych przeglądarek za pomocą C# dla początkujących

Na którym utknąłem, jest część wykrywania przeglądarki. Czy ktoś może wskazać mi jakieś przyzwoite samouczki lub jak to zrobić? Dzięki.

Edit: OK udało mi się wreszcie skreślać część kodu jest wykonywana przy użyciu fragment dostarczony przez HCB poniżej i komentarze od innych (dzięki każdy). Do tej pory robi dokładnie to, co chcę, więc pomyślałem udział id, co mam dla tych, którzy próbują zrobić to samo:

RegistryKey browserKeys; 

     browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet"); 

     if (browserKeys == null) 
     { 
      browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet"); 
     } 

     string[] browserNames = browserKeys.GetSubKeyNames(); 

     foreach (string browser in browserNames) 
     { 
      using (RegistryKey tempKey = browserKeys.OpenSubKey(browser)) 
      { 
       foreach (string keyName in tempKey.GetValueNames()) 
       { 
        if (tempKey.GetValue(keyName).ToString() == "Internet Explorer") 
        { 
         internetExplorerButton.Enabled = true; 
         internetExplorerButton.BackgroundImage = Properties.Resources.iExplorer; 

         if (internetExplorerButton.Enabled == true) 
         { 
          Label ieLabel = new Label(); 
          ieLabel.Text = "Found!"; 
          explorerLable.Text = ieLabel.Text; 
         } 
        } 

Do mojej skrajnej irytacji, zauważyłem, że Google chce zainstalować przeglądarkę w lokalnej Dane aplikacji. Udało mi się wypracować to pisanie kodu ponownie oddzielnie i sprawdzenie:

Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Google\Update\Clients"); 

Edit2: Sprawdzanie CurrentUser dla Chrome wydaje się działać dobrze dla kilku przyjaciół, więc musi być OK.

+2

możliwe duplikat [Jak znaleźć wszystkich przeglądarek zainstalowanych na komputerze] (http://stackoverflow.com/questions/2370732/how-to-find-all-the -browsers-installed-on-a-machine) –

+0

Odpowiedź na zduplikowane pytanie to link do: http://rhizohm.net/irhetoric/post/2009/04/03/0a-Finding-All-Installed- Przeglądarki-w-Windows-XP-i-Vista-ndash3b-beware-64bit! 0a-.aspx Nie sądzę, że staniesz się prostszy. –

+0

Przeczytałem to, ale nie rozumiem, do czego służy jego klasa "Przeglądarka". Co zawierałaby jego klasa przeglądarki? I czy to konieczne, że ja też go tworzę? – BrandNewDev

Odpowiedz

12

Jak to:

RegistryKey browserKeys; 
//on 64bit the browsers are in a different location 
browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet"); 
if (browserKeys == null) 
    browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet"); 

string[] browserNames = browserKeys.GetSubKeyNames(); 
+1

Jaka jest różnica między sprawdzaniem tej lokalizacji a sprawdzaniem HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall? Oprócz oczywistych. – BrandNewDev

+3

To spowoduje wyświetlenie wszystkich zainstalowanych programów (które można odinstalować), nie tylko przeglądarek. Dlatego musisz mieć listę "zaakceptowanych" przeglądarek, z którymi możesz się spotkać, z możliwością pominięcia, które użytkownik mógł zainstalować. –

+0

OK, więc StartMenuInternet to ściśle przeglądarki? Widzę. Tak więc browserKeys.GetSubKeyNames() pobiera nazwy i zapisuje je w tablicy łańcuchowej czy po prostu przeglądam tablicę szukając "firefox" czy coś w tym stylu? Jedynym powodem, dla którego pytam, jest to, że zajmie mi trochę czasu, aby udoskonalić kod, aby to zrobić, jestem kompletnym nowicjuszem, więc będzie to próba i błąd, dopóki go nie zrozumiem. Dzięki. – BrandNewDev

Powiązane problemy