我使用regedit创建了一个密钥,现在我希望得到它的价值.它没有给出任何错误,但它没有显示任何内容.代码:
int main() {
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Ehsan Akbari", 0, KEY_ALL_ACCESS, &hKey);
TCHAR sz[50];
DWORD size = 50,type;
RegEnumValue(hKey, 0, L"test", &size, NULL, &type, (LPBYTE)sz, &size);
RegCloseKey(hKey);
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注册图片:图片
我究竟做错了什么?
编辑
当我调试我看到hKey的NULL,但GetLastError不报什么.
以下是我可以看到的直接问题:
KEY_ALL_ACCESS哪个不会被授予HKLM.您需要请求只读访问权限KEY_READ.HKCU,您正尝试在其下打开密钥HKLM.RegEnumValue期望数据缓冲区的大小以字节为单位.你传递长度,字符数.TCHAR.这毫无意义.您的代码不会针对MBCS编译,无论如何您不再关心Win98.停止使用TCHAR并wchar_t改为使用.lpValueName参数必须是可修改的缓冲区.你传了一个文字.请记住,此函数枚举值.它不会像您期望的那样读取特定的命名值.lpcchValueName参数包含以lpcchValue字符形式传递的缓冲区大小.传递数据缓冲区的长度.main是int main(void).我希望有更多错误,但我不再关注这一点.我建议你花一些时间在文档上.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |