作者chingyue (ChingYue)
看板C_and_CPP
標題VC++ 讀取CpuID 該用什麼輸出格式?
時間Wed Jun 7 11:27:55 2017
開發平台(Platform): (Ex: Win10, Linux, ...)
Win7(Win10)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++(VS2013 VS2017)
問題(Question):
各位前輩大家好
小弟最近在學習用C++來讀取CpuID
有在GOOGLE上找到一個範例
範例網址:
http://blog.csdn.net/aoshilang2249/article/details/44958907
小弟照著範例執行的時候
出現了錯誤
error LNK2019: 無法解析的外部符號 _main 在函式 ___tmainCRTStartup 中被參考
查了一下發現應該是程式中沒有main()
所以自己加入了
void main()
{
char str1;
printf_s("%d\n", GetCpuByCmd);
printf_s("%f\n", GetCpuByCmd);
printf_s("%c\n", GetCpuByCmd);
printf_s("%s\n", GetCpuByCmd);
printf_s("%e\n", GetCpuByCmd);
printf_s("%u\n", GetCpuByCmd);
printf_s("%o\n", GetCpuByCmd);
printf_s("%x\n", GetCpuByCmd);
printf_s("%p\n\n", GetCpuByCmd);
system("wmic CPU get ProcessorID ");
system("PAUSE");
}
加入後程式就可以執行了
但是結果跟我用
system("wmic CPU get ProcessorID ");
所顯示的CpuID並不相同
輸出圖:
http://i.imgur.com/Xmf5YCX.jpg
想請問各位前輩
我該用哪種方式輸出我的結果?
程式碼(Code):(請善用置底文網頁, 記得排版)
.h檔:
http://codepad.org/CXZyWe42
.h檔(圖):
http://i.imgur.com/BhGCP7s.jpg
.cpp:
http://codepad.org/3Mgq8Anz
補充說明(Supplement):
另外小弟有試過用這種方式儲存結果
string str1;
str1 = system("wmic CPU get ProcessorID ");
printf_s("%s",str1);
可是很明顯的,事情不是我這種憨人想的這麼簡單...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.59.114
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1496806078.A.36B.html
※ 編輯: chingyue (122.116.59.114), 06/07/2017 11:29:27
1F:推 jerryh001: GetCpuByCmd 是函數 .h有寫要傳字元陣列給他 06/07 11:36
不好意思 我剛剛看了一下程式碼
可是我還是不清楚要傳什麼樣的字元陣列給他...
能不能麻煩前輩舉個例子呢? 謝謝您!
2F:→ TobyH4cker: 我直接講明,現在沒有所謂的CPU 序號 06/07 11:54
3F:→ TobyH4cker: 你可以直接放棄取CPU當作機器碼了 06/07 11:55
謝謝!
能不能跟您請教一下
那如果我要判斷看程式有沒有被搬到其他電腦,我該抓主機內的什麼值來做判斷呢?
※ 編輯: chingyue (122.116.59.114), 06/07/2017 12:13:05
4F:→ Hazukashiine: 找網卡MAC跟主機板序號 來做Hash 06/07 12:36
好的 謝謝您
我會再去GOOGLE試看看!
※ 編輯: chingyue (122.116.59.114), 06/07/2017 15:07:02
5F:推 jerryh001: 理論上作者應該會寫每個參數傳什麼 我猜是傳空的陣列進 06/07 16:30
6F:→ jerryh001: 去 然後他會把陣列修改成CPU名字 06/07 16:30
7F:推 libertyleave: 你可以嘗試 wmic CPU get ProcessorID >> cpu.txt 06/07 17:05
8F:→ libertyleave: 然後再從檔案理面讀取 06/07 17:06
謝謝!
我沒有想到還有這種方法!!
我明天會查一下用法在嘗試看看!
9F:→ libertyleave: 或者你可以參考這篇對岸文章 是讀主機板的 不過原理 06/07 17:08
11F:→ libertyleave: 喔 我看了一下 code 跟網頁寫的是同樣的東西 06/07 17:24
12F:→ libertyleave: 你需要先宣告一個 char cpuArr[128] 06/07 17:25
13F:→ libertyleave: 然後這樣呼叫 GetCpuByCmd(cpuArr,128) 06/07 17:26
14F:→ libertyleave: 然後輸出 cpuArr 就好 06/07 17:27
非常謝謝您!
能成功顯示了!
不過後面會跟一串亂碼...
輸出結果圖:
http://i.imgur.com/S8NA91C.jpg
我有試著修改陣列大小跟傳入函數的值
可是結果都一樣會出現亂碼
請問我是不是有哪邊需要修改的?
※ 編輯: chingyue (122.116.59.114), 06/07/2017 19:00:54
15F:→ james732: 跟亂碼應該是字串最後沒有結束字元 06/07 19:03
16F:推 jerryh001: 貌似他沒幫你最後加\0 你宣告的時候先自己初始化成0吧 06/07 19:05
可以了!!
非常謝謝兩位!
宣告改成char cpuArr[128]=""; 就可以成功執行了!
※ 編輯: chingyue (122.116.59.114), 06/07/2017 19:08:10
17F:噓 pttuser: 沒有main…………… 06/18 00:00