Ich habe ein Problem über RegOpenKeyEx bekam, den Code:RegOpenKeyEx Rückkehr ERROR_SUCCESS aber es sollte nicht (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;
}
Speichern Sie den Code in wie reg.cpp und im Befehlsmodus:
cl reg.cpp
und ich habe reg.exe, führen sie es:
D: \ tmp> reg.exe
offener Schlüsselerfolg!
Aber der Wert wurde nicht in der Registrierung geschrieben.
Eine andere seltsame Sache ist, dass, wenn ich das Visual Studio verwenden, um ein CLI-Projekt zu erstellen, und den Code in main() einfügen, wird der RegOpenKeyEx() false zurückgeben.
Die Plattform ist Windows 7, und UAC ist aktiviert.