用C语言实现禁用网卡的代码
4 Y0 g, b, ^6 e2 f) q% C7 K #include $ I9 w6 K5 y0 Y5 [8 Z( k5 z6 t
#include " \4 |/ t, G: k8 l# x
#include : y: t' ]+ I+ c- S) P! \8 N$ q0 V
#include 4 [; ?6 | L7 U3 i+ ]
void EnumDevices(HDEVINFO hDevInfo)
5 d, N: l, W, `- l {
, b J, a( V- x# Q SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};* b, A0 g9 d* O& f6 _ I4 g
LPOLESTR guid;
( W: }" S5 V4 R6 q. ^5 L char devName[128];
1 T6 M- q, D- [8 I3 H) h$ W1 ~ char instanceId[128];
( l! o4 J. `5 S; `- E" g! L; C1 v for (int i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++); D m* {% z: {' u2 I
{
' a* V$ s+ z5 Q( ~0 P StringFromCLSID(DeviceInfoData.ClassGuid,&guid);% a, y3 u; `, n
SetupDiClassNameFromGuid(&DeviceInfoData.ClassGuid,devName,128,NULL);
e7 J9 \$ p( T' n& K2 ^/ a& W5 F; ] if(!strcmp(devName,"Net"))1 ]/ J5 I5 e9 J( P* K' j, |
{" Q- W1 c6 C; E p% _8 g. I+ d
SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,instanceId,128,NULL);' v& ?, c2 X: D4 J4 @
if(!strncmp(instanceId,"PCI",3))+ M4 s! b0 v' n9 c% p; Q1 g
{
; L& i+ s% i& P wprintf(L"%s\n",guid);# [( s# w$ ]. B5 Q. I6 l2 g
printf("%s\n",devName);5 w7 N; w# a7 K1 U9 z2 j2 e
printf("%s\n",instanceId);1 ~* f0 X1 e% d5 S& w2 ?, Q" }
SP_PROPCHANGE_PARAMS params = {sizeof(SP_CLASSINSTALL_HEADER )};( \6 E7 X! ?& \* y: @
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
+ F8 x! o, b" P params.Scope = DICS_FLAG_CONFIGSPECIFIC;6 ^# T" G% @8 s! [1 c0 F( L3 F$ i
params.StateChange = DICS_DISABLE;, e+ R2 k% T5 w! @( n- P
params.HwProfile = 0;
( r/ V" R f5 N& h2 ~$ f SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER*)¶ms, sizeof(SP_PROPCHANGE_PARAMS));4 S( j7 g, W/ Q8 z( k1 s4 j# N
SetupDiChangeState(hDevInfo, &DeviceInfoData);8 A0 H7 ?: q) q4 N+ W
}
. o7 K# C9 @3 {' m& k- @ }
2 _: } G6 h2 }2 j! N, ]( J+ G CoTaskMemFree(guid);
3 }1 k' k9 @& [5 K! f4 x0 J) r }
: g0 X$ R# ^+ O7 d! S7 I }
2 Z% W& L p) N" O! Q int main(int argc, char* argv[])8 S# ?" g% K9 e' g" P! [
{
% p1 V: _$ t! h- U" q HDEVINFO hDevInfo = INVALID_HANDLE_VALUE;, i+ O1 Y& ~- Y0 \+ U1 \5 h$ ?
hDevInfo = SetupDiGetClassDevs(NULL,NULL,NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);
2 t- y3 O2 T0 J2 f0 i' U# J% \ if(INVALID_HANDLE_VALUE == hDevInfo)
; e6 {, {& n- d, T x- l( C3 d return GetLastError();
: B: @! S% `$ l8 V5 @/ L, u. K EnumDevices(hDevInfo);
" h% k, Z# @6 \3 |$ \1 G SetupDiDestroyDeviceInfoList(hDevInfo);$ @6 ~0 k! `7 Y7 X& [4 r3 }
return 0;
' q" R8 |" g0 S0 T) ^ } |