C ++ RegGetValue函数未返回正确的Windows操作系统版本

时间:2018-06-13 18:28:51

标签: c++ windows

我在控制台应用程序中使用以下代码来获取我的Windows操作系统版本:

#include <string>
#include <iostream>
#include <Windows.h>

int main()
{
  DWORD dataSize = 0;
  char buffer[256];
  dataSize = sizeof(buffer);

  RegGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 
   "ProductName", RRF_RT_REG_SZ, 0, &buffer, &dataSize);

  cout << buffer << endl;
  return 0;
}

我安装了Windows 10 Pro,但该功能正在返回Windows 10 Enterprise。我甚至手动使用regedit导航到指定的密钥并在&#34;产品名称&#34;我可以看到Windows 10 Pro。 Here is an image of my regedit.

我运行了另一个函数RtlGetProductInfo(10, 0, 0, 0, f);,它为f返回值0x48,根据Microsoft我有Windows 10企业评估。

现在,在这一点上,我知道有些东西搞砸了我的Windows安装,但为什么我的第一个代码会返回另一个值而不是我的注册表编辑器中"ProductName"显示的值?

修改:我应该补充一点,我已在另一台Windows PC上运行该代码,并在该计算机上返回正确的版本。

0 个答案:

没有答案