我尝试使用此代码访问Windows注册表:
CRegKey key;
LPTSTR szBuffer = new TCHAR[50];
ULONG cchBuffer = 257;
key.Open(HKEY_CURRENT_USER, L"HARDWARE", KEY_READ);
ULONG chars;
CString str;
if (key.QueryStringValue(L"Test", 0, &chars) == ERROR_SUCCESS)
{
key.QueryStringValue(L"Test", str.GetBuffer(chars), &chars);
str.ReleaseBuffer();
}
key.Close();
它返回了Microsoft Visual C ++运行时库的错误:
Debug Assertation Failed!
计划:......
文件:C:\ Program Files \ Microsoft Visual Studio 11.0 \ VC \ ATLMFC \ INCLUDE \ altbase.h行:6146
表达式:m_hkey!= 0
有关Blah blah的信息
按下忽略后,它会崩溃。
我不确定使用了什么编译器,因为我(我认为)已将Qt Creator配置为使用Visual C ++,但输出目录操作系统名为... _._ MinGW_Qt_SDK_DEBUG
现在该怎么办?
答案 0 :(得分:3)
我附近没有Windows机器,但我认为HARDWARE
中没有名为HKEY_CURRENT_USER
的子项:它位于HKEY_LOCAL_MACHINE
。
这一点,除了你没有检查Open
错误调用这一事实表明你真正想要做的是:
key.Open(HKEY_LOCAL_MACHINE, L"HARDWARE", KEY_READ);
无论如何,处理错误总是一个好主意,以防万一。