2012-06-28 15 views
5

參考MSDN我修改升技的代碼,所以我可以檢索硬盤序列號Win32_PhysicalMedia的SerialNumber有時在錯誤的順序

hres = pSvc->ExecQuery(
    bstr_t("WQL"), 
    bstr_t("SELECT SerialNumber FROM Win32_PhysicalMedia"), 
    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
    NULL, 
    &pEnumerator); 
.. 
..<other code here> 
.. 
hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0); 

我轉換vtProp.bstrVal到std :: wstring的,做一個反向的字符串,我的理由必須扭轉從vtProp.bstrVal結果是因爲我發現一些我用它來獲取序列號的計算機是在錯誤的順序

例如: 電腦1回串行:W [空格] -DXW1M6EC01056,我必須做一個反向字符串,使其成爲[空格] WD-WXM1E60C0165這是正確的與標籤後放在一起比較HDD

,但是當我用 電腦2回串行測試:WD-WXM1E60C0165(我使用相同的代碼,它實際上正確時返回我檢查與硬盤的序列號標籤) 如果我的代碼做一個反向的字符串,它會成爲W [空格] -DXW1M6EC01056

我既電腦檢查,這是小端,我不知道無論它是否與Endianness有關。

有什麼不同的順序返回結果? HDD製造商/品牌? 我在Windows XP Pro中運行程序以獲得所有測試結果。

+1

可能重複HTTP ://stackoverflow.com/questions/10989338/wmi-hdd-serial-number-transposed) –

+1

它看起來像有人面臨類似的問題,我想找到一種方法來知道何時以及爲什麼有時它是錯誤的順序比較硬盤上的標籤/貼紙。 我使用的退貨序列號用於許可目的,如果機器/計算機總是返回錯誤的訂單,當我的許可機制比較HDD序列時,它可能會也可能不會導致任何問題。 – hghew

+0

其中一個鏈接的文章有一個工作解決方案。你不能依賴於WMI。 –

回答