J'ai un problème à propos RegOpenKeyEx, le code:RegOpenKeyEx retour ERROR_SUCCESS mais il ne doit pas (Windows 7)
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#pragma comment (lib, "Advapi32.lib")
int main() {
TCHAR *keyName = _T("SOFTWARE\\foobar2000\\capabilities");
HKEY key = NULL;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyName, 0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS) {
printf("open key failed!\n");
return -1;
} else {
printf("open key success!\n");
}
TCHAR *value = _T("123");
if (RegSetValueEx(key, _T("xxx"), 0, REG_SZ,
(const BYTE *)value, sizeof(TCHAR) * (_tcslen(value) + 1)) != ERROR_SUCCESS) {
printf("set value failed!\n");
}
RegCloseKey(key);
return 0;
}
Enregistrer le code tels que reg.cpp, et en mode de commande:
cl reg.cpp
et je suis reg.exe, exécutez:
D: \ tmp> reg.exe
succès clé ouverte!
Mais la valeur n'a pas été écrite dans le registre.
Une autre chose étrange est que si j'utilise le studio visuel pour créer un projet CLI, et collez le code dans main(), le RegOpenKeyEx() retournera false.
La plate-forme est Windows 7 et l'UAC est activé.