2009-09-25 7 views
2

Je définis déjà la clé et la valeur dans l'entrée de Registre en utilisant RegSetValueExA, et il est créé. Mais maintenant je veux supprimer cette clé et la valeur de l'entrée de registre et pour cela j'utilise RegDeleteKey mais son erreur donnant 2 qui est "Le système ne peut pas trouver le fichier spécifié.", Pouvez-vous me dire comment puis-je résoudre ce problème.Comment faire pour supprimer la valeur de Registre et la clé de l'entrée de Registre

+0

Pourriez-vous poster le code? Nous ne pouvons pas vous aider si nous ne savons pas ce que vous passez les fonctions. –

Répondre

1

La clé de registre possède-t-elle des sous-clés? RegDeleteKey ne fera pas une suppression récursive. Si vous écrivez pour Vista +, vous pouvez utiliser RegDeleteTree, sinon vous devrez coder une suppression récursive, mais il y a un exemple de code sur MSDN. Vous pouvez également utiliser SHDeleteKey sur shlwapi.dll.

4

Pouvez-vous montrer des codes du tout? Cela n'aide personne ici à affiner votre problème.

Si je devrais faire une supposition cependant, il ya quelque chose de mal avec la façon dont vous avez spécifié LPCTSTR lpSubKey dans RegOpenKeyEx ou RegDeleteKey.

Exemple:

Si vous avez créé une clé:

HKEY_LOCAL_MACHINE\Software\Test 

Pour le supprimer, vous auriez besoin de quelque chose comme ceci:

RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software", 0, KEY_ALL_ACCESS, &RegHandle) 
RegDeleteKey(RegHandle, test) 

OU

RegOpenKeyEx(HKEY_LOCAL_MACHINE, someNullValue, 0, KEY_ALL_ACCESS, &RegHandle) 
RegDeleteKey(RegHandle, L"Software\\test") 

Assurez-vous de vérifier à nouveau les fonctions sur MSDN.

RegDeleteKey RegOpenKeyEx

1

Deux choses à vérifier l'erreur 2/"file not found":

  • Assurez-vous que ce n'est pas une "valeur" au sein d'une clé au lieu d'une clé réelle.

Si vous créez un dossier comme HKCU> Logiciels> CompanyName puis stocker une valeur comme option = « toto » avec RegSetValueEx, vous devez supprimer cela avec RegDeleteValue ou RegDeleteValueEx.

  • S'il s'agit d'un système d'exploitation 64 bits, il existe des vues de registre distinctes pour 32 bits par rapport à 64 bits. Par défaut, une application 32 bits utilisera la vue 32 bits pour tout mais si vous avez créé l'entrée en utilisant KEY_WOW64_64KEY pour une raison quelconque, vous devez l'utiliser lors de la suppression.
Questions connexes