2011-09-27 9 views
10

Sto costruendo un'app ed è semplice, tutto quello che voglio che faccia è visualizzare le informazioni di sistema in inglese e l'architettura così come controllare i browser installati e poi I aggiungerò la possibilità di cancellare i cookie e cosa no.Come controllare i browser installati usando C# per i principianti

Ciò che è bloccato è la parte di rilevamento del browser. Qualcuno può indicarmi qualche tutorial decente o come? Grazie.

Edit: OK sono riuscito a graffiare finalmente fuori un po 'di codice di lavoro utilizzando il frammento fornito da HCB qui sotto e commenti dagli altri (grazie a tutti). Finora sta facendo esattamente quello che voglio così ho pensato quota id quello che ho per coloro che cercano di fare la stessa cosa:

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; 
         } 
        } 

Con mio estremo fastidio, ho notato che Google vuole installare il proprio browser in locale Dati dell'app. Sono riuscito a lavorare questo fuori scrivere il codice di nuovo separatamente e verifica:

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

Edit2: Controllo CurrentUser per Chrome sembra funzionare bene per un paio di amici, quindi deve essere OK.

+2

possibile duplicato di [Come trovare tutti i browser installati su una macchina] (http://stackoverflow.com/questions/2370732/how-to-find-all-the -browsers-installed-on-a-machine) –

+0

La risposta alla domanda duplicata è un collegamento a questo: http://rhizohm.net/irhetoric/post/2009/04/03/0a-Finding-All-Installed- Browser-in-Windows-XP-e-Vista-ndash3b-beware-64bit! 0a-.aspx Non credo che diventerai più semplice di così. –

+0

L'ho letto ma non capisco a cosa serva la sua classe 'Browser'. Cosa contiene la sua classe del browser? Ed è necessario che ne crei anche uno? – BrandNewDev

risposta

12

Ti piace questa:

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

Qual è la differenza tra il controllo di quella posizione e il controllo di HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall? A parte l'ovvio. – BrandNewDev

+3

Questo dovrebbe elencare tutti i programmi installati (che potrebbero essere disinstallati) non solo i browser. Quindi avresti bisogno di un elenco di browser "accettati" con cui confrontarti, con la possibilità di perdere quelli che l'utente potrebbe aver installato. –

+0

OK quindi StartMenuInternet è strettamente browser? Io vedo. Quindi browserKeys.GetSubKeyNames() prende i nomi e li memorizza in un array di stringhe faccio semplicemente scorrere l'array alla ricerca di "firefox" o qualcosa del genere? L'unica ragione per cui lo chiedo è perché mi ci vorrà un po 'per perfezionare il codice per farlo, sono un novizio completo quindi sarà una prova e un errore fino a che non lo capirò. Grazie. – BrandNewDev

Problemi correlati