日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 禁用网卡_如何编程实现启用禁用网卡

發(fā)布時間:2023/12/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 禁用网卡_如何编程实现启用禁用网卡 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

展開全部

/*****************************************************************************

演示如何編程62616964757a686964616fe58685e5aeb931333335343935實現(xiàn)啟用禁用網(wǎng)卡

Mady

By ZwelL

2004.7.29

zwell@sohu.com

*****************************************************************************/

#include

#include

#include

#include

#pragma

comment(lib,”ws2_32.lib”)

#pragma

comment(lib,”setupapi.lib”)

BOOL DisableNetInterface(bool bStatus)

{

IN LPTSTR HardwareId

;

//硬件ComponentId,注冊表地址:system\currentcontrolset\class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000

HardwareId=”PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC” ;

DWORD NewState ;

if(bStatus)

{

NewState=DICS_DISABLE ;

//禁用

}

else

{

NewState=DICS_ENABLE ;

//啟用

}

//調(diào)用ddk函數(shù),來禁用網(wǎng)卡

DWORD i,err ;

BOOL Found=false

;

HDEVINFO hDevInfo ;

SP_DEVINFO_DATA spDevInfoData

;

//訪問系統(tǒng)的硬件庫

hDevInfo=SetupDiGetClassDevs(NULL,”PCI”,NULL,DIGCF_ALLCLASSES|DIGCF_PRESENT);

if(hDevInfo==INVALID_HANDLE_VALUE)

{

printf(”訪問系統(tǒng)硬件出錯!”);

return false ;

}

//枚舉硬件,獲得需要的接口

spDevInfoData.cbSize=sizeof(SP_DEVINFO_DATA);

for(i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&spDevInfoData);i++)

{

DWORD DataT ;

LPTSTR p,buffer=NULL ;

DWORD

buffersize=0 ;

//獲得硬件的屬性值

while(!SetupDiGetDeviceRegistryProperty(

hDevInfo,

&spDevInfoData,

SPDRP_HARDWAREID,

&DataT,

(PBYTE)buffer,

buffersize,

&buffersize))

{

if(GetLastError()==ERROR_INVALID_DATA)

{

//不存在HardwareID. Continue.

break

;

}

else

if(GetLastError()==ERROR_INSUFFICIENT_BUFFER)

{

//buffer size不對.

if(buffer)

LocalFree(buffer);

buffer=(char*)LocalAlloc(LPTR,buffersize);

}

else

{

//未知錯誤

goto

cleanup_DeviceInfo ;

}

}

if(GetLastError()==ERROR_INVALID_DATA)

continue

;

//比較,找到和網(wǎng)卡ID相同的項

for(p=buffer;*p&&(p

{

if(!_tcscmp(HardwareId,p))

{

//找到網(wǎng)卡

Found=TRUE ;

break ;

}

}

if(buffer)

LocalFree(buffer);

//如果相等

if(Found)

{

//禁用該設(shè)備

SP_PROPCHANGE_PARAMS spPropChangeParams

;

spPropChangeParams.ClassInstallHeader.cbSize=sizeof(SP_CLASSINSTALL_HEADER);

spPropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE

;

spPropChangeParams.Scope=DICS_FLAG_GLOBAL ;

spPropChangeParams.StateChange=NewState ;

//禁用:DICS_DISABLE,DICS_ENABLE啟用

//

if(!SetupDiSetClassInstallParams(hDevInfo,&spDevInfoData,(SP_CLASSINSTALL_HEADER*)&spPropChangeParams,sizeof(spPropChangeParams)))

{

DWORD errorcode=GetLastError();

}

if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&spDevInfoData))

{

DWORD errorcode=GetLastError();

}

switch(NewState)

{

case DICS_DISABLE

:

printf(”成功禁用網(wǎng)絡(luò)!”);

break ;

case

DICS_ENABLE :

printf(”成功啟用網(wǎng)絡(luò)!”);

break

;

}

break ;

}

}

//退出時,清理工作環(huán)境

cleanup_DeviceInfo

:

err=GetLastError();

SetupDiDestroyDeviceInfoList(hDevInfo);

SetLastError(err);

return true ;

}

