Tôi đã có một vấn đề về RegOpenKeyEx, mã:RegOpenKeyEx trở ERROR_SUCCESS nhưng nó không nên (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;
}
Lưu mã trong như reg.cpp, và trong chế độ lệnh:
cl reg.cpp
và tôi đã nhận reg.exe, chạy nó:
D: \ tmp> reg.exe
thành công chính mở!
Nhưng giá trị chưa được ghi trong sổ đăng ký.
Một điều kỳ lạ nữa là nếu tôi sử dụng studio trực quan để tạo dự án CLI và dán mã vào chính(), RegOpenKeyEx() sẽ trả về false.
Nền tảng là Windows 7 và UAC được bật.