2011-09-27 11 views
10

Estoy construyendo una aplicación y es simple, todo lo que quiero es mostrar información del OS en inglés simple y la arquitectura, así como verificar si hay navegadores instalados y luego Añadiremos la posibilidad de que elimine las cookies y lo que no.Cómo verificar navegadores instalados usando C# para principiantes

Lo que tengo pegado es la parte de detección del navegador. ¿Alguien puede indicarme algunos tutoriales decentes o cómo? Gracias.

Editar: OK logré finalmente arañar algún código de trabajo utilizando el fragmento proporcionada por HCB a continuación y los comentarios de los otros (gracias a todos). Hasta el momento se está haciendo exactamente lo que quiero así que pensé cuota de Identificación lo que tengo para los que tratan de hacer lo mismo:

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

Para mi extrema molestia, me di cuenta de que Google desea instalar el navegador en el local Datos de aplicación. Me las arreglé para resolver esto de escribir el código de nuevo por separado y comprobación:

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

Edit2: Comprobación CurrentUser para Chrome parece funcionar muy bien por algunos amigos por lo que debe estar bien.

+2

posible duplicado de [¿Cómo encontrar todos los navegadores instalados en una máquina] (http://stackoverflow.com/questions/2370732/how-to-find-all-the -browsers-installed-on-a-machine) –

+0

La respuesta a la pregunta duplicada es un enlace a aquí: http://rhizohm.net/irhetoric/post/2009/04/03/0a-Finding-All-Installed- Navegadores-en-Windows-XP-y-Vista-ndash3b-cuidado-64bit! 0a-.aspx No creo que sea más simple que esto. –

+0

Lo he leído, pero no entiendo para qué sirve su clase 'Navegador'. ¿Qué contendría su clase de navegador? ¿Y es necesario que también creé uno? – BrandNewDev

Respuesta

12

De esta manera:

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

¿Cuál es la diferencia entre verificar esa ubicación y verificar HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall? Aparte de lo obvio. – BrandNewDev

+3

Eso enumeraría todos los programas instalados (que podrían ser desinstalados) no solo los navegadores. Por lo tanto, necesitaría una lista de navegadores "aceptados" con los que coincidir, con la posibilidad de que falle alguno que el usuario haya instalado. –

+0

OK, entonces StartMenuInternet es estrictamente navegadores? Ya veo. Así que browserKeys.GetSubKeyNames() toma los nombres y los almacena en una matriz de cadenas. ¿Acabo de iterar a través de la matriz buscando "firefox" o algo así? La única razón por la que pregunto es porque me tomará un tiempo perfeccionar el código para hacer eso, soy un novato completo, así que será prueba y error hasta que lo obtenga, je. Gracias. – BrandNewDev

Cuestiones relacionadas