从注册表接收数据的变量应该是哪种数据类型?
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'时,我什么都没得到。
答案 0 :(得分:3)
a您希望将此数据读入类型TCHAR
的数组中,这取决于您的应用程序的构建方式(UNICODE / MBCS)将被正确输入为char
或{{1} }。
使用此API读取REG_SZ字符串时,您需要确保2件事。
1)您的输出缓冲区需要为任何尾随的NULL终止符留出空间 2)成功时,输出缓冲区可能不会被终止。
最后一点很重要 - 如果字符串没有用NULL终止符存储,那么你的输出缓冲区也不会。您需要注意这一点并妥善处理,以免在应用程序中出现安全漏洞。