2014-09-17 1 views
0

J'ai une application personnalisée qui doit vérifier si Visual C++ 2012 Redistributable est installé sur ma machine.Visual C++ Redistributable vérification n'est pas détectée correctement

Je googlé, et je trouve que le chemin d'accès physique dans le Registre Windows (que vous pouvez rechercher à l'aide Regedit) sont les suivantes:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86 

et

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86 

Vous pouvez voir ces liens au this Stack answer.

Mais pour certaines raisons, mon application ne le trouve pas parfois. Dans ce cas, j'utilise deux comptes Admin différents pour les installer, mais je pense que cela ne fait aucune différence. J'ai également trouvé these d'autres emplacements à regarder. Mais je ne les utilise pas. Voici mon code:

.... 
bool vc2012Installed = CheckVisualRedistributable(vc2012RedistRoutes); 
.... 

private bool CheckVisualRedistributable(string[] redistCheck) 
{ 
    try 
    { 
     int installed = -1; 
     foreach (string route in redistCheck) 
     { 
      RegistryKey vcRedistKey = Registry.LocalMachine.OpenSubKey(route); 
      if (vcRedistKey == null) { continue; } 

      installed = (int)vcRedistKey.GetValue("Installed"); 
      if (installed == 1) break; 
     } 
     if (installed == -1) return false; 

     return true; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("CheckVisualRedistributable: " + ex.Message); 
     return false; 
    } 
} 

Mais je ne sais pas pourquoi, dans certains cas, le C++ Redistributable 2012 n'est pas détecté ...

Toute idée sur ce qui pourrait se tromper? Peut-être un problème de compte d'utilisateur?

REMARQUE: des problèmes apparaissent sur Windows 8.1. Fonctionne très bien sur Windows 7.

+0

Avez-vous vérifié que la clé appropriée est là dans le e registre sur les machines où l'application ne trouve pas? –

+0

Oui, c'est. En fait, si vous essayez de réinstaller le Visual C++ à nouveau, il est dit "Réparer, désinstaller", donc c'est présent! – Sonhja

+0

Ce que j'essaie d'obtenir, c'est que votre registre vérifie de façon fiable s'il est installé ou est-il possible que votre vérification échoue parce que les clés que vous vérifiez ne sont pas configurées comme vous le souhaitez? –

Répondre

0

Je voudrais vérifier la valeur Installed de

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID} clé

  • où GUID de VC++ 2012 (x86) est {33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
  • WOW6432Node seront présents ou non en fonction du produit VC++ redist
Questions connexes