2009-06-09 4 views
11

Comment vérifier si Adobe reader ou acrobat est installé dans le système? aussi comment obtenir la version? (Dans le code C#)Cochez Adobe Reader est-il installé (C#)?

+5

Si ce que vous voulez réellement faire est de vérifier si une visionneuse PDF est installée sur le système, NE vérifiez PAS Adobe Reader. Moi et certains de mes collègues utilisent Foxit Reader, qui est bien meilleur qu'Adobe Reader. – OregonGhost

Répondre

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 est soit en train de le mettre ailleurs ou mon ordinateur Windows8 l'a différemment, modifié le code ci-dessus pour essayer de trouver Adobe dans 'Software.Policies' –

+0

travaillé très bien sur moi sous IE, Chrome et FF. –

+0

Y at-il un moyen de vérifier le code C# si le lecteur Adobe installé est à jour, ou si une nouvelle mise à jour est disponible? –

6

S'il vous plaît envisager aussi des gens utilisent des systèmes d'exploitation 64 bits et potentiellement en cours d'exécution, soit 32 bits ou 64 bits de versions d'Adobe Reader.

Le code suivant est une version modifiée de la solution publiée par Abmv, mais elle vérifie si les versions 64 bits d'Adobe Reader sont installées en premier avant de rechercher les versions 32 bits.

Espérons que cela a du sens! :-)

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

travaillé très bien sur moi sur IE, Chrome et FF. –

+0

Y at-il un moyen de vérifier le code C# si le lecteur Adobe installé est à jour, ou si une nouvelle mise à jour est disponible? –

6

La seule solution qui fonctionne pour moi est:

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

Puis-je vérifier si adobePath != null puis lecteur Adobe est installé.

De cette façon, j'obtiendrai également le chemin vers l'exécutable Acrobat Reader.

Questions connexes