2009-06-09 32 views
11

¿Cómo puedo verificar si Adobe Reader o Acrobat está instalado en el sistema? también cómo obtener la versión? (En código C#)Comprobar que Adobe Reader está instalado (C#)?

+5

Si lo que realmente desea hacer es comprobar si un visor de PDF está instalado en el sistema, NO consulte Adobe Reader. Yo y algunos de mis compañeros de trabajo estamos usando Foxit Reader, que es mucho mejor que Adobe Reader. – OregonGhost

Respuesta

21
using System; 
using Microsoft.Win32; 

namespace MyApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      RegistryKey adobe = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe"); 
      if(null == adobe) 
      { 
       var policies = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Policies"); 
       if (null == policies) 
        return; 
       adobe = policies.OpenSubKey("Adobe"); 
      } 
      if (adobe != null) 
      { 
       RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader"); 
       if (acroRead != null) 
       { 
        string[] acroReadVersions = acroRead.GetSubKeyNames(); 
        Console.WriteLine("The following version(s) of Acrobat Reader are installed: "); 
        foreach (string versionNumber in acroReadVersions) 
        { 
         Console.WriteLine(versionNumber); 
        } 
       } 
      } 
     } 
    } 
} 
+2

Adobe lo está colocando en otro lugar o mi máquina Windows8 lo tiene de manera diferente, modificó el código anterior para intentar encontrar Adobe en 'Software.Policies' –

+0

me funcionó muy bien en IE, Chrome y FF. –

+0

¿Hay alguna manera de verificar el código de C# si el lector de adobe instalado está actualizado o si hay una nueva actualización disponible? –

6

Por favor, también tienen en cuenta las personas que ejecutan sistemas operativos de 64 bits y potencialmente ejecutar ya sea de 32 o de 64 bits versiones de Adobe Reader.

El siguiente código es una versión modificada de la solución publicada de Abmv, pero esto verificará si las versiones de 64 bits de Adobe Reader se instalan primero antes de buscar versiones de 32 bits.

Espero que esto tenga sentido! :-)

using System; 
using Microsoft.Win32; 

namespace MyApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      RegistryKey software = Registry.LocalMachine.OpenSubKey("Software"); 

      if (software != null) 
      { 
       RegistryKey adobe; 

       // Try to get 64bit versions of adobe 
       if (Environment.Is64BitOperatingSystem) 
       { 
        RegistryKey software64 = software.OpenSubKey("Wow6432Node"); 

        if (software64 != null) 
         adobe = software64.OpenSubKey("Adobe"); 
       } 

       // If a 64bit version is not installed, try to get a 32bit version 
       if (adobe == null) 
        adobe = software.OpenSubKey("Adobe"); 

       // If no 64bit or 32bit version can be found, chances are adobe reader is not installed. 
       if (adobe != null) 
       { 
        RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader"); 

        if (acroRead != null) 
        { 
         string[] acroReadVersions = acroRead.GetSubKeyNames(); 
         Console.WriteLine("The following version(s) of Acrobat Reader are installed: "); 

         foreach (string versionNumber in acroReadVersions) 
         { 
          Console.WriteLine(versionNumber); 
         } 
        } 
        else 
         Console.WriteLine("Adobe reader is not installed!"); 
       } 
       else 
        Console.WriteLine("Adobe reader is not installed!"); 
      } 
     } 
    } 
} 
+0

funcionó muy bien en IE, Chrome y FF. –

+0

¿Hay alguna manera de verificar el código de C# si el lector de adobe instalado está actualizado o si hay una nueva actualización disponible? –

6

La única solución que funciona para mí es:

var adobePath = Registry.GetValue(
@"HKEY_CLASSES_ROOT\Software\Adobe\Acrobat\Exe", string.Empty, string.Empty); 

Entonces comprobar si se ha instalado adobePath != null continuación lector de Adobe.

De esta manera, también obtendré la ruta al ejecutable de Acrobat Reader.

Cuestiones relacionadas