.net wifi连接的和修改IP等各项操作
2015-11-27 16:14
579 查看
看源码:
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
相关文章推荐