Windows 7中的Reading Registry行为异常
Reading Registry in Windows 7 behaving strangely
我正试图在c++中读取Windows7中注册表的"(默认("值,下面是我正在使用的代码:
string GetSZValueUnique( HKEY openKey, const char* regkey, const char* keyName )
{
HKEY hKey = 0;
BYTE data[512] ;
DWORD szsize = 512 ;
string value ;
LONG retValue = RegOpenKeyEx( openKey, regkey, 0, KEY_READ, &hKey ) ;
if ( retValue == ERROR_SUCCESS )
{
LONG retV = RegQueryValueEx( hKey, keyName, 0, 0, data, &szsize ) ;
if ( retV == ERROR_SUCCESS )
{
char* _value = reinterpret_cast<char*>(data) ;
value = _value ;
RegCloseKey (hKey) ;
return value ;
}
else
{
char msg[512] ;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,(DWORD)retV,0,&msg[0],512,0) ;
error_string = &msg[0];
MessageBox( 0, error_string.c_str(), "Query : GetSZValueUnique", 0 );
}
}
else
{
char msg[512] ;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,(DWORD)retV,0,&msg[0],512,0) ;
error_string = &msg[0];
MessageBox( 0, error_string.c_str(), "Open : GetSZValueUnique", 0 );
}
RegCloseKey (hKey) ;
return "" ;
}
这就是我调用上述函数的方式:
string ts3 = GetSZValueUnique( HKEY_LOCAL_MACHINE, "SOFTWARE\TeamSpeak 3 Client\", "" );
if ( !ts3.empty() )
MessageBox( 0, ts3.c_str(), "GetSZValueUnique", 0 );
对于某些密钥,它对某些密钥无效:例如,它适用于"Adobe"、"TrendMicro"、"CheckPoint"、"RegisteredApplications",但不适用于"7-Zip"、"RTLSetup"、"Sonic"、"TeamSpeak 3 Client">
我现在没有主意了,有人能指出哪里出了问题吗?
编辑:我已经用"(默认("值和其他值检查了代码,对于键,它不起作用,它永远不会超过*"if(retValue==ERROR_SUCCESS("*检查,我总是得到"未找到指定文件"错误。对于正在工作的键,它会通过"*if(retValue==ERROR_SUCCESS(*"检查并返回值(如果存在(,如果不存在,则只显示错误消息"未找到指定文件"。
编辑2:我再次检查:它工作的密钥似乎在软件下的"Wow6432Node"子密钥中有相应的克隆。。。嗯……那么我该怎么让它工作呢?
您可以指定标志::
- 如果您想从应用程序访问Wow6432节点密钥,即32位密钥,请在RegOpenKeyEx的">samDesired"参数中选择">KEY_WOW64_32KEY
- ">KEY_WOW64_64KEY"在RegOpenKeyEx的samDesired"参数中,如果您想从应用程序访问普通密钥,即64位密钥
注:@WhozCraig已经通过适当的链接在评论中澄清了您的疑问。如果他回答,一定要接受他的回答而不是我的回答。
相关文章:
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- C++中的赋值发生,尽管右侧出现异常
- 从构造函数抛出异常时如何克服内存泄漏
- 异常属于C++中的线程还是进程
- 当类定义不可见时捕获异常
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 为什么异常不退出程序?
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何将strftime中的格式错误作为异常捕获
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 尝试使用智能指针时引发异常
- 函数如何通知用户它基于函数原型抛出异常?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- Windows 7中的Reading Registry行为异常