public override void OnRecoveryLoad(XmlElement root) { XmlElement nodeDhcp = Utils.XmlGetFirstElementByTagName(root, "DhcpSwitch"); if (nodeDhcp != null) { foreach (XmlElement nodeEntry in nodeDhcp.ChildNodes) { NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry(); entry.ReadXML(nodeEntry); m_listOldDhcp.Add(entry); } } XmlElement nodeDns = Utils.XmlGetFirstElementByTagName(root, "DnsSwitch"); if (nodeDns != null) { foreach (XmlElement nodeEntry in nodeDns.ChildNodes) { NetworkManagerDnsEntry entry = new NetworkManagerDnsEntry(); entry.ReadXML(nodeEntry); m_listOldDns.Add(entry); } } if (Utils.XmlExistsAttribute(root, "IpV6")) { m_oldIpV6 = Conversions.ToUInt32(Utils.XmlGetAttributeInt64(root, "IpV6", 0), 0); } SwitchToStaticRestore(); base.OnRecoveryLoad(root); }
public override void OnRecoveryLoad(XmlElement root) { XmlElement nodeDhcp = Utils.XmlGetFirstElementByTagName(root, "DhcpSwitch"); if (nodeDhcp != null) { foreach (XmlElement nodeEntry in nodeDhcp.ChildNodes) { NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry(); entry.ReadXML(nodeEntry); m_listOldDhcp.Add(entry); } } XmlElement nodeDns = Utils.XmlGetFirstElementByTagName(root, "DnsSwitch"); if (nodeDns != null) { foreach (XmlElement nodeEntry in nodeDns.ChildNodes) { NetworkManagerDnsEntry entry = new NetworkManagerDnsEntry(); entry.ReadXML(nodeEntry); m_listOldDns.Add(entry); } } if (Utils.XmlExistsAttribute(root, "IpV6")) { m_oldIpV6 = Conversions.ToUInt32(Utils.XmlGetAttributeInt64(root, "IpV6", 0), 0); } SwitchToStaticRestore(); base.OnRecoveryLoad(root); }
/* * private void WaitUntilEnabled(ManagementObject objMOC) * { * NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); * foreach (NetworkInterface adapter in interfaces) * { * if (objMOC["SettingID"] as string == adapter.Id) * { * OperationalStatus status = adapter.OperationalStatus; * if (status == OperationalStatus.Up) * { * // TODO: It's always up... * } * } * } * } */ private bool SwitchToStaticDo() { try { ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection objMOC = objMC.GetInstances(); foreach (ManagementObject objMO in objMOC) { if (!((bool)objMO["IPEnabled"])) { continue; } if (!((bool)objMO["DHCPEnabled"])) { continue; } NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry(); entry.Guid = objMO["SettingID"] as string; entry.Description = objMO["Description"] as string; entry.IpAddress = (objMO["IPAddress"] as string[]); entry.SubnetMask = (objMO["IPSubnet"] as string[]); entry.Dns = objMO["DNSServerSearchOrder"] as string[]; entry.Gateway = objMO["DefaultIPGateway"] as string[]; entry.AutoDns = ((Registry.GetValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\" + entry.Guid, "NameServer", "") as string) == ""); Engine.Instance.Logs.Log(LogType.Verbose, Messages.Format(Messages.NetworkAdapterDhcpDone, entry.Description)); ManagementBaseObject objEnableStatic = objMO.GetMethodParameters("EnableStatic"); //objNewIP["IPAddress"] = new string[] { ipAddress }; //objNewIP["SubnetMask"] = new string[] { subnetMask }; objEnableStatic["IPAddress"] = new string[] { entry.IpAddress[0] }; objEnableStatic["SubnetMask"] = new string[] { entry.SubnetMask[0] }; objMO.InvokeMethod("EnableStatic", objEnableStatic, null); ManagementBaseObject objSetDNSServerSearchOrder = objMO.GetMethodParameters("SetDNSServerSearchOrder"); objSetDNSServerSearchOrder["DNSServerSearchOrder"] = entry.Dns; objMO.InvokeMethod("SetDNSServerSearchOrder", objSetDNSServerSearchOrder, null); ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways"); objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] }; objMO.InvokeMethod("SetGateways", objSetGateways, null); m_listOldDhcp.Add(entry); // TOOPTIMIZE: Need to wait until the interface return UP... //WaitUntilEnabled(objMO); // Checking the OperationalStatus changes are not effective. System.Threading.Thread.Sleep(3000); } return(true); } catch (Exception e) { Engine.Instance.Logs.Log(e); return(false); } }
/* private void WaitUntilEnabled(ManagementObject objMOC) { NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in interfaces) { if (objMOC["SettingID"] as string == adapter.Id) { OperationalStatus status = adapter.OperationalStatus; if (status == OperationalStatus.Up) { // TODO: It's always up... } } } } */ private bool SwitchToStaticDo() { try { ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection objMOC = objMC.GetInstances(); foreach (ManagementObject objMO in objMOC) { if (!((bool)objMO["IPEnabled"])) continue; if (!((bool)objMO["DHCPEnabled"])) continue; NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry(); entry.Guid = objMO["SettingID"] as string; entry.Description = objMO["Description"] as string; entry.IpAddress = (objMO["IPAddress"] as string[]); entry.SubnetMask = (objMO["IPSubnet"] as string[]); entry.Dns = objMO["DNSServerSearchOrder"] as string[]; entry.Gateway = objMO["DefaultIPGateway"] as string[]; entry.AutoDns = ((Registry.GetValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\" + entry.Guid, "NameServer", "") as string) == ""); Engine.Instance.Logs.Log(LogType.Verbose, MessagesFormatter.Format(Messages.NetworkAdapterDhcpDone, entry.Description)); ManagementBaseObject objEnableStatic = objMO.GetMethodParameters("EnableStatic"); //objNewIP["IPAddress"] = new string[] { ipAddress }; //objNewIP["SubnetMask"] = new string[] { subnetMask }; objEnableStatic["IPAddress"] = new string[] { entry.IpAddress[0] }; objEnableStatic["SubnetMask"] = new string[] { entry.SubnetMask[0] }; objMO.InvokeMethod("EnableStatic", objEnableStatic, null); ManagementBaseObject objSetDNSServerSearchOrder = objMO.GetMethodParameters("SetDNSServerSearchOrder"); objSetDNSServerSearchOrder["DNSServerSearchOrder"] = entry.Dns; objMO.InvokeMethod("SetDNSServerSearchOrder", objSetDNSServerSearchOrder, null); ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways"); objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] }; objMO.InvokeMethod("SetGateways", objSetGateways, null); m_listOldDhcp.Add(entry); // TOOPTIMIZE: Need to wait until the interface return UP... //WaitUntilEnabled(objMO); // Checking the OperationalStatus changes are not effective. System.Threading.Thread.Sleep(3000); } return true; } catch (Exception e) { Engine.Instance.Logs.Log(e); return false; } }