通过注册表获取电脑硬件信息
可以获取的硬件信息:设备型号,设备厂商,设备SN号:电脑背面条形码下面,cpu型号,操作系统名称。
下面是获取sn号的代码示例:
std::string GetSystemSnNumber()
{
const HKEY key = HKEY_LOCAL_MACHINE;
const wchar_t* const subKey = L"SOFTWARE\\WOW6432Node\\Intel\\Setup and Configuration Software\\SystemDiscovery\\GeneralInfo";
const wchar_t* const valueName = L"MachineSerialNumber";
DWORD dataSize = 256;
const DWORD flags = RRF_RT_ANY;
DWORD dataType;
std::vector<wchar_t> buffer(dataSize / sizeof(wchar_t));
LONG result = ::RegGetValue(
key,
subKey,
valueName,
flags,
&dataType,
&buffer[0],
&dataSize);
if (result != ERROR_SUCCESS)
{
std::cout << "Error: " << result << '\n';
return "";
}
std::string SN;
std::wstring text(buffer.data());
int len = WideCharToMultiByte(CP_ACP, 0, text.c_str(), text.size(), NULL, 0, NULL, NULL);
char* buf = new char[len + 1];
//宽字节编码转换成多字节编码
WideCharToMultiByte(CP_ACP, 0, text.c_str(), text.size(), buf, len, NULL, NULL);
buf[len] = '\0';
//删除缓冲区并返回值
SN.append(buf);
delete[] buf;
return SN;
}
做一个记录,以防后面忘记