Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ RegQueryValuex注册表项[C+;+;]_C++_Windows_Registry - Fatal编程技术网

C++ RegQueryValuex注册表项[C+;+;]

C++ RegQueryValuex注册表项[C+;+;],c++,windows,registry,C++,Windows,Registry,从注册表接收数据的变量应该具有哪种数据类型 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 l

从注册表接收数据的变量应该具有哪种数据类型

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);
HKEY-HKEY;
HKEY HKEY 2;
DWORD dwMHz=最大路径;
字符串pName;
long lError=RegOpenKeyEx(HKEY_本地_机器,
“硬件\\描述\\系统\\中央处理器\\0”,
0,
钥匙读到了,
&香港教育学院);
long lError2=RegOpenKeyEx(HKEY_本地_机器,
“硬件\\描述\\系统\\中央处理器\\0”,
0,
钥匙读到了,
&hKey2);
//工作
RegQueryValueEx(hKey,“~MHz”、NULL、NULL、(LPBYTE)和dwMHz以及BufSize);
//不起作用
RegQueryValueEx(hKey2,“ProcessorNameInfo”,NULL,NULL,(LPBYTE)和pName,以及BufSize2);

couta您需要将此数据读入类型为
TCHAR
的数组,该数组的类型取决于您的应用程序的构建方式(UNICODE/MBCS),将正确地键入
char
wchar\t

使用此API读取REG_SZ字符串时,需要确保两件事

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


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

a您需要将此数据读入类型为
TCHAR
的数组,该数组的类型取决于您的应用程序的构建方式(UNICODE/MBCS)将正确键入
char
wchar\u t

使用此API读取REG_SZ字符串时,需要确保两件事

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


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

std::string*
被视为
LPBYTE
不是您想要的。那么我想要什么?我对C++
std::string*
有点陌生,被视为
LPBYTE
不是你想要的。那我想要什么呢?我对C++有点陌生