.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
原创粉丝点击