//读取面板网卡信息 public NetCard readIpPanel() { ComboBox comboBox = this.comboBox; TextBox[] ip = this.tbsDic["ip"]; TextBox[] mask = this.tbsDic["mask"]; TextBox[] gateway = this.tbsDic["gateway"]; TextBox[] dns1 = this.tbsDic["dns1"]; TextBox[] dns2 = this.tbsDic["dns2"]; string ipStr = ip[0].Text + "." + ip[1].Text + "." + ip[2].Text + "." + ip[3].Text; string maskStr = mask[0].Text + "." + mask[1].Text + "." + mask[2].Text + "." + mask[3].Text; string gatewayStr = gateway[0].Text + "." + gateway[1].Text + "." + gateway[2].Text + "." + gateway[3].Text; string dns1Str; if (dns1[0].Text == "" && dns1[1].Text == "" && dns1[2].Text == "" && dns1[3].Text == "") { dns1Str = "none"; } else { dns1Str = dns1[0].Text + "." + dns1[1].Text + "." + dns1[2].Text + "." + dns1[3].Text; } string dns2Str; if (dns2[0].Text == "" && dns2[1].Text == "" && dns2[2].Text == "" && dns2[3].Text == "") { dns2Str = "none"; } else { dns2Str = dns2[0].Text + "." + dns2[1].Text + "." + dns2[2].Text + "." + dns2[3].Text; } NetCard netcard = new NetCard(comboBox.Text, ipStr, maskStr, gatewayStr, dns1Str, dns2Str, null); return netcard; }
public SkinFrm(NetCard netCard, DbManager db) { InitializeComponent(); this.db = db; this.localIpDic = this.db.getRow2Dic("pcInfo"); this.netCard = netCard; }
private void FirstUseFrm_Load(object sender, EventArgs e) { //初始化pm对象,获得可用网卡 PanelManager pm = new PanelManager(); netcard = pm.getEnableCard(); }
/// <summary> /// /// </summary> /// <param name="db">更新数据库pc的ip信息</param> /// <param name="netcard">可用网卡实例</param> public static void updatePcInfo(DbManager db, NetCard netcard) { db.updateConfigField <string>("pcInfo", "netCardName", netcard.Name); db.updateConfigField <string>("pcInfo", "ip", netcard.Ip); db.updateConfigField <string>("pcInfo", "mask", netcard.Mask); db.updateConfigField <string>("pcInfo", "gateway", netcard.Gateway); db.updateConfigField <string>("pcInfo", "dns1", netcard.Dns1); db.updateConfigField <string>("pcInfo", "dns2", netcard.Dns2); db.updateConfigField <string>("pcInfo", "iNode", Tools.getiNodeUsername()); db.updateConfigField <string>("pcInfo", "sysUser", Tools.getUsers()[0]); }
public NetCards() { NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in adapters) { string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapter.Id + "\\Connection"; RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false); if (rk != null) { // 区分 PnpInstanceID // 如果前面有 PCI 就是本机的真实网卡 string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString(); int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0)); if (fPnpInstanceID.Length > 3 && fPnpInstanceID.Substring(0, 3) == "PCI") { IPInterfaceProperties ipProperties = adapter.GetIPProperties(); UnicastIPAddressInformationCollection curIPCollection = ipProperties.UnicastAddresses; UnicastIPAddressInformation curIP; //获取IP if (curIPCollection.Count > 1) { curIP = ipProperties.UnicastAddresses[curIPCollection.Count - 1]; } else { curIP = ipProperties.UnicastAddresses[0]; } string name = adapter.Name; //获得连接名称 string ip = curIP.Address.ToString(); // 添加IP地址 string mask = curIP.IPv4Mask == null ? "" : curIP.IPv4Mask.ToString(); // 添加子网掩码 string gateway = ipProperties.GatewayAddresses[0].Address.ToString(); //添加默认网关 //获取dns IPAddressCollection dnsCollection = ipProperties.DnsAddresses; string dns1 = ""; string dns2 = ""; if (dnsCollection.Count == 1) { dns1 = dnsCollection[0].ToString(); } else if (dnsCollection.Count == 2) { dns1 = dnsCollection[0].ToString(); dns2 = dnsCollection[1].ToString(); } NetCard netCard = new NetCard(name, ip, mask, gateway, dns1, dns2, adapter); netCardDic.Add(name, netCard); } } } }
/// <summary> /// 获得第一个可用的网卡 /// </summary> /// <returns></returns> public NetCard getEnableCard() { this.netCardDic = this.netCards.getAllNetCard(); //遍历网卡写入 foreach (KeyValuePair<string, NetCard> kv in this.netCardDic) { NetCard netcard = kv.Value; if (!netcard.isDrop() && netcard.isEnableIp()) { return netcard; } } return null; }
public NetworkDoctor(NetCard netCard, DbManager Db) { //创建网卡对象 this.netCards = new NetCards(); //获取所有网卡字典 this.netCardDic = this.netCards.getAllNetCard(); //设置当前要诊断的网卡 this.netCard = netCard; //设置数据库对象 this.db = Db; //获取对应设置参数 this.localIpDic = this.db.getRow2Dic("pcInfo"); this.pingIpDic = this.db.getDic <string, string>("pingIp", "webName", "ip"); this.sysConfigDic = this.db.getRow2Dic("sysConfig"); }
/// <summary> /// 检查DNS是否设置正确 /// </summary> /// <returns></returns> public NetworkDoctorBackObj checkDNS() { NetworkDoctorBackObj backObj = new NetworkDoctorBackObj("dns"); backObj.Status = true; statusUI(2, "start", true); refreshUI(2, "msg", "开始检查"); Thread.Sleep(1000); if (!this.netCard.isEnableDns(sysConfigDic["defaultDNS1"], sysConfigDic["defaultDNS2"])) { refreshUI(2, "msg", "发现本地dns地址设置错误.."); backObj.addMsg("发现本地dns地址设置错误..\r\n"); backObj.Status = false; refreshUI(2, "msg", "尝试从本地恢复正确的DNS配置.."); backObj.addMsg("尝试从本地恢复正确的DNS配置..\r\n"); this.netCard.setDns(sysConfigDic["defaultDNS1"], sysConfigDic["defaultDNS2"]); refreshUI(2, "msg", "检查DNS是否设置成功.."); backObj.addMsg("检查DNS是否设置成功..\r\n"); this.netCard = refreshNetCard(this.netCard.Name); if (!this.netCard.isEnableDns(sysConfigDic["defaultDNS1"], sysConfigDic["defaultDNS2"])) { refreshUI(2, "msg", "DNS地址设置失败.."); backObj.addMsg("DNS地址设置失败..\r\n"); backObj.addSugest("请尝试手动设置DNS地址\r\n"); refreshUI(2, "msg", "失败"); statusUI(2, "end", false); } else { refreshUI(2, "msg", "DNS地址设置成功!"); statusUI(2, "end", true); refreshUI(2, "msg", "正常"); backObj.addMsg("DNS地址正常\r\n"); backObj.Status = true; } } else { backObj.addMsg("DNS地址正常\r\n"); refreshUI(2, "msg", "正常"); statusUI(2, "end", true); } TaskStepCallBack(backObj); return(backObj); }
private void btn_changeIp_Click(object sender, EventArgs e) { cmdM cmdm = () => pm.changeIp(); this.BeginInvoke(cmdm); MessageBox.Show("修改成功!"); //重新读取面板 NetCard netcard = pm.readIpPanel(); //判断更改后的IP能否ping通,如果能,则保存新的ip配置 System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(delegate { NetworkDoctorBackObj backObj = networkDoctor.checkNetwork(netcard); if (netcard.isEnableIp() && backObj.Status) { Tools.updatePcInfo(db, netcard); } }), null, 8000, 0); }
/// <summary> /// 检查网络 /// </summary> /// <returns></returns> public NetworkDoctorBackObj checkNetwork(NetCard netcard) { NetworkDoctorBackObj backObj = new NetworkDoctorBackObj("network"); backObj.Status = true; Dictionary <string, string> connectNetTestResultDic = netCard.connectNetTest(this.pingIpDic); foreach (KeyValuePair <string, string> kv in connectNetTestResultDic) { if (kv.Value != "成功") { backObj.Status = false; backObj.addMsg("网络状态异常\r\n"); break; } } TaskStepCallBack(backObj); return(backObj); }
/// <summary> /// 根据面板值修改IP /// </summary> public NetCard changeIp() { NetCard netcard = readIpPanel(); if (netcard == null) return null; string reStr = ""; string setIp = "netsh interface ip set address name=" + netcard.Name + " source=static addr=" + netcard.Ip + " mask=" + netcard.Mask + " gateway=" + netcard.Gateway + " gwmetric=1"; string command1 = "echo 正在修改IP配置..&&" + setIp; RunCmd.run(command1, out reStr); //MessageBox.Show(reStr); string setDns1 = "netsh interface ip set dns name=\"" + netcard.Name + "\" source=static addr=" + netcard.Dns1 + " register=primary"; string setDns2 = "netsh interface ip add dns name=\"" + netcard.Name + "\" " + netcard.Dns2 + " index=2"; string command2 = "echo 正在修改DNS.." + " && " + setDns1 + " && " + setDns2; reStr = ""; RunCmd.run(command2, out reStr); return netcard; //MessageBox.Show(reStr); }
public void writeIpPanel(NetCard netcard) { if (netcard.Name != "") { comboBox.Text = netcard.Name; } if (netcard.Ip != "") { string[] ipStrs = netcard.Ip.Split('.'); fillPanel(this.tbsDic["ip"], ipStrs); } if (netcard.Mask != "") { string[] maskStrs = netcard.Mask.Split('.'); fillPanel(this.tbsDic["mask"], maskStrs); } if (netcard.Gateway != "") { string[] gatewayStrs = netcard.Gateway.Split('.'); fillPanel(this.tbsDic["gateway"], gatewayStrs); } if (netcard.Dns1 != "" && !netcard.Dns1.Contains(":")) { string[] dns1Strs = netcard.Dns1.Split('.'); fillPanel(this.tbsDic["dns1"], dns1Strs); } if (netcard.Dns2 != "" && !netcard.Dns2.Contains(":")) { string[] dns2Strs = netcard.Dns2.Split('.'); fillPanel(this.tbsDic["dns2"], dns2Strs); } string iNodeName = Tools.getiNodeUsername(); if (iNodeName != "") { this.tbsDic["iNode"][0].Text = iNodeName; } }
private void initPanel() { //遍历网卡填入下拉列表,同时判断是否有设置合适的网卡 foreach (KeyValuePair<string, NetCard> kv in this.netCardDic) { this.comboBox.Items.Add(kv.Key); NetCard netcard = kv.Value; //if (this.isEnable) continue; if (!netcard.isDrop() && netcard.isEnableIp()) { this.isEnable = true; this.selectedNetCardName = netcard.Name; writeIpPanel(); } } //如果没找到符合规定的网卡,那么就选择默认第一个 if (!this.isEnable && comboBox.Items.Count>0) { this.selectedNetCardName = comboBox.Items[0].ToString(); writeIpPanel(); } }
public void Form1_Load(object sender, EventArgs e) { //判断是否第一次使用本软件 if (!isJudgeFirstUse && Tools.isFirstUse()) { this.Hide(); FirstUseFrm firstUseFrm = new FirstUseFrm(this); firstUseFrm.ShowDialog(); return; } //创建数据库对象 db = new DbManager(); db.init(); //加载配置项 Dictionary <string, string> sysConfig = db.getRow2Dic("sysConfig"); bool autoRun = Convert.ToBoolean(sysConfig["autoRun"]); bool autoConnect = Convert.ToBoolean(sysConfig["autoConnect"]); company_lab.Text = sysConfig["company"].ToString(); tel_lab.Text = sysConfig["phone"].ToString(); //加载各类图片 pic_icon.Image = imageList1.Images["icon.png"]; pic_tubiao.Image = imageList1.Images["tubiao.png"]; pic_check.Image = imageList1.Images["check.png"]; pic_min.Image = imageList1.Images["min.png"]; pic_close.Image = imageList1.Images["close.png"]; //加载左侧ip面板控件 tbsDic.Add("ip", new TextBox[4] { tbIp0, tbIp1, tbIp2, tbIp3 }); tbsDic.Add("mask", new TextBox[4] { tbMask0, tbMask1, tbMask2, tbMask3 }); tbsDic.Add("gateway", new TextBox[4] { tbGateway0, tbGateway1, tbGateway2, tbGateway3 }); tbsDic.Add("dns1", new TextBox[4] { tbZDns0, tbZDns1, tbZDns2, tbZDns3 }); tbsDic.Add("dns2", new TextBox[4] { tbFdns0, tbFdns1, tbFdns2, tbFdns3 }); tbsDic.Add("iNode", new TextBox[1] { tbiNode }); //加载右侧控件 labDic.Add("taskTip", new Label[5] { lab_jc0, lab_jc1, lab_jc2, lab_jc3, lab_jc4 }); labDic.Add("msg", new Label[5] { lab_suggest0, lab_suggest1, lab_suggest2, lab_suggest3, lab_suggest4 }); picDic.Add("loading", new PictureBox[5] { pic_jc0, pic_jc1, pic_jc2, pic_jc3, pic_jc4 }); //创建ip面板管理对象 pm = new PanelManager(comboBox1, tbsDic); //创建诊断对象 networkDoctor = new NetworkDoctor(pm.getSelectedNetCard(), db); networkDoctor.TaskStart += taskStart; networkDoctor.refreshUI += refreshUI; networkDoctor.statusUI += statusUI; networkDoctor.TaskStepCallBack += taskStepCallBack; networkDoctor.TaskFinish += taskFinish; //创建插件面板对象 PlugManager plugManager = new PlugManager(this, plug_gb, imageList2); plugManager.drawItem("radminInstallAndActive", "Radmin配置", 1, 6); plugManager.drawItem("systemUserSafePwd", "账户密码安全", 2, 6); plugManager.drawItem("winUpdate", "系统自动升级", 3, 6); plugManager.drawItem("printShare", "打印共享修复", 4, 6); plugManager.drawItem("clearCDisk", "清除C盘垃圾", 5, 7); //如果面板不可用,则说明就没有可用的网卡,给出提示 if (!pm.IsEnable) { MessageBox.Show("未找到可用的网卡,请开启诊断助手进行诊断!"); return; } else { if (pm.getSelectedNetCard().isEnableIp()) { //保存网卡信息 string ipInfoPath = Application.StartupPath + "\\IpInfo.json"; if (!File.Exists(ipInfoPath)) { NetCard selectedNetcard = pm.getSelectedNetCard(); Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("ip", selectedNetcard.Ip); dic.Add("mask", selectedNetcard.Mask); dic.Add("gateway", selectedNetcard.Gateway); dic.Add("dns1", "10.208.4.100"); dic.Add("dns2", "10.208.4.200"); Tools.saveJsonFile(ipInfoPath, dic); } } } //更改托盘图片提示 notifyIcon1.Text = "本机IP:" + pm.getEnableCard().Ip; //加载桌面悬浮信息 SkinFrm skinfrm = new SkinFrm(pm.getSelectedNetCard(), db); skinfrm.Show(); //创建计划类对象 plm = new PlanManager(db, this); plm.netConnectUI += netConnectUI; if (autoConnect_ck.Checked) { plm.addPlan("网络连接状态"); } else { plm.removePlan("网络连接状态"); } //这个必须放在plm后面,因为调用了plm if (autoRun) { autoRun_ck.Checked = true; } else { autoRun_ck.Checked = false; } if (autoConnect) { autoConnect_ck.Checked = true; } else { autoConnect_ck.Checked = false; } plm.start(); //绑定用户注册信息更新事件 Tools.userInfoUI += getUserInfo; }
public void writeIpPanel() { NetCard netcard = this.getSelectedNetCard(); writeIpPanel(netcard); }
/// <summary> /// 更新数据库pc的ip信息 /// </summary> /// <param name="db">数据库对象</param> /// <param name="netcard">可用网卡实例</param> /// <param name="iNode">iNode账号</param> /// <param name="systemPwd">系统密码</param> public static void updatePcInfo(DbManager db, NetCard netcard, string iNode, string systemPwd) { updatePcInfo(db, netcard); db.updateConfigField <string>("pcInfo", "iNodePwd", iNode); db.updateConfigField <string>("pcInfo", "sysPwd", systemPwd); }
/// <summary> /// 检查IP地址是否设置正确 /// </summary> /// <returns></returns> public NetworkDoctorBackObj checkIp() { NetworkDoctorBackObj backObj = new NetworkDoctorBackObj("ip"); backObj.Status = true; statusUI(1, "start", true); refreshUI(1, "msg", "开始检查"); Thread.Sleep(1000); //判断是否有NetCard符合ip规则 string enableNetCardName = ""; NetCard enableNetCard = null; foreach (KeyValuePair <string, NetCard> kv in netCardDic) { NetCard netCard = kv.Value; if (netCard.isEnableIp()) { enableNetCardName = kv.Key; enableNetCard = kv.Value; } } //检查IP地址是否可用 refreshUI(1, "msg", "检查IP地址是否可用"); if (enableNetCardName == "") { refreshUI(1, "msg", "发现本地ip地址设置错误.."); backObj.addMsg("发现本地ip地址设置错误..\r\n"); backObj.Status = false; if (this.localIpDic != null && this.localIpDic["netCardName"] != "") { refreshUI(1, "msg", "尝试从本地恢复正确的IP配置.."); backObj.addMsg("尝试从本地恢复正确的IP配置..\r\n"); if (this.netCardDic.ContainsKey(this.localIpDic["netCardName"])) { this.netCard = this.netCardDic[this.localIpDic["netCardName"]]; this.netCard.setIp(this.localIpDic["ip"], this.localIpDic["mask"], this.localIpDic["gateway"]); refreshUI(1, "msg", "检查IP是否设置成功.."); backObj.addMsg("检查IP是否设置成功..\r\n"); this.netCard = refreshNetCard(this.netCard.Name); if (!this.netCard.isEnableIp()) { refreshUI(1, "msg", "IP地址设置失败.."); backObj.addMsg("IP地址设置失败..\r\n"); backObj.addSugest("请尝试手动设置IP地址\r\n"); statusUI(1, "end", false); } else { refreshUI(1, "msg", "IP地址设置成功!"); statusUI(1, "end", true); backObj.addMsg("IP地址正常\r\n"); backObj.Status = true; } } else { refreshUI(1, "msg", "本地IP配置未存储,无法恢复"); Thread.Sleep(1000); refreshUI(1, "msg", "失败"); statusUI(1, "end", false); } } } //检查子网掩码是否可用 //refreshUI(1, "msg", "检查子网掩码是否可用"); //if (enableNetCard.isEnableMask()) //{ // refreshUI(1, "msg", "子网掩码设置错误,尝试重新设置子网掩码.."); // backObj.addMsg("子网掩码设置错误,尝试重新设置子网掩码..\r\n"); // enableNetCard.setIp(enableNetCard.Ip, "255.255.255.0",enableNetCard.Gateway); // refreshUI(1, "msg", "检查子网掩码是否设置成功.."); // backObj.addMsg("检查子网掩码是否设置成功..\r\n"); // this.netCard = refreshNetCard(enableNetCardName); // if (!this.netCard.isEnableIp()) // { // refreshUI(1, "msg", "子网掩码设置失败.."); // backObj.addMsg("子网掩码设置失败..\r\n"); // backObj.addSugest("请尝试手动设置子网掩码\r\n"); // statusUI(1, "end", false); // return backObj; // } // else // { // refreshUI(1, "msg", "子网掩码设置成功!"); // statusUI(1, "end", true); // backObj.addMsg("子网掩码正常\r\n"); // backObj.Status = true; // } //} //检查默认网关是否可用 refreshUI(1, "msg", "检查默认网关是否正确"); if (enableNetCard != null) { string[] ipArr = enableNetCard.Ip.Split(new char[] { '.' }); ipArr[3] = "1"; string theoryGateway = string.Join(".", ipArr); if (enableNetCard.isEnableGateway()) { refreshUI(1, "msg", "网关设置错误,尝试重新设置网关.."); backObj.addMsg("网关设置错误,尝试重新设置网关..\r\n"); enableNetCard.setIp(enableNetCard.Ip, enableNetCard.Mask, theoryGateway); refreshUI(1, "msg", "检查网关是否设置成功.."); backObj.addMsg("检查网关是否设置成功..\r\n"); this.netCard = refreshNetCard(enableNetCardName); if (!this.netCard.isEnableGateway()) { refreshUI(1, "msg", "网关地址设置失败.."); backObj.addMsg("网关地址设置失败..\r\n"); backObj.addSugest("请尝试手动设置网关地址\r\n"); statusUI(1, "end", false); return(backObj); } else { refreshUI(1, "msg", "网关地址设置成功!"); statusUI(1, "end", true); backObj.addMsg("网关地址正常\r\n"); backObj.Status = true; } } } refreshUI(1, "msg", "正常"); statusUI(1, "end", true); backObj.addMsg("IP地址正常\r\n"); //任务完成了界面的返回 TaskStepCallBack(backObj); return(backObj); }