Qt獲取CPU序列號,親測可用

2021-08-15 06:37:51 字數 1616 閱讀 6877

對於windows系統下獲取cpu序列號,網上有很多方式,通過c++呼叫windows的介面可以實現,不過**都很複雜,不易理解,並且還還不一定能成功。這裡用一種非常簡單的方式去獲取cpu序列號,通過qt的介面,**超級簡單,不超過十行。(原創:

檢視cpu序列號的方式很多,可以通過命令列查詢,或者借助第三方軟體檢視,那麼,這裡要用到的方式就是在程式中通過執行命令列來獲取。需要用刀qt的類qprocess 

**如下:

qstring cpu_id = "";

qprocess p(0);

p.start("wmic cpu get processorid"); p.waitforstarted();

p.waitforfinished();

cpu_id = qstring::fromlocal8bit(p.readallstandardoutput());

cpu_id = cpu_id.remove("processorid").trimmed();

**最後一行經過對輸出的終端資訊進行處理 最終得到單獨的cpu序列號資訊。

以上方式可能在某些機子上無法正常獲取,接下來通過一種複雜的方式來獲取 cpu 序列號。 

直接上**

static void getcpuid(unsigned int cpuinfo[4], unsigned int infotype);

static void getcpuidex(unsigned int cpuinfo[4], unsigned int infotype, unsigned int ecxvalue);

static qstring get_cpuid();

qstring get_cpuid()

; unsigned long long ret = 0;

getcpuid(dwbuf, 1);

ret = dwbuf[3];

ret = ret << 32;

qstring str0 = qstring::number(dwbuf[3], 16).toupper();

qstring str0_1 = str0.rightjustified(8,'0');//這一句的意思是前面補0,但是我遇到的情況是這裡都填滿了

qstring str1 = qstring::number(dwbuf[0], 16).toupper();

qstring str1_1 = str1.rightjustified(8,'0');//這裡必須在前面補0,否則不會填滿資料

//cpu_id = cpu_id + qstring::number(dwbuf[0], 16).toupper();

cpu_id = str0_1 + str1_1;

return cpu_id;

}void getcpuid(unsigned int cpuinfo[4], unsigned int infotype)

void getcpuidex(unsigned int cpuinfo[4], unsigned int infotype, unsigned int ecxvalue)

#endif

#endif

}

獲取CPU序列號,硬碟序列號,網絡卡mac位址

獲取cpu序列號,硬碟序列號,網絡卡mac位址 private string getmoc 獲取硬碟序列號 managementclass mchd new managementclass win32 logicaldisk managementobjectcollection mochd mchd...

Android中獲取手機cpu序列號

這一篇 主要講的的是android裡獲取手機cpu序列號,很少,也應該算很簡單了。下面來看看 獲取cpu序列號 return cpu序列號 16位 讀取失敗為 0000000000000000 public static string getcpuserial string str strcpu c...

vc 獲取 硬碟序列號 和 cpu

vc 獲取 硬碟序列號 和 cpu 唯一id的方法?如題 網上找來很多資料 也沒找到,要支援xp win7 32 64 系統下都能獲取 硬碟序列號 和cpu id 哪位朋友幫幫忙 解決方案 不是很確定 沒有測試64位的 解決方案 cstring cpu id cpuid 1.format 08x 0...