首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegQueryValueEx REG_SZ [C++]

RegQueryValueEx REG_SZ [C++]
EN

Stack Overflow用户
提问于 2012-08-26 03:39:19
回答 1查看 5.1K关注 0票数 0

从Registery接收数据的变量应该具有哪种数据类型?

代码语言:javascript
复制
HKEY hKey;
HKEY hKey2;

DWORD dwMHz = MAX_PATH;
string pName;


long lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
        0,
        KEY_READ,
        &hKey);
long lError2 = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
        0,
        KEY_READ,
        &hKey2);

// Working
RegQueryValueEx(hKey, "~MHz", NULL, NULL, (LPBYTE) &dwMHz, &BufSize);

//Not working                                            <-- THIS -->
RegQueryValueEx(hKey2, "ProcessorNameInfo", NULL, NULL, (LPBYTE) &pName, &BufSize2);


cout << "   Processor frequency: " << dwMHz / 1024 << " GHz" << endl;
cout << "   Processor Name: " << pName << endl;

RegCloseKey(hKey);
RegCloseKey(hKey2);

当我尝试打印'pName‘时,我什么也得不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-26 04:00:31

你需要将这些数据读入一个TCHAR类型的数组中,根据你的应用程序是如何构建的(UNICODE/MBCS),它将被正确地定义为charwchar_t

使用此接口读取REG_SZ字符串时,需要确认两件事。

1)您的输出缓冲区需要有空间以容纳任何尾随NULL终止符2)如果成功,则您的输出缓冲区可能不会以NULL结尾。

最后一点很重要--如果字符串没有使用NULL终止符存储,那么您的输出缓冲区也不会是空的。您需要注意这一点并正确处理它,以免在您的应用程序中出现安全漏洞。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12125069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档