Win7下使用WMI獲取移動磁碟序列號

2021-06-30 16:06:44 字數 3533 閱讀 2636

使用wmi方式來獲取移動磁碟序列號僅支援vista及以上系統。網上有些資料顯示,在xp系統下能夠使用wmi獲取序列號,我反正試過了都不行。後來在證實了這一點!廢話少說,直接上**:

#include #include #pragma comment(lib,"wbemuuid.lib")

hresult getserialnumber(void)

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) && rpc_e_too_late != hres)

hres = cocreateinstance(clsid_wbemlocator, 0, \

clsctx_inproc_server, iid_iwbemlocator, (lpvoid *) &pwbemloc);

if (failed(hres))

hres = pwbemloc->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

&pwbemsvc // pointer to iwbemservices proxy

);if (failed(hres))

hres = cosetproxyblanket(

pwbemsvc, // indicates the proxy to set

rpc_c_authn_winnt, // rpc_c_authn_***

rpc_c_authz_none, // rpc_c_authz_***

null, // server principal name

rpc_c_authn_level_call, // rpc_c_authn_level_***

rpc_c_imp_level_impersonate, // rpc_c_imp_level_***

null, // client identity

eoac_none // proxy capabilities

);if (failed(hres))

uses_conversion;

variant vtprop;

ulong uret = 0;

ienumwbemclassobject* penumclsobj = null;

iwbemclassobject* pwbemclsobj = null;

ccombstr strquery("select * from win32_diskdrive where inte***cetype='usb'");

hres = pwbemsvc->execquery(ccombstr("wql"), strquery, \

wbem_flag_forward_only | wbem_flag_return_immediately, \

0, &penumclsobj);

if (failed(hres))

pwbemsvc->release();

pwbemloc->release();

couninitialize();

return hres;

} variantinit(&vtprop);

cstringarray strarray1;

cstringarray strarray2;

cstringarray strarray3;

while (succeeded(penumclsobj->next(wbem_infinite, 1, &pwbemclsobj, &uret)))

//獲取物理磁碟號:\\.\physicaldrive0

hres = pwbemclsobj->get(ccombstr(_t("deviceid")), 0, &vtprop, 0, 0);

strarray1.add(analizevariant(&vtprop));

variantclear(&vtprop);

//獲取磁碟名稱

hres = pwbemclsobj->get(ccombstr(_t("model")), 0, &vtprop, 0, 0);

strarray2.add(analizevariant(&vtprop));

variantclear(&vtprop);

//獲取磁碟序列號

hres = pwbemclsobj->get(ccombstr(_t("serialnumber")), 0, &vtprop, 0, 0);

strarray3.add(analizevariant(&vtprop));

variantclear(&vtprop);

} variantclear(&vtprop);

if (penumclsobj != null)

if (pwbemclsobj != null)

pwbemsvc->release();

pwbemloc->release();

couninitialize();

return s_ok;

}

以上**已在win7 + vs 2008上測試通過。

win7 下git初級使用

今天來了解下git的基本使用 之前已經搭建好git服務,現在就來學習下git的使用.1.檔案修改與提交 計算機開始選單欄開啟git bash 切換到版本庫目錄 例如 cd g www gitserverrepository 建立乙個新目錄最為第乙個專案目錄 mkdir mylove 然後切換到改目錄...

Win7 下安裝與使用Curl

這是在我學nodejs時看到書上乙個例項用到了curl,所以就學習一下。curl是利用url語法在命令列方式下工作的開源檔案傳輸工具 curl 是乙個強大的命令列http客戶端,可以用來向目標伺服器傳送請求。所以可以使用curl代替web瀏覽器跟web服務互動。2 官網 2 為了測試curl命令,我...

Win7下安裝與使用Qwt

windows 7 專業版 64bit qt opensource windows x86 mingw530 5.7.0 qwt 6.1.3.zip qwt 6.1.3.qch 搭建好qt環境 把qwt 6.1.3.qch移動到 c qt qt5.7.0 docs qt 5.7 中 找到並開啟qt ...