您的位置:首页 > 编程语言 > C#

.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# IP wifi 管理员 .net