internal class Program{static void Main(string[] args){GetWlanNetworkInfo();}/// <summary>/// 获取无线网络信息/// </summary>public static void GetWlanNetworkInfo(){// 本机所有的无线网络设备foreach (WlanClient.WlanInterface wlanIface in new WlanClient().Interfaces){// 判断连接状态:未打开或打开未连接if (wlanIface.InterfaceState != Wlan.WlanInterfaceState.Connected){// 未连接无线网络则手动连接已知的无线网络ConnectionWlan(wlanIface, "shadow5", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");Console.WriteLine("已重新连接无线网络,请重新获取信息!");return;}// 当前连接的无线网络名称var currentCon = wlanIface.CurrentConnection;var cureentWlanName= currentCon.profileName;Console.WriteLine("当前无线网络设备 {0} 连接的无线网络名称(SSID) {1}", wlanIface.InterfaceName, cureentWlanName);Console.WriteLine("\n当前存在的无线网络");// 显示当前无线网络设备接收到的所有无线网络的配置// wlanIface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles)// wlanIface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllManualHiddenProfiles)foreach (Wlan.WlanAvailableNetwork network in wlanIface.GetAvailableNetworkList(0)){// 安全规则// if (network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.CCMP) { }Wlan.Dot11Ssid ssid = network.dot11Ssid;// 将 802.11 协议 转 string.string ssidStr = Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);Console.WriteLine("无线网络名称(SSID): {0}", ssidStr);}Console.WriteLine("\n历史无线网络信息");// 获取本机历史连接的无线网络配置foreach (Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles()){// 无线网络名称string profileName = profileInfo.profileName;Console.WriteLine("无线网络名称: {0}", profileName);// 配置文件string xml = wlanIface.GetProfileXml(profileInfo.profileName);Console.WriteLine("无线网络配置: {0}", xml);}}}/// <summary>/// 连接已知的无线网络,各个无线网络配置不同,配置文件按需要修改/// </summary>/// <param name="wlanIface">无线网络设备</param>/// <param name="profileName">无线网络名称(SSID)</param>/// <param name="key">网线网络密码:密码需要配置文件中加密类型加密后的字符串</param>private static void ConnectionWlan(WlanClient.WlanInterface wlanIface, string profileName, string key){// Hexstring mac = StringToHex(profileName);// 配置文件string profileXml;if (string.IsNullOrEmpty(key)){// 无需密码profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>manual</connectionMode><MSM><security><authEncryption><authentication>open</authentication><encryption>none</encryption><useOneX>false</useOneX></authEncryption></security></MSM></WLANProfile>", profileName, mac);}else{// 需要密码profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>auto</connectionMode><MSM><security><authEncryption><authentication>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>true</protected><keyMaterial>{2}</keyMaterial></sharedKey></security></MSM><MacRandomization xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v3\"><enableRandomization>false</enableRandomization><randomizationSeed>2776679953</randomizationSeed></MacRandomization></WLANProfile>", profileName, mac, key);}try{wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName);}catch(Exception e){Console.WriteLine("无线网络设备 {0} 异常: {1}",wlanIface.InterfaceName,e.Message);Process.GetCurrentProcess().Kill();}}/// <summary>  /// 字符串转Hex  /// </summary>/// <param name="str"></param>  /// <returns>Hex</returns>  private static string StringToHex(string str){StringBuilder strBuild = new StringBuilder();byte[] byStr = Encoding.Default.GetBytes(str);for (int i = 0; i < byStr.Length; i++){strBuild.Append(Convert.ToString(byStr[i], 16));}return (strBuild.ToString().ToUpper());}}

C#简单使用ManagedWifi相关推荐

  1. 在docker上安装部署tomcat项目 超简单,拿来主义

    在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...

  2. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  3. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

  4. Docker的安装、镜像源更换与简单应用

    Docker的安装.镜像源更换与简单应用[阅读时间:约20分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.Docker的安装 四.Docker的简单应用 1. ...

  5. 基于Golang的简单web服务程序开发——CloudGo

    基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...

  6. 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

    博客目录(阅读时间:10分钟) 一.win10 0.系统环境 1. win10配置golang环境 ①下载相关软件 ②创建gowork工作空间 ③配置环境变量(GOPATH+PATH) ④验证环境配置 ...

  7. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  8. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  9. java发送简单邮件_Java程序实现发送简单文本邮件

    /** * Java程序实现发送简单文本邮件 * * @author Administrator * */ public class SendTextMail { // 定义发件人地址 public  ...

最新文章

  1. 构建单层单向RNN网络对MNIST数据集分类
  2. 华为云服务器 大文件,云服务器上传大文件
  3. docker-compose部署thingsboard(docker部署thingsboard)
  4. 利用jqueryRotare实现抽奖转盘
  5. rsync error: some files/attrs were not transferred
  6. 关于SAP Kyma在国内的落地情况
  7. javaone_JavaOne 2015:高级模块化开发
  8. Python Pandas –合并,联接和串联
  9. 卖身1.8亿的背背佳身后,隐藏了一个“忽悠大师”
  10. C++_类和对象_C++继承_继承中的对象模型_占内存大小---C++语言工作笔记063
  11. C#实现CAD数据转shape或mdb
  12. arcgis 批量计算几何_计算几何_ArcGIS基础视频教程第一季_其他视频-51CTO学院
  13. 站在知乎肩上-做更强的自己(2)
  14. 矩阵快速幂 算法原理
  15. ps考证分数是用电脑改的吗
  16. 实验室设备测量超低偏置电流的实用技巧
  17. 什么是软件维护?在软件已经交付使用后,为了改正错误或满足新需求而修改软件的过程。它有哪几种类型?
  18. IOTE 2019物联网嘉年华在深圆满落幕
  19. Android蓝牙开发之一:打开、关闭蓝牙
  20. Pygame 简单打字游戏

热门文章

  1. 泰坦尼克号数据处理与预测
  2. axure sketch 对比_Sketch to Axure RP插件下载
  3. Windows10系统 ADMUI3无法删除
  4. 在rails中pluck和select和collect区别
  5. zabbix启动失败的排查记录
  6. uClinux移植与分析(3)
  7. linux 查看文件最后几行
  8. tp5接收前台传的值_tp5数据接收
  9. 关于密码测评,你必须了解的10个基本问题
  10. 不想做直播的数据分析师不是一个好销售