文档库 最新最全的文档下载
当前位置:文档库 › vc获取机器码

vc获取机器码

#include "comutil.h"
#include "Wbemtime.h"
#include "Wbemidl.h"
#pragma comment(lib,"comsuppw.lib")
#pragma comment(lib,"Wbemuuid.lib")
CString CGetSystemSignatureDlg::GetCpuID( LPCWSTR query, LPCWSTR filed)
{
/*CoInitialize(NULL);*/

//Security needs to be initialized in XP first

HRESULT hResult;
hResult = CoInitializeEx(NULL, COINIT_MULTITHREADED); // Initialize COM security
CoInitializeSecurity( NULL, // Allow *all* VSS writers to communicate back!
-1, // Default COM authentication service
NULL, // Default COM authorization service
NULL, // reserved parameter
RPC_C_AUTHN_LEVEL_PKT_PRIVACY, // Strongest COM authentication level
RPC_C_IMP_LEVEL_IMPERSONATE, // Minimal impersonation abilities
NULL, // Default COM authentication settings
EOAC_NONE, // No special options
NULL // Reserved parameter
);
if ( FAILED(hResult) )
{
AfxMessageBox("初始化com失败!");
return "";
}

IWbemLocator * pIWbemLocator = NULL;
IWbemServices * pWbemServices = NULL;
IEnumWbemClassObject * pEnumObject = NULL;
BSTR bstrNamespace = (L"root\\cimv2");
HRESULT hRes = CoCreateInstance (
CLSID_WbemAdministrativeLocator,
NULL ,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER ,
IID_IUnknown ,
( void ** ) & pIWbemLocator
) ;
if (SUCCEEDED(hRes))
{
hRes = pIWbemLocator->ConnectServer(
bstrNamespace, // Namespace
NULL, // Userid
NULL, // PW
NULL, // Locale
0, // flags
NULL, // Authority
NULL, // Context
&pWbemServices
);
}
BSTR strQuery = SysAllocString(query);
BSTR strQL = (L"WQL");
hRes = pWbemServices->ExecQuery(strQL, strQuery,
WBEM_FLAG_RETURN_IMMEDIATELY,NULL,&pEnumObject);

ULONG uCount = 1, uReturned;
IWbemClassObject * pClassObject = NULL;
hRes = pEnumObject->Reset();

hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned);
VARIANT v;
//BSTR strClassProp = SysAllocString(L"LoadPercentage");
BSTR strClassProp = SysAllocString(filed);
hRes = pClassObject->Get(strClassProp, 0, &v, 0, 0);
SysFreeString(strClassProp);
SysFreeString(strQuery);

CString strRes;
_bstr_t bstrPath = &v; //Just to convert BSTR to ANSI
char* strPath=(char*)bstrPath;
if (SUCCEEDED(hRes))
strRes = strPath;
else
strRes = "";
VariantClear( &v );
pIWbemLocator->Release();
pWbemServices->Release();
pEnumObject->Release();
pClassObject->Release();
CoUninitialize();
return strRes;

}


void CGetSystemSignatureDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码

CString strCpuID = GetCpuID(L"select * from Win32_Processor", L"ProcessorId");
CString hardDiskID = GetCpuID(L"select * from Win32_DiskDrive", L"SerialNumber");
CString biosID = GetCpuID(L"select * from Win32_BIOS", L"SerialNumber");
CString memID = GetCpuI

D(L"select * from Win32_PhysicalMemory",L"SerialNumber");
CString disID = GetCpuID(L"select * from Win32_DisplayConfiguration", L"Caption");
}

相关文档
相关文档 最新文档