VC使用WMI獲取活動的網絡卡列表

2021-07-06 00:23:22 字數 2234 閱讀 2576

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

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

int main(void) //主函式,程式的入口

// 設定com的安全認證級別

hres = coinitializesecurity(

null,

-1,

null,

null,

rpc_c_authn_level_default,

rpc_c_imp_level_impersonate,

null,

eoac_none,

null

);

if( failed(hres) )

// 獲得wmi連線com介面

iwbemlocator *ploc = null;

hres = cocreateinstance(

clsid_wbemlocator,

null,

clsctx_inproc_server,

iid_iwbemlocator,

reinterpret_cast(&ploc)

);

if( failed(hres) )

// 通過連線介面連線wmi的核心物件名"root//cimv2"

iwbemservices *psvc = null;

hres = ploc->connectserver(

_bstr_t( l"root\\cimv2" ),

null,

null,

null,

0,

null,

null,

&psvc

);

if( failed(hres) )

// 設定請求**的安全級別

hres = cosetproxyblanket(

psvc,

rpc_c_authn_winnt,

rpc_c_authz_none,

null,

rpc_c_authn_level_call,

rpc_c_imp_level_impersonate,

null,

eoac_none

);

if( failed(hres) )

// 通過請求**來向wmi傳送請求

ienumwbemclassobject *penumerator = null;

hres = psvc->execquery(

bstr_t("wql"),

bstr_t( "select * from win32_networkadapter where netconnectionstatus =2" ),

wbem_flag_forward_only | wbem_flag_return_immediately,

null,

&penumerator

);

if( failed(hres) )

// 迴圈列舉所有的結果物件

while( penumerator )

// 獲取屬性值

variant vtproperty;

variantinit( &vtproperty );

pclsobj->get( bstr_t("name"), 0, &vtproperty, null, null );

printf("%s\n", w2a(vtproperty.bstrval));

variantclear( &vtproperty );

pclsobj->release();

} // end while

// 釋放資源

penumerator->release();

psvc->release();

ploc->release();

couninitialize();

return 0;

}

VC 獲取物理網絡卡的MAC位址

獲取網絡卡的mac位址的方法很多,如 netbios,snmp,getadaptersinfo等。經過測試發現 netbios 方法在網線拔出的情況下獲取不到mac,而 snmp方法有時會獲取多個重複的網絡卡的mac,試來試去還是 getadaptersinfo方法比較好,網線拔出的情況下可以獲取m...

c ,使用WMI物件獲取系統的DPI。

在使用wmi物件前,先要新增對system.management的引用,然後就可以呼叫wmi物件。我們使用的wmi物件是 win32 desktopmonitor 物件參考 static void main string args console.writeline pixelsperxlogica...

c ,使用WMI物件獲取系統的DPI。

在使用wmi物件前,先要新增對system.management的引用,然後就可以呼叫wmi物件。我們使用的wmi物件是 win32 desktopmonitor 物件參考 static void main string args console.writeline pixelsperxlogica...