查询注册表键值,却总是得不到结果,大家来看看
查询注册表键值 "mystart"是否存在。
int _tmain(int argc, _TCHAR* argv[])
{
//操作注册表
HKEY key;
LPBYTE path_Get=new BYTE[80];
DWORD type =REG_SZ;
DWORD dwBytes = 0;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_READ, &key) == ERROR_SUCCESS)
{
printf("注册表打开成功");
// 查询注册表 值
if ( RegQueryValueExA( key, "mystart", 0, &type, path_Get, &dwBytes ) == ERROR_SUCCESS )
{
printf("键值存在\n");
}
else
{
printf("键值不存在\n");
}
}
system("pause");
return 0;
}
结果总是 键值不存在,怎么回事,我已确认在注册表中的确有这键值存在。
但总是得不到正确的结果。
[解决办法]
试试宽字符版本的API。
- C/C++ code
RegQueryValueEx(key, _T("mystart"), 0, &type, path_Get, &dwBytes ) == ERROR_SUCCESS
[解决办法]
和宽字节应该没有关系吧。
我怀疑楼主是64位的系统,但是程序是32位的,所有注册表操作被重定向了。
试试RegOpenKeyEx的samDesired参数加上这个选项KEY_WOW64_64KEY
[解决办法]
程序看着是没问题的,可能是操作系统环境的问题吧