c#实现禁用启用网卡

saybookcat 2013-12-10 03:28:38
需要在XP和WIN8上兼容。

各位有什么好的方式?
...全文
669 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 15 楼 xxdddail 的回复:
直接用bat。 ipconfig /release ipconfig /renew
测试要求目标连接必须启用DHCP才行,不过这个算是最省事的了
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
引用 16 楼 dongxinxi 的回复:
还有一种你没有提到,那就是利用win api,主要用到 SetupDiChangeState传入DICS_DISABLE标记,SetupDiEnumDeviceInfo枚举 不过由于要和硬件设备打交道,最好还是用C++写成一个dll让.net程序调用 http://bbs.csdn.net/topics/110052654
谢谢。我来研究一下。主要是不会c++. 自己先弄个c++调试看看。
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
引用 15 楼 xxdddail 的回复:
直接用bat。 ipconfig /release ipconfig /renew
谢谢 如果不是需求BT,要求禁止启动网卡,而是网络断开和重连,那么这种方式就可以了。 ipconfig /renew 不能把禁用状态的网卡启动起来。
  • 打赏
  • 举报
回复
还有一种你没有提到,那就是利用win api,主要用到 SetupDiChangeState传入DICS_DISABLE标记,SetupDiEnumDeviceInfo枚举 不过由于要和硬件设备打交道,最好还是用C++写成一个dll让.net程序调用 http://bbs.csdn.net/topics/110052654
_学而时习之_ 2013-12-10
  • 打赏
  • 举报
回复
直接用bat。 ipconfig /release ipconfig /renew
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
对于方式4 并未替换 C:\\WINDOWS\\system32\\ifmon.dll文件为2003中的该文件。
  • 打赏
  • 举报
回复
引用 10 楼 saybookcat 的回复:
[quote=引用 8 楼 dongxinxi 的回复:] 阉割版或者装了安全工具的就不好说了
不是阉割版。是需要额外引用2003系统中的dll[/quote] 那难怪了,刚才测试用的刚好是x64位版的xp 它的版本描述中还带了个版本2003,其实很多东西和2003一样
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
回复11# 方式1由于只适用xp,所以排除了 方式2和方式4之前试过。 方式2中ManagementObject.InvokeMethod("Disable", null)会提示参数无效, 方式4提示“此名称的接口未与路由器一起注册。” 应该指的是netsh.exe命令未出测。 方式3没试过,这个要安装devcon.exe。
dylike 2013-12-10
  • 打赏
  • 举报
回复
引用 9 楼 saybookcat 的回复:
先来说说我所知道的几种方式 1.Shell32方式 通过调用Shell32.dll,模拟鼠标右键操作禁用网卡。 控制面板->网络连接->要查找的网卡->该网卡的右键菜单->调用启用或禁用操作 只能在xp下应用。 2.WMI方式 1楼代码中有用到的ManagementObject类,ManagementObject.InvokeMethod("Disable", null)来实现的。 适用于win7和vista。在其他系统中很悲剧。。。 3.devcon.exe方式 通过安装devcon.exe插件,通过命令来实现。 因为需要安装软件,所以不是很想采用这一种。 目前支持xp 2003 至于win7 win8是否支持还没测试过。 4.netsh方式 6楼代码中的命令其实就是netsh方式。 目前测试xp win8是不支持的。不过好像有方式可以实现xp的支持。
把几种方式都执行一次,catch掉报错信息就行了,总之都试一次。
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
引用 8 楼 dongxinxi 的回复:
阉割版或者装了安全工具的就不好说了
不是阉割版。是需要额外引用2003系统中的dll
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
先来说说我所知道的几种方式 1.Shell32方式 通过调用Shell32.dll,模拟鼠标右键操作禁用网卡。 控制面板->网络连接->要查找的网卡->该网卡的右键菜单->调用启用或禁用操作 只能在xp下应用。 2.WMI方式 1楼代码中有用到的ManagementObject类,ManagementObject.InvokeMethod("Disable", null)来实现的。 适用于win7和vista。在其他系统中很悲剧。。。 3.devcon.exe方式 通过安装devcon.exe插件,通过命令来实现。 因为需要安装软件,所以不是很想采用这一种。 目前支持xp 2003 至于win7 win8是否支持还没测试过。 4.netsh方式 6楼代码中的命令其实就是netsh方式。 目前测试xp win8是不支持的。不过好像有方式可以实现xp的支持。
  • 打赏
  • 举报
回复
阉割版或者装了安全工具的就不好说了
  • 打赏
  • 举报
回复
经测试是支持的,是一个shell命令集工具
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
引用 3 楼 dongxinxi 的回复:
如果你熟悉,可以用shell命令 找到一个vbs调批处理你改下
'Code By Coo_boi
'Cmd operates the Net-Connections
Dim owSh,Operations
cmd="cmd.exe /c netsh interface set interface name=" & Chr(34) & "本地连接" & Chr(34) & " admin=" 
Operations=InputBox("1.禁用" & vbNewLine & "2.启用","本地连接")
If Operations="" Then WScript.Quit
Set owSh=CreateObject("Wscript.Shell")
If Operations="1" Then 
    Operations="DISABLE"
ElseIf Operations="2" Then 
    Operations="ENABLE"
End If 
cmd=cmd & Operations
owSh.Run cmd,True
Set owSh=Nothing
我直接建立了一个vbs文件运行,好像不起作用 netsh 这个命令用我记得好像xp是不支持的。在2003里面可以用
  • 打赏
  • 举报
回复
你用C# Process.Start启动就行
  • 打赏
  • 举报
回复
建议直接使用命令行,你可以直接执行命令行。
  • 打赏
  • 举报
回复
如果你熟悉,可以用shell命令 找到一个vbs调批处理你改下
'Code By Coo_boi
'Cmd operates the Net-Connections
Dim owSh,Operations
cmd="cmd.exe /c netsh interface set interface name=" & Chr(34) & "本地连接" & Chr(34) & " admin=" 
Operations=InputBox("1.禁用" & vbNewLine & "2.启用","本地连接")
If Operations="" Then WScript.Quit
Set owSh=CreateObject("Wscript.Shell")
If Operations="1" Then 
    Operations="DISABLE"
ElseIf Operations="2" Then 
    Operations="ENABLE"
End If 
cmd=cmd & Operations
owSh.Run cmd,True
Set owSh=Nothing
saybookcat 2013-12-10
  • 打赏
  • 举报
回复
引用 1 楼 yeqi3000 的回复:
供参考,兼容否,自己写了测试吧。 http://download.csdn.net/detail/yeqi3000/5383213
ManagementObject.InvokeMethod("Disable", null)方式 在xp和win8下是不能使用的。 倒是可以用在win7 和vista下
知擎物联 2013-12-10
  • 打赏
  • 举报
回复
供参考,兼容否,自己写了测试吧。
http://download.csdn.net/detail/yeqi3000/5383213

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