[問題] VC++ 讀取CpuID 該用什麼輸出格式?

看板C_and_CPP (C/C++)作者 (ChingYue)時間8年前 (2017/06/07 11:27), 8年前編輯推噓3(4112)
留言17則, 6人參與, 最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1496806078.A.36B.html ※ 編輯: chingyue (122.116.59.114), 06/07/2017 11:29:27

06/07 11:36, , 1F
GetCpuByCmd 是函數 .h有寫要傳字元陣列給他
06/07 11:36, 1F
不好意思 我剛剛看了一下程式碼 可是我還是不清楚要傳什麼樣的字元陣列給他... 能不能麻煩前輩舉個例子呢? 謝謝您!

06/07 11:54, , 2F
我直接講明,現在沒有所謂的CPU 序號
06/07 11:54, 2F

06/07 11:55, , 3F
你可以直接放棄取CPU當作機器碼了
06/07 11:55, 3F
謝謝! 能不能跟您請教一下 那如果我要判斷看程式有沒有被搬到其他電腦,我該抓主機內的什麼值來做判斷呢? ※ 編輯: chingyue (122.116.59.114), 06/07/2017 12:13:05

06/07 12:36, , 4F
找網卡MAC跟主機板序號 來做Hash
06/07 12:36, 4F
好的 謝謝您 我會再去GOOGLE試看看! ※ 編輯: chingyue (122.116.59.114), 06/07/2017 15:07:02

06/07 16:30, , 5F
理論上作者應該會寫每個參數傳什麼 我猜是傳空的陣列進
06/07 16:30, 5F

06/07 16:30, , 6F
去 然後他會把陣列修改成CPU名字
06/07 16:30, 6F

06/07 17:05, , 7F
你可以嘗試 wmic CPU get ProcessorID >> cpu.txt
06/07 17:05, 7F

06/07 17:06, , 8F
然後再從檔案理面讀取
06/07 17:06, 8F
謝謝! 我沒有想到還有這種方法!! 我明天會查一下用法在嘗試看看!

06/07 17:08, , 9F
或者你可以參考這篇對岸文章 是讀主機板的 不過原理
06/07 17:08, 9F

06/07 17:09, , 10F
06/07 17:09, 10F

06/07 17:24, , 11F
喔 我看了一下 code 跟網頁寫的是同樣的東西
06/07 17:24, 11F

06/07 17:25, , 12F
你需要先宣告一個 char cpuArr[128]
06/07 17:25, 12F

06/07 17:26, , 13F
然後這樣呼叫 GetCpuByCmd(cpuArr,128)
06/07 17:26, 13F

06/07 17:27, , 14F
然後輸出 cpuArr 就好
06/07 17:27, 14F
非常謝謝您! 能成功顯示了! 不過後面會跟一串亂碼... 輸出結果圖:http://i.imgur.com/S8NA91C.jpg
我有試著修改陣列大小跟傳入函數的值 可是結果都一樣會出現亂碼 請問我是不是有哪邊需要修改的? ※ 編輯: chingyue (122.116.59.114), 06/07/2017 19:00:54

06/07 19:03, , 15F
跟亂碼應該是字串最後沒有結束字元
06/07 19:03, 15F

06/07 19:05, , 16F
貌似他沒幫你最後加\0 你宣告的時候先自己初始化成0吧
06/07 19:05, 16F
可以了!! 非常謝謝兩位! 宣告改成char cpuArr[128]=""; 就可以成功執行了! ※ 編輯: chingyue (122.116.59.114), 06/07/2017 19:08:10

06/18 00:00, , 17F
沒有main……………
06/18 00:00, 17F
文章代碼(AID): #1PDtA-Dh (C_and_CPP)
文章代碼(AID): #1PDtA-Dh (C_and_CPP)