最近要做个简单的网络验证, 需要取硬件的一些信息, 例如CPU序列号, 硬盘序列号, MAC地址, OS名称等等, 折腾了一天终于搞定了并且做了些简单封装, 先放个截图
stdafx.h
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#include
#include
// TODO: 在此处引用程序需要的其他头文件
#include
#include
#include
#pragma comment(lib, "wbemuuid.lib")
#include
#include
#include
using namespace std;
main.cpp
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
class system_info
{
public:
~system_info();
system_info(wchar_t* WMI_Namespace = L"ROOT\\CIMV2");
void Get_CpuId(string& dest);
void Get_DiskDriveId(string& dest);
void Get_MacAddress(string& dest);
void Get_OsName(string& dest);
private:
IWbemServices* pSvc; //接收指向绑定到指定名称空间的IWbemServices对象的指针
IWbemLocator* pLoc; //接收CoCreateInstance 创建的实例指针
bool ExecQuery(char* strQueryLanguage, char* strQuery, IEnumWbemClassObject** pEnumerator);
};
system_info::~system_info()
{
pSvc->Release();
pLoc->Release();
}
system_info::system_info(wchar_t *WMI_Namespace)
{
pSvc = NULL;
pLoc = NULL;
HRESULT hres = CoCreateInstance(
CLSID_WbemLocator,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID *)&pLoc);
if (FAILED(hres))
{
cout &