void usage(char *exefile)

{

printf(”Usage:%s [-e|-d]\r\n”,

exefile);

printf(”\t-e: Enable the network card.\r\n”);

printf(”\t-d:

Disable the network card.\r\n”);

exit(0);

}

int main(int

argc,char**argv)

{

if(argc<2)

usage(argv[0]);

if(!DisableNetInterface((strstr(argv[1],”-d”)>0?TRUE:FALSE)))

printf(”對網(wǎng)卡操作失敗!”);

return 0;

}

//————————————————————————————————————

例子二:

#include

#include

#include

#include

#pragma comment (lib,”setupapi”)

#define UnknownDevice TEXT(””)

HDEVINFO hDevInfo = 0;

BOOL StateChange(DWORD NewState, DWORD SelectedItem,HDEVINFO

hDevInfo)

{

SP_PROPCHANGE_PARAMS PropChangeParams =

{sizeof(SP_CLASSINSTALL_HEADER)};

SP_DEVINFO_DATA DeviceInfoData =

{sizeof(SP_DEVINFO_DATA)};

HCURSOR hCursor;

//

// This may take a while :^(

//

hCursor =

SetCursor(LoadCursor(NULL, IDC_WAIT));

//

// Get a handle to the Selected Item.

//

if

(!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))

{

printf(”EnumDeviceInfo”);

return FALSE;

}

//

// Set the PropChangeParams structure.

//

PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;

PropChangeParams.Scope = DICS_FLAG_GLOBAL;

PropChangeParams.StateChange =

NewState;

if (!SetupDiSetClassInstallParams(hDevInfo,

&DeviceInfoData,

(SP_CLASSINSTALL_HEADER

*)&PropChangeParams,

sizeof(PropChangeParams)))

{

printf(”SetClassInstallParams”);

SetCursor(hCursor);

return FALSE;

}

//

// Call the ClassInstaller and perform the change.

//

if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,

hDevInfo,

&DeviceInfoData))

{

printf(”SetClassInstallParams”);

SetCursor(hCursor);

return TRUE;

}

SetCursor(hCursor);

return TRUE;

}

BOOL IsClassNet( GUID * ClassGuid )

{

#define MAX_NUM 50

HKEY hKeyClass;

LONG lRet;

char

ClassType[MAX_NUM];

char NetClass[MAX_NUM] = “Net”;

DWORD dwLength =

MAX_NUM,dwType = REG_SZ;

if (hKeyClass =

SetupDiOpenClassRegKey(ClassGuid,KEY_READ))

{

lRet =

RegQueryValueEx(hKeyClass,

TEXT(”Class”),

NULL,

&dwType, LPBYTE(ClassType), &dwLength);

RegCloseKey(hKeyClass);

if (lRet != ERROR_SUCCESS)

return FALSE;

if (!strcmp(ClassType,NetClass))

return TRUE;

}

return FALSE;

}

int main(int argc, char* argv[])

{

if (INVALID_HANDLE_VALUE ==

(hDevInfo =

SetupDiGetClassDevs(NULL,NULL,0,

DIGCF_PRESENT|DIGCF_ALLCLASSES)))

{

printf(”GetClassDevs”);

return 0;

}

DWORD i, Status, Problem;

SP_DEVINFO_DATA DeviceInfoData =

{sizeof(SP_DEVINFO_DATA)};

HKEY hKeyClass;

char DeviceName[200];

for

(i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)

{

if

(IsClassNet(&DeviceInfoData.ClassGuid))

{

//printf(” the class’s

index is %d\n”,i);

//DICS_DISABLE–>禁用網(wǎng)絡(luò)

//DICS_ENABLE—>恢復(fù)網(wǎng)絡(luò)

if

(StateChange(DICS_ENABLE,i,hDevInfo))

printf(”.”);

//printf(”NetWork

%s”, (DICS_ENABLE)?”enabled”:”disabled”);

}

}

return 0;

}

本回答由電腦網(wǎng)絡(luò)分類達(dá)人 郭強(qiáng)推薦

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結(jié)

以上是生活随笔為你收集整理的python 禁用网卡_如何编程实现启用禁用网卡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。