2010-07-27 7 views
0

bien avec de l'aide de ce site et rêver dans le code j'ai corrigé mon erreur, mais suis maintenant le code ne semble pas fonctionner. Voici le code:quel est le problème avec ce code pour lire la valeur de registre spécifique dans une sous-clé puis faire une déclaration si elle existe/si pas

using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\")) 
if (Key != null) 
{ 
    string val = (string)Key.GetValue("COMODO Internet Security"); 
    if (val == null) 
    { 
     MessageBox.Show("value not found"); 
    } 
    else 
    { 
     // use the value 
    } 
} 
else 
{ 
    MessageBox.Show("key not found"); 
} 

et quand je l'utilise, il donne la boîte de message « valeur introuvable » comme son supposé si elle n'existe pas, seul problème est la valeur existe ... i vérifié manuellement via regedit. Alors, qu'est-ce qui ne va pas?

+0

Exécutez-vous réellement ce code, ou s'agit-il d'un service, ou bien vous pourriez avoir des permissions différentes de vous? – pascal

+0

@pascal pour quoi il est utilisé: une fois qu'un programme spécifique se ferme je veux qu'il vérifie si une valeur de registre spécifique existe, s'il n'existe pas alors je veux qu'il supprime un dossier spécifique, s'il existe Je veux qu'il ne supprime pas ce dossier spécifique. – NightsEVil

+0

imprime les noms? 'chaîne [] noms = Key.GetValueNames(); chaîne buf = "valeurs:"; foreach (chaîne s dans les noms) {buf + = s + ","; } MessageBox.Show (buf); ' – pascal

Répondre

1

Vous avez probablement le problème d'interroger les valeurs de registre de la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run sur un système d'exploitation 64 bits à partir d'une application 32 bits. Dans le cas, vous verrez des valeurs existion seulement sous HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run (voir http://msdn.microsoft.com/en-us/library/aa384232.aspx). Si vous utilisez une API non gérée (ou facturée), vous pouvez ouvrir la clé Exécuter avec les indicateurs RegOpenKeyEx et KEY_QUERY_VALUE | KEY_WOW64_64KEY (voir http://msdn.microsoft.com/en-us/library/aa384129.aspx). Vous devez tester si l'application s'exécute sous un système d'exploitation 64 bits avant d'utiliser le flag KEY_QUERY_VALUE | KEY_WOW64_64KEY. Dans le cas d'un système d'exploitation 32 bits, vous devez utiliser le drapeau KEY_QUERY_VALUE uniquement.