Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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++ C++;从注册表获取windows产品id_C++_Winapi_Registry - Fatal编程技术网

C++ C++;从注册表获取windows产品id

C++ C++;从注册表获取windows产品id,c++,winapi,registry,C++,Winapi,Registry,我已经在网上搜索了很多不适合我的“解决方案”:/ 我有这个: HKEY keyHandle; char rgValue[1024]; char fnlRes[1024]; DWORD size1; DWORD Type; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle

我已经在网上搜索了很多不适合我的“解决方案”:/

我有这个:

HKEY keyHandle;
char rgValue[1024];
char fnlRes[1024];
DWORD size1;
DWORD Type;

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle) == ERROR_SUCCESS)
{
    size1 = 1023;
    RegQueryValueEx(keyHandle, L"Productid", NULL, &Type, (LPBYTE)rgValue, &size1);
    sprintf_s(fnlRes, "Product ID of your Windows system is:: %s", rgValue);
}
else strcpy_s(fnlRes, "Couldn't access system information!");

RegCloseKey(keyHandle);

std::cout << fnlRes;
HKEY钥匙手柄;
字符rgValue[1024];
字符fnlRes[1024];
德沃德尺寸1;
德沃德型;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,L“SOFTWARE\\Microsoft\\Windows\\CurrentVersion”,0,KEY_QUERY_VALUE | KEY_WOW64_64KEY,&keyHandle)=错误_成功)
{
尺寸1=1023;
RegQueryValueEx(keyHandle,L“Productid”,NULL,&Type,(LPBYTE)rgValue,&size1);
sprintf_s(fnlRes,“Windows系统的产品ID为::%s”,rgValue);
}
其他strcpy_s(fnlRes,“无法访问系统信息!”);
RegCloseKey(keyHandle);

原因是字符编码不匹配。您正在调用Unicode版本的
RegQueryValueEx()
,但给它一个Ansi缓冲区来填充。使用
WCHAR
代替
char

HKEY keyHandle;
WCHAR rgValue[1024];
WCHAR fnlRes[1024];
DWORD size1;
DWORD Type;

if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle) == ERROR_SUCCESS)
{
    size1 = 1023;
    RegQueryValueExW(keyHandle, L"Productid", NULL, &Type, (LPBYTE)rgValue, &size1);
    swprintf_s(fnlRes, L"Product ID of your Windows system is:: %s", rgValue);
    RegCloseKey(keyHandle);
}
else wcscpy_s(fnlRes, L"Couldn't access system information!");

wcout << fnlRes;
HKEY钥匙手柄;
WCHAR rgValue[1024];
WCHAR fnlRes[1024];
德沃德尺寸1;
德沃德型;
如果(RegOpenKeyExW(HKEY_LOCAL_MACHINE,L“SOFTWARE\\Microsoft\\Windows\\CurrentVersion”,0,KEY_QUERY_VALUE | KEY_WOW64_64KEY,&keyHandle)=错误_成功)
{
尺寸1=1023;
RegQueryValueExW(keyHandle,L“Productid”,NULL,&Type,(LPBYTE)rgValue,&size1);
swprintf_s(fnlRes,L“您的Windows系统的产品ID为::%s”,rgValue);
RegCloseKey(keyHandle);
}
else wcscpy_s(fnlRes,L“无法访问系统信息!”);

wcout原因是字符编码不匹配。您正在调用Unicode版本的
RegQueryValueEx()
,但给它一个Ansi缓冲区来填充。使用
WCHAR
代替
char

HKEY keyHandle;
WCHAR rgValue[1024];
WCHAR fnlRes[1024];
DWORD size1;
DWORD Type;

if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &keyHandle) == ERROR_SUCCESS)
{
    size1 = 1023;
    RegQueryValueExW(keyHandle, L"Productid", NULL, &Type, (LPBYTE)rgValue, &size1);
    swprintf_s(fnlRes, L"Product ID of your Windows system is:: %s", rgValue);
    RegCloseKey(keyHandle);
}
else wcscpy_s(fnlRes, L"Couldn't access system information!");

wcout << fnlRes;
HKEY钥匙手柄;
WCHAR rgValue[1024];
WCHAR fnlRes[1024];
德沃德尺寸1;
德沃德型;
如果(RegOpenKeyExW(HKEY_LOCAL_MACHINE,L“SOFTWARE\\Microsoft\\Windows\\CurrentVersion”,0,KEY_QUERY_VALUE | KEY_WOW64_64KEY,&keyHandle)=错误_成功)
{
尺寸1=1023;
RegQueryValueExW(keyHandle,L“Productid”,NULL,&Type,(LPBYTE)rgValue,&size1);
swprintf_s(fnlRes,L“您的Windows系统的产品ID为::%s”,rgValue);
RegCloseKey(keyHandle);
}
else wcscpy_s(fnlRes,L“无法访问系统信息!”);

wcout@mikedu95他的片段适合我。根据你的说法,我该怎么做?@SVARTBERG:展示的是正确的方法。您也可以考虑使用替代,这样您就不必处理NoalEnter终结符问题:<代码> ReqQuuryValueEx()/Case>。根据你的说法,我该怎么做?@SVARTBERG:展示的是正确的方法。您也可以考虑使用替代,这样您就不必处理空代码终止符问题:<代码> ReqQuuryValueEx()/<代码>。