用C语言实现禁用网卡的代码 m8 @" r6 S4 Z4 {- q7 x
#include
) I" D! F0 ^- E& p" U7 z" ^: Q #include * G% t! d7 B# M0 x
#include 4 Z) A2 e& A" c% `" O
#include ) @& a+ F9 |# E# Y
void EnumDevices(HDEVINFO hDevInfo); [/ f E/ r4 G( P- X
{
/ m. r1 |: T$ P SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};: s0 N8 m7 c* @! t9 H
LPOLESTR guid;6 O. I7 ]( Q! L5 r4 A
char devName[128];0 g$ e) L+ r* F! \* C; d! J
char instanceId[128];
! z; x0 ~: ?+ k0 {* G for (int i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)* h: \$ `: l; F( M. m7 s" g
{
/ s0 d% ?; [$ R; y( l, n7 s4 S8 m StringFromCLSID(DeviceInfoData.ClassGuid,&guid);. O8 X7 Y; t3 g# w* I1 }( n% {
SetupDiClassNameFromGuid(&DeviceInfoData.ClassGuid,devName,128,NULL);2 A' L! Z( a, y0 e
if(!strcmp(devName,"Net")); C" Q3 l- B& T9 S8 e+ l
{
/ o$ _: T& ~9 @ SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,instanceId,128,NULL);
5 U# A2 j+ ^/ ?* W9 g if(!strncmp(instanceId,"PCI",3))
" _& B" U6 m I: D {9 C) Q+ \' v- d* H
wprintf(L"%s\n",guid);" w. T" J. N+ Z
printf("%s\n",devName);
( |" p4 u, N/ I3 ? printf("%s\n",instanceId);7 \2 f& w r" J( R& y) B5 B
SP_PROPCHANGE_PARAMS params = {sizeof(SP_CLASSINSTALL_HEADER )};- P( y6 l. c- ~1 }2 v: h* I
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
' k3 I' Z: g5 x2 R9 Z params.Scope = DICS_FLAG_CONFIGSPECIFIC;
* O& R: _3 ^2 `9 E; s; s0 Z' y params.StateChange = DICS_DISABLE;9 A, e( n8 D6 J* w4 N+ h
params.HwProfile = 0;
8 ?* j" d! d9 v; O1 ^ SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER*)¶ms, sizeof(SP_PROPCHANGE_PARAMS));
4 b; Y- p3 H$ ]( K: n8 [! [ SetupDiChangeState(hDevInfo, &DeviceInfoData);
: _. Q- f6 o! e: H }
$ R8 s4 V: V! e6 f+ h. V/ j6 ]6 d0 I } e5 F! m! Q% M4 g7 `, Z
CoTaskMemFree(guid);% a1 H/ i% a2 v4 [
}
4 a) }% B! z' r* ~' _9 a }# j2 I9 t0 w3 n- d8 c. H3 b* ~
int main(int argc, char* argv[])
|8 Y1 g9 S+ y6 d {
x" R- Z0 N. z" ^. j4 A o4 b HDEVINFO hDevInfo = INVALID_HANDLE_VALUE;
5 J1 k1 v3 {+ B* [ hDevInfo = SetupDiGetClassDevs(NULL,NULL,NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);
5 ^6 A- I; x8 W/ m b% [ if(INVALID_HANDLE_VALUE == hDevInfo)
; f$ e7 o z# p return GetLastError();; \' P7 Z, E6 Q- x% l- ~
EnumDevices(hDevInfo);
- m% \( ]/ r( z SetupDiDestroyDeviceInfoList(hDevInfo);
8 d& E# I+ u+ F7 |( z4 L return 0;5 W# R/ H( @- q5 i9 o
} |