读写注册表的示例代码(待更新)
2016-01-11 13:28
501 查看
使用
在64位系统下你的32位app读写的注册表位置实际是放在Wow6432Node节点,win32
api会根据你的app类型自动重定向注册表位置。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\公司 XXX
实现
std::wstring ReadStringFromHKLM(const std::wstring &path, const std::wstring &key)
{
HKEY hOpen;
wchar_t buf[255];
memset(buf, 0, sizeof(buf));
DWORD size;
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, path.c_str(), 0, KEY_READ, &hOpen))
{
RegQueryValueEx(hOpen, key.c_str(), NULL, NULL, (BYTE*)buf, &size);
}
RegCloseKey(hOpen);
return buf;
}在WinXP下使用RegQueryValueExA会读取不到字符串,得使用RegQueryValueEx这个函数。
m_fullPathApp = ReadStringFromHKLM(L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\公司 XXX", L"MainProgramLocation"); if (m_fullPathApp.empty()) return false;
在64位系统下你的32位app读写的注册表位置实际是放在Wow6432Node节点,win32
api会根据你的app类型自动重定向注册表位置。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\公司 XXX
实现
std::wstring ReadStringFromHKLM(const std::wstring &path, const std::wstring &key)
{
HKEY hOpen;
wchar_t buf[255];
memset(buf, 0, sizeof(buf));
DWORD size;
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, path.c_str(), 0, KEY_READ, &hOpen))
{
RegQueryValueEx(hOpen, key.c_str(), NULL, NULL, (BYTE*)buf, &size);
}
RegCloseKey(hOpen);
return buf;
}在WinXP下使用RegQueryValueExA会读取不到字符串,得使用RegQueryValueEx这个函数。
相关文章推荐
- Java创建和解析Json数据方法(三)——json-lib包的使用
- 在Java中,break还可以这样用
- C语言 static和extern关键字 对变量的作用
- PHP读取超大日志文件
- php写入文件
- C语言 static和extern关键字 对函数的作用
- 【JVM系列】Java class文件解析2
- C语言 变量类型
- C语言 预处理指令 3文件包含
- Python 向上取整的算法
- C语言 预处理指令 2条件编译
- C语言 预处理指令 1宏定义
- python迭代列出某文件夹下所有文件
- C语言 返回指针的函数与指向函数的指针
- 关于在windows上的wamp集成环境和xampp上安装mongo扩展
- Spring Boot:在Eclipse/STS设置热插拔免重启
- C语言 指针和字符串
- java 正则(2) 空行匹配
- intellij idea Error:java: Compilation failed: internal java compiler error
- 使用PIL时遇到的图片质量问题