关闭Windows 系统当前连接的Wifi以及判断物理\虚拟网卡,有线\无线网卡
1.关闭wifi ,调用Api
[DllImport("Wlanapi.dll", SetLastError = true)]
public static extern uint WlanDisconnect(IntPtr hClientHandle, ref Guid pInterfaceGuid, IntPtr pReserved);
2.获取当前连接wifi 网卡句柄
The WlanOpenHandle function opens a connection to the server.
就是为了返回 ClientHandle ,传入WlanDisconnect(...) 中的hClientHandle 的参数。
官方解释【A handle for the client to use in this session. This handle is used by other functions throughout the session.】
[DllImport("Wlanapi.dll")]
private static extern int WlanOpenHandle(uint dwClientVersion, IntPtr pReserved, [Out]out uint pdwNegotiatedVersion, out IntPtr ClientHandle);
3.WlanDisconnect(...)中还有一个参数pInterfaceGuid要获取,就是真实网卡(安装了虚拟机要虚拟网卡)的唯一标识符,无线和有线还不一样。
3.1 真实网卡可以通过Win32_NetworkAdapter(可以查询此类的属性,其中有【GUID】) 获取,因为真实网卡的 PNPDeviceID 都是【PCI】开头
SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus= AND PNPDeviceID LIKE 'PCI%'");
以上 获取了已连接的真实网卡,笔记本一般有无线和有线网卡,如果无线和有线都连接,获取了两条记录,NetConnectionStatus 条件是连接状态 【2】:已连接,【7】:未连接。
3.2通过Win32_NetworkAdapter我们可以获取 真实网卡的唯一标识符 GUID. 区别有线还是无线,我们可以通过注册表判断注册表路径:HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\【GUID】\Connection
路径下的键值 MediaSubType,如果Value=2,表示无线网卡。
4. 最终形成
public static bool Disconnect()
{
IntPtr _clientHandle = IntPtr.Zero;
uint negotiatedVersion;
int code = WlanOpenHandle(, IntPtr.Zero, out negotiatedVersion, out _clientHandle);
NetworkInterface[] _interface = NetworkInterface.GetAllNetworkInterfaces();
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
@"SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2 AND PNPDeviceID LIKE 'PCI%'");
string GUID = "";
foreach (ManagementObject mo in searcher.Get())
{
GUID = mo["GUID"].ToString().Trim();
Console.WriteLine(GUID);
var registryKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" + GUID + "\\Connection", false);
if (registryKey != null)
{
var mediaSubTypevalue = registryKey.GetValue("MediaSubType");
if (mediaSubTypevalue != null)
{
int num;
int.TryParse(mediaSubTypevalue.ToString(), out num);
if (num == )
{
Guid netIfaceGuid = new Guid(GUID);
var ERROR_SUCCESS = WlanDisconnect(_clientHandle, ref netIfaceGuid, IntPtr.Zero);
if (ERROR_SUCCESS == )
{
return true;
}
WlanCloseHandle(_clientHandle, IntPtr.Zero);//不确定
}
}
}
}
return false;
}
5.后记
我用的是NativeWifi 类库,进行打开wifi的,NativeWifi 也是封装了windows 的Wlanapi.dll 的方法。但是没有关闭连接wifi方法,所以只能自己写。
文章参考:
有线网卡与无线网卡、物理网卡与虚拟网卡的区分
关闭Windows 系统当前连接的Wifi以及判断物理\虚拟网卡,有线\无线网卡的更多相关文章
- windows系统同时连接多个openvpn账户
windows系统同时连接多个openvpn账户. 前提 客户端系统:Windows7 64位 OpenVPN版本:OpenVPN 2.3.10 Windows 64位 一.安装 1.安装目录 D:\ ...
- Selenium关闭windows系统弹窗
Selenium关闭windows系统弹窗 背景:在使用某业务时,会弹出windows框 提示要打印某个文本,效果如下,而正常脚本执行完了后,关闭了driver,windows的弹框还是不会消失,这时 ...
- 关闭windows系统的危险端口,命令行
防火墙启用,增加禁用端口提供给外部访问 @echo off color E2 title 关闭常见的危险端口 echo 正在开启Windows防火墙 echo. netsh advfirewall s ...
- 关于win10系统安装VMware12Pro后,win10系统的 控制面板\网络和 Internet\网络连接\更改适配器选项卡中 没有虚拟网卡VMnet1和VMnet8图标,该如何把他们显示出来呢?
安装VMware12Pro后,PC主机通过命令行:ipconfig/all ,查看发现没有VMnet1和VMnet8. 然后我首先尝试打开VMware12Pro的虚拟网络编辑器: 然后先点击" ...
- 使用Windows系统远程连接Windows server服务器
点击开始菜单->运行 (或者 windows+R) ,输入"mstsc"命令, 打开远程桌面连接对话框,输入你要连接的Windows server服务器的公网IP. 点击 ...
- 删除windows系统中以前的设备(比如以前的网卡)或驱动的方法
1.在“开始”菜单单击“运行”,然后在“运行”对话框中输入“CMD”命令打开命令提示符窗口:2.在提示符窗口中输入“Set devmgr_show_nonpresent_devices=1”并回车:3 ...
- CentOS6.5下搭建Samba服务实现与Windows系统之间共享文件资源
FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情. 1987年,微软公司和英 ...
- 本地Windows远程桌面连接阿里云Ubuntu服务器
本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: 1.目的:希望通过本地的Windows远程桌面连接到阿里云的Ubuntu服务器,通过远程桌面图形界面的方式操作服务器. 2.条件: ...
- windows 系统文件夹挂载到 Linux 系统,拷贝(发送)文件到 windows 系统,实现异地备份
1.在windows 系统上配置好共享文件夹,用来接收Linux 系统的文件 注意:关闭windows 系统防火墙,或者添加进出站规则 2.在Linux 系统中,创建需要拷贝的文件目录 #mkdi ...
随机推荐
- CPU制造全过程(图文全解)
沙子:硅是地壳内第二丰富的元素,而脱氧后的沙子(尤其是石英)最多包含25%的硅元素,以二氧化硅(SiO2)的形式存在,这也是半导体制造产业的基础. 硅熔炼:12英寸/300毫米晶圆级.通过 ...
- 【bzoj3456】城市规划 dp+多项式求逆
Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或 ...
- iOS 开发之 GCD 基础
header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...
- 一道组合数问题--出自 曹钦翔_wc2012组合计数与动态规划
一道组合数问题--出自 曹钦翔_wc2012组合计数与动态规划 [问题描述] 众所周知,xyc 是一个宇宙大犇,他最近在给他的学弟学妹们出模拟赛. 由于 xyc 实在是太巨了,他出了一套自认为很水的毒 ...
- eclipse创建Java项目时提示Open Associated Perspective?
在eclipse中,原先使用python进行编程,需要新建java项目时,会提示如下信息: 消息框内翻译如下: Open Associated Perspective? --开放关联视角? This ...
- ubuntu 软件使用
1.制作iso: mkisofs -r -o file.iso your_folder_name/
- Hadoop Hive概念学习系列之什么是Hive?
参考 <Hadoop大数据分析与挖掘实战>的在线电子书阅读 http://yuedu.baidu.com/ebook/d128cf8e33687e21 ...
- centos6+如何对外开放80,3306端口号或者其他端口号
1.查看防火墙对外开放了哪些端口 [root@hadoop110 ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt sour ...
- Maven搭建Spring+SpringMVC+Mybatis+Shiro项目详解
一. 环境搭建: 1. 开发工具:myeclipse 2014 / IDEA: 2. maven管理版本:apache-maven-3.0+: 3. jdk 1.7.0+4. Tomcat8.0 二: ...
- 洛谷 P1800 software_NOI导刊2010提高(06)
题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...