永发信息网

如何用PB得到CPU或硬盘的号

答案:3  悬赏:30  手机版
解决时间 2021-02-04 18:15
如何用PB得到CPU或硬盘的号
最佳答案
在多cpu、多核中,会随机的获得不同的序列号。
这就为根据cpu序列号来制作注册机带来了很大的麻烦。
Windows2000/xp允许设置进程和线程的亲缘性。
换句话说,可以控制哪个CPU能够运行某些线程。
这称为硬亲缘性。
Windows提供了设置亲缘性的函数SetProcessAffinityMask。
使用它可控制获取指定cpu的序列号
全部回答
#include "StdAfx.h" #include ".\puiddisk.h" #define _WIN32_DCOM #include <iostream> using namespace std; #include <comdef.h> #include <Wbemidl.h># pragma comment(lib, "wbemuuid.lib") CpuIDDisk::CpuIDDisk(void) { GetInfomation(); }CpuIDDisk::~CpuIDDisk(void) { } int CpuIDDisk::GetInfomation(void) { HRESULT hres; //步骤1:不是必须的,COM只须也只能初始化一次 hres = CoInitializeEx(0, COINIT_MULTITHREADED ); if (FAILED(hres)) { return 1; //初始化COM异常:注意,COM只须也只能初始化一次 } //步骤2:不是必须的,COM只须也只能设置一次 //Set general COM security levels hres = CoInitializeSecurity( NULL, -1, // COM authentication NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation NULL, // Authentication info EOAC_NONE, // Additional capabilities NULL // Reserved ); if (FAILED(hres)) { CoUninitialize(); return 1; // Program has failed. } //以上不是必须的,若已有“::COMInit();”,则要跳过 //步骤3: Obtain the initial locator to WMI IWbemLocator *pLoc = NULL; hres = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres)) { CoUninitialize(); return 1;//Failed to create IWbemLocator object } //步骤4:Connect to WMI through the IWbemLocator::ConnectServer method IWbemServices *pSvc = NULL; hres = pLoc->ConnectServer( _bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace NULL, // User name. NULL = current user NULL, // User password. NULL = current 0, // Locale. NULL indicates current NULL, // Security flags. 0, // Authority (e.g. Kerberos) 0, // Context object &pSvc // pointer to IWbemServices proxy ); if (FAILED(hres)) { pLoc->Release(); CoUninitialize(); return 1; // Program has failed. } // 步骤5: Set security levels on the proxy hres = CoSetProxyBlanket( pSvc, // Indicates the proxy to set RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx NULL, // Server principal name RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx NULL, // client identity EOAC_NONE // proxy capabilities ); if (FAILED(hres)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; } // 步骤6:Use the IWbemServices pointer to make requests of WMI ---- IEnumWbemClassObject* pEnumerator = NULL; //计算CPUID hres = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECt * FROM Win32_Processor"),//Win32_OperatingSystem WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; } // 步骤7:Get the data from the query IWbemClassObject *pclsObj; ULONG uReturn = 0; while (pEnumerator) { HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if(0 == uReturn) { break; } VARIANT vtProp; VariantInit(&vtProp); hr = pclsObj->Get(L"ProcessorId", 0, &vtProp, 0, 0); strProcessID=_com_util::ConvertBSTRToString(vtProp.bstrVal);//strProcessID:类级变量 } //计算硬盘系列号 hres = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECt * FROM Win32_DiskDrive"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; } while (pEnumerator) { HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if(0 == uReturn) { break; } VARIANT vtProp; VariantInit(&vtProp); hr = pclsObj->Get(L"PNPDeviceID", 0, &vtProp, 0, 0); strDisk=_com_util::ConvertBSTRToString(vtProp.bstrVal); } pSvc->Release(); pLoc->Release(); pEnumerator->Release(); pclsObj->Release(); CoUninitialize(); return 0;
用外部函数获取比较方便。 比如:getcpuid.dll //函数声明 function long getcpuid() library "getcpuid.dll"  //范例: string cpuid cpuid=string(getcpuid())
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
明泉村地址好找么,我有些事要过去
溢流什么意思
造成黄河流域淡水危机的原因是什么?具体用什
安徽理工大学和合肥学院哪个更值得填?
八房湾村地址在什么地方,我要处理点事
新国利花园酒店停车场地址有知道的么?有点事
我特别不理解我男朋友,我觉得他总是喜欢热脸
车在t字路口我由东向南左转与一部由南向东右
为什么有些人朋友圈就能看到几条 过了几天 就
用三种方法鉴别镁盐和锌盐!!!有方程式的写
长堰村怎么去啊,我要去那办事
折弯机上下模具有磨损,可以修复不。
冰淇淋怎么才能比挖勺挖的球漂亮,这是挖勺挖
长沙县长沙师院附属第二幼儿园地址在哪,我要
空气炸锅哪个牌子好+
推荐资讯
面膜有消毒水味是怎么回事
跳拉丁舞的原地律动好时肚皮上面的部分为什么
小伢的意思是什么啊?知道的请说下!
【v组织】...__→运动员n.___2.组织v.___→组
用白铁皮做水桶如何下料
男朋友人很好很爱我,和他交往了快两年了,他
志远电脑印务地址在什么地方,我要处理点事
甜水满族乡初级中学地址在什么地方,我要处理
气体水灭火系统巡查主要是针对(  )等的日
金苹果灯饰(辉县店)地址有知道的么?有点事想
压敏电阻E1值E10值是什么
别有心肠的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?