.net wifi连接的和修改IP等各项操作
来源:互联网 发布:网络出现问号 编辑:程序博客网 时间:2024/06/13 19:11
看源码:
using SimpleWifi;using SimpleWifi.Win32;using System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text; using System.Threading;using System.Threading.Tasks;using System.Diagnostics;using System.Net;using System.Text.RegularExpressions;using System.Management;namespace FanWifi{ /// <summary> /// wifi信息类,包括wifi名,信号和强度 /// </summary> public class WifiInformation { /// <summary> /// wifi名 /// </summary> public string wifiName { set; get; } /// <summary> /// wifi密码 /// </summary> public string wifiKey { set; get; } /// <summary> /// wifi强度 /// </summary> public uint wifiStrength { set; get; } } public class WifiFun { //所有wifi的字段 static public Wifi wifiTotal; /// <summary> /// 用于连接wifi和修改IP /// </summary> /// <param name="WifiName"></param> /// <param name="WifiKey"></param> public bool ConnectEquipment(string WifiName, string WifiKey, string IP) { //声明要连接的wifi AccessPoint wifi = null; //去除空格 IP = IP.Trim(); wifiTotal = new Wifi(); if (wifiTotal.NoWifiAvailable) return false; var accessPoints = list(); //根据wifi名找出wifi foreach (AccessPoint s in accessPoints) { if (s.Name == WifiName) { wifi = s; break; } } if (wifi == null) return false; //输入密码 if (wifi.IsConnected == false) { AuthRequest authRequest = new AuthRequest(wifi); bool overwrite = true; //获取wifi密码 if (authRequest.IsPasswordRequired) { bool validPassFormat = false; string password = null; if (!validPassFormat) { password = WifiKey; validPassFormat = wifi.IsValidPassword(password); if (!validPassFormat) return false; } authRequest.Password = password; } //连接wifi wifi.Connect(authRequest, overwrite); // wifi.ConnectAsync(authRequest, overwrite); } Thread.Sleep(3000); //Console.WriteLine("{0}\n{1}\n{2}", GetIPDnsSubway()[0], GetIPDnsSubway()[1], GetIPDnsSubway()[2]); //如果wifi已经连接 才执行IP的操作。不然IP等都会为空 下面报错。 if (wifi.IsConnected == true) { string[] IPflag = null; if ((IP != null) && (IP != "")) { IPflag = IP.Split('.'); if (IPflag.Length == 4) { bool flag1 = SetIP(IP); if ((wifi.IsConnected == true) && (flag1 == true)) return true; else return false; } else { throw new Exception("IP异常"); } } else { bool flag1 = MotoSetIP(); bool flag2 = MotoSetDNS(); if ((wifi.IsConnected == true) && (flag1 == true) && (flag2 == true)) return true; else return false; } } else return false; } #region 只用于wifi连接 已弃用 /// <summary> /// 连接电脑 /// </summary> /// <param name="WifiName"></param> /// <param name="WifiKey"></param> //public bool ConnectComputer(string WifiName, string WifiKey) //{ // //声明要连接的wifi // AccessPoint wifi = null; // wifiTotal = new Wifi(); // if (wifiTotal.NoWifiAvailable) return false; // var accessPoints = list(); // //根据wifi名找出wifi // foreach (AccessPoint s in accessPoints) // { // if (s.Name == WifiName) // { // wifi = s; // break; // } // } // if (wifi == null) return false; // if (wifi.IsConnected == false) // { // AuthRequest authRequest = new AuthRequest(wifi); // bool overwrite = true; // //获取wifi密码 // if (authRequest.IsPasswordRequired) // { // bool validPassFormat = false; // string password = null; // if (!validPassFormat) // { // password = WifiKey; // validPassFormat = wifi.IsValidPassword(password); // if (!validPassFormat) return false; // } // authRequest.Password = password; // } // //连接wifi // wifi.Connect(authRequest, overwrite); // } // if (wifi.IsConnected == true) return true; // else return false; #endregion //} /// <summary> /// 列出所有网络 /// </summary> /// <returns></returns> public static IEnumerable<AccessPoint> list() { IEnumerable<AccessPoint> accessPoints = wifiTotal.GetAccessPoints().OrderByDescending(ap => ap.SignalStrength); return accessPoints; } /// <summary> /// 连接已经连接过的wifi,不需要输入密码 /// </summary> /// <param name="wifiName"></param> /// <param name="tempWifiKey"></param> /// <returns></returns> public bool HasXmlWifiConnect(string wifiName) { wifiTotal = new Wifi(); //获取全部wifi IEnumerable<AccessPoint> accessPoints = list(); AccessPoint wifi = null; //根据wifi名连接wifi foreach (var VARIABLE in accessPoints) { if (VARIABLE.Name == wifiName) { wifi = VARIABLE; break; } } AuthRequest authRequest = new AuthRequest(wifi); //第二个参数代表是否改动过xml文件 wifi.Connect(authRequest,false); if (wifi.IsConnected == true) return true; else return false; } /// <summary> /// 返回所有wifi的信息 包括wifi名和强度,密码暂时为空。 /// </summary> /// <returns></returns> public List<WifiInformation> DisPlayWifiName() { wifiTotal = new Wifi(); List<WifiInformation> rlist=new List<WifiInformation>(); IEnumerable<AccessPoint> accessPoints = list(); foreach (var accessPoint in accessPoints) { WifiInformation wifiInformation=new WifiInformation(); wifiInformation.wifiName = accessPoint.Name; wifiInformation.wifiKey = null; wifiInformation.wifiStrength = accessPoint.SignalStrength; rlist.Add(wifiInformation); } return rlist; } /// <summary> /// 判断周围检测到的wifi的密码是否正确 /// </summary> /// <param name="wifiInfo"></param> /// <returns></returns> public bool JudgeKey(WifiInformation wifiInfo) { wifiTotal = new Wifi(); string password = string.Empty; AccessPoint Ap = null; IEnumerable<AccessPoint> accessPoints = list(); foreach (var accessPoint in accessPoints) { if (accessPoint.Name == wifiInfo.wifiName) { Ap = accessPoint; break; } } if (Ap == null) return false; bool validPassFormat = false; validPassFormat = Ap.IsValidPassword(wifiInfo.wifiKey); return validPassFormat; } /// <summary> /// 根据wifi名判断是否含有xml文件 /// </summary> /// <param name="wifiName"></param> /// <returns></returns> public bool JudgeWifiHasXml(string wifiName) { wifiTotal = new Wifi(); //获取全部wifi IEnumerable<AccessPoint> accessPoints = list(); AccessPoint wifi = null; //根据wifi名连接wifi foreach (var VARIABLE in accessPoints) { if (VARIABLE.Name == wifiName) { wifi = VARIABLE; break; } } if (wifi.HasProfile == true) return true; else return false; } /// <summary> /// 修改IP /// </summary> /// <returns></returns> public bool SetIP(string IP) { bool flag; try { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c C:\\Windows\\System32\\cmd.exe"; startInfo.CreateNoWindow = true;//不显示程序窗口 startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.UseShellExecute = false; startInfo.Verb = "RunAs"; Process process = new Process(); process.StartInfo = startInfo; process.Start(); string Command = "netsh interface ip set address name=\"wlan\" static " + IP +" "+ GetIPDnsSubway()[1]+" "+GetIPDnsSubway()[2]; process.StandardInput.WriteLine(Command); process.StandardInput.WriteLine("exit"); // string strRst = process.StandardOutput.ReadToEnd(); // Console.WriteLine(strRst); // process.WaitForExit(); process.Close(); Thread.Sleep(5000); if (IP == GetIPDnsSubway()[0]) flag = true; else flag = false; } catch (Exception ex) { flag = false; } return flag; } /// <summary> /// 获取IP地址 /// </summary> /// <returns></returns> public string GetIp() { string hostName = Dns.GetHostName(); IPAddress[] addressList = Dns.GetHostAddresses(hostName); string ip = addressList[addressList.Length-1].ToString(); return ip; } /// <summary> /// 设置IP为自动获取 /// </summary> /// <returns></returns> private bool MotoSetIP() { bool flag; try { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c C:\\Windows\\System32\\cmd.exe"; startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true;//不显示程序窗口 startInfo.Verb = "RunAs"; Process process = new Process(); process.StartInfo = startInfo; process.Start(); string Command = "netsh interface ip set address name=\"wlan\" source=dhcp"; process.StandardInput.WriteLine(Command); process.StandardInput.WriteLine("exit"); string strRst = process.StandardOutput.ReadToEnd(); // Console.WriteLine(strRst); // process.WaitForExit(); process.Close(); return true; } catch(Exception) { return false; } } /// <summary> /// 设置DNS为自动获取 /// </summary> /// <returns></returns> private bool MotoSetDNS() { bool flag; try { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c C:\\Windows\\System32\\cmd.exe"; startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true;//不显示程序窗口 startInfo.Verb = "RunAs"; Process process = new Process(); process.StartInfo = startInfo; process.Start(); string Command = "netsh interface ip set dns name=\"wlan\" source=dhcp"; process.StandardInput.WriteLine(Command); process.StandardInput.WriteLine("exit"); string strRst = process.StandardOutput.ReadToEnd(); // Console.WriteLine(strRst); // process.WaitForExit(); process.Close(); return true; } catch (Exception ex) { return false; } } /// <summary> /// 获取IP,网关,DNS /// </summary> /// <returns></returns> public List<string> GetIPDnsSubway() { List<string> list=new List<string>(); ManagementClass mc=new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection nics = mc.GetInstances(); foreach (ManagementObject nic in nics) { if (Convert.ToBoolean(nic["ipEnabled"]) == true) { //Console.WriteLine(nic); //IP地址 var strings2 = nic["IPAddress"] as String[]; if (strings2 != null) list.Add(strings2[0]); //子网掩码 var strings1 = nic["IPSubnet"] as String[]; if (strings1 != null) list.Add(strings1[0]); //网关 var strings = nic["DefaultIPGateway"] as String[]; if (strings != null) list.Add(strings[0]); } } return list; } }dll文件地址:http://pan.baidu.com/s/1jGJFYfk
0 0
- .net wifi连接的和修改IP等各项操作
- iOS状态栏操作之获取WiFi信号强度,WiFi名字和IP,网络类型,运营商,电池电量,系统时间等
- 单链表的各项操作
- 单链表的各项操作
- android获取连接wifi后的ip
- 修改WIFI 静态iP
- 修改电脑WIFI网络的连接密码
- Android操作数据连接和Wifi
- android wifi操作(扫描和连接)
- android wifi操作(扫描和连接)
- Android操作数据连接和Wifi
- 统计下载日志流量,ip等各项信息的shell脚本代码
- 详解如何使用C#.NET进行注册表项和键值的创建、删除、修改、获取等操作
- ArrayList和LinkedList的各项操作性能比较
- 获取 Andorid 手机WIFI连接的Mac地址和IP地址
- 获取所有连接到手机wifi热点的手机IP地址 和MAC地址。
- 自己写的个C#(ASP.NET)连接SQL数据库执行查询和修改操作的类
- android连接wifi热点的操作
- Dapper,大规模分布式系统的跟踪系统
- 讨厌的git
- size_type
- 一次socket编程中犯下的错误
- 黑马程序员—Java基础—集合
- .net wifi连接的和修改IP等各项操作
- 菜鸟学Java----内部类2
- mybatis generator 启动时出错:注释中不允许出现字符串 "--"
- ImageView使用总结
- Android应用的界面编程
- UBUNTU系统配置VPN
- andriod webview 控件
- 在union all的视图中怎么解决分页问题
- SSH:Hibernate框架(Hibernate数据库事务与隔离级别)