/// <summary> /// Gathers the winpc information. /// </summary> /// <param name="lstIPs">list object containing IP addresses.</param> private void GatherWinPCInfo(List <string> lstIPs) { List <string> lstIPsWithReply = new List <string>(); foreach (string strIP in lstIPs) { UpdateStatusLabel(lblStatus, "Pinging " + strIP); using (Ping p = new Ping()) { IPAddress ip = IPAddress.Parse(strIP); PingReply pingReply = p.Send(ip, 5000); if (pingReply.Status == IPStatus.Success) { lstIPsWithReply.Add(strIP); } } } UpdateStatusLabel(lblStatus, "Done pinging! Now gathering data..."); if (lstIPsWithReply.Count > 0) { foreach (string strIP in lstIPsWithReply) { try { WinPC winpc = new WinPC(); winpc.GetPCSpecs(strIP); if (winpc.PCName != null) { UpdateStatusLabel(lblStatus, "Gathering data for: " + winpc.PCName); AddWinPCToXML(winpc); } } catch (Exception ex) { LogError(ex.Message); } } } if (File.Exists(strWinPCXml)) { DataSet dsWinPC = new DataSet(); dsWinPC.ReadXml(strWinPCXml); UpdateDataGridView(dgvWinPCResults, dsWinPC); } UpdateStatusLabel(lblStatus, "WinPCFinder Results:"); }
/// <summary> /// Adds the winPC object to the XML file. /// </summary> /// <param name="winPC">a WinPC object.</param> private void AddWinPCToXML(WinPC winPC) { if (File.Exists(strWinPCXml)) { XDocument xDoc = XDocument.Load(strWinPCXml); XElement xWinPC = xDoc.Element("WinPC_Results"); xWinPC.Add( new XElement("WinPC", new XElement("PC_Name", winPC.PCName), new XElement("PC_IP_Address", winPC.IPAddress), new XElement("PC_CPU_Name", winPC.CPUName), new XElement("PC_CPU_Cores", winPC.CPUCores), new XElement("PC_CPU_Arch", winPC.CPUAddressWidth), new XElement("PC_OS", winPC.OS), new XElement("PC_OS_Install_Date", winPC.OSInstallDate), new XElement("PC_RAM_Installed", winPC.RAMInstalled), new XElement("PC_Mobo_Mfg", winPC.MoboMfg), new XElement("PC_Mobo_Product", winPC.MoboProduct))); xDoc.Save(strWinPCXml); } else { XmlWriterSettings xmlwSettings = new XmlWriterSettings(); xmlwSettings.Indent = true; using (XmlWriter xmlWriter = XmlWriter.Create(strWinPCXml, xmlwSettings)) { xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("WinPC_Results"); xmlWriter.WriteStartElement("WinPC"); xmlWriter.WriteElementString("PC_Name", winPC.PCName); xmlWriter.WriteElementString("PC_IP_Address", winPC.IPAddress); xmlWriter.WriteElementString("PC_CPU_Name", winPC.CPUName); xmlWriter.WriteElementString("PC_CPU_Cores", winPC.CPUCores); xmlWriter.WriteElementString("PC_CPU_Arch", winPC.CPUAddressWidth); xmlWriter.WriteElementString("PC_OS", winPC.OS); xmlWriter.WriteElementString("PC_OS_Install_Date", winPC.OSInstallDate); xmlWriter.WriteElementString("PC_RAM_Installed", winPC.RAMInstalled); xmlWriter.WriteElementString("PC_Mobo_Mfg", winPC.MoboMfg); xmlWriter.WriteElementString("PC_Mobo_Product", winPC.MoboProduct); xmlWriter.WriteEndElement(); xmlWriter.WriteEndDocument(); } } }