C++ 读取 char* 中的注册表字符串值

标签 c++ winapi registry

<分区>

Possible Duplicate:
How to compare strings


我想比较注册表字符串值,如果它们相同,则会出现一个消息框
目前我正在使用这个函数,它返回值正确但是每当我想比较它们时,比较结果总是错误的

char* GetRegistry(char* StringName)
{
DWORD dwType = REG_SZ;
HKEY hKey = 0;
char value[1024];
DWORD value_length = 1024;
const char* subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\MCI\\Player";
RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&hKey);
RegQueryValueEx(hKey, StringName, NULL, &dwType, (LPBYTE)&value, &value_length);
return  value;
}


我用这个来比较它们

if (GetRegistry("First") == GetRegistry("Second"))
{
MessageBox(NULL,":|",":|",1);
}


但是 MessageBox 怎么出现值都不一样


感谢任何帮助。

最佳答案

通过使用 std::string,比较会按您预期的方式进行。这也将修复另一个错误,即函数返回指向本地缓冲区的指针。

std::string GetRegistry(const char* StringName)
{
....
return std::string(value);
}

关于C++ 读取 char* 中的注册表字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954927/

相关文章:

c++ - 如何使用 native C++ WIN32 API 将 Microsoft Office Access 2007 数据库中的大量记录添加到列表框控件中

c++ - 将 REG_BINARY 数据转换为 REG_TZI_FORMAT

c++ - 当找不到请求的注册表值时,RegGetValue 返回什么?

java - 通过 CMD/Registry 禁用 IPv4

C++ 返回具有常量成员变量的对象——赋值运算符被隐式删除

c++ - #include <Dbghelp.h> 不包含标题

c - WSAAsyncSelect/Event 上的 FD_WRITE 处理?

c++ - 如何将最低有效位写入缓冲区?

c++ - 在现代 C++ 应用程序中使用 Win32 代码时,是否应该使用正确的转换?

c++ - 不同配置单元之间的注册表符号链接(symbolic link)