public static List <Monitor> Enumerate(ManagementScope Scope) { var result = new List <Monitor>(); try { Scope.Options.Timeout = new TimeSpan(0, 1, 0); Scope.Connect(); ObjectQuery query = new ObjectQuery("SELECT * FROM WmiMonitorID"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(Scope, query); ManagementObjectCollection queryCollection = searcher.Get(); var queryList = queryCollection.Cast <ManagementObject>().ToList(); foreach (ManagementObject m in queryList) { var mm = string.Empty; var sn = string.Empty; var mn = string.Empty; try { mm = StringFormatting.ConvertUInt16ArrayToString((UInt16[])m["UserFriendlyName"]).Replace("\0", "").Replace("SERIES", "").Replace("Series", "").Replace("ACER", "").Replace("HWP ", "").Replace("DELL ", "").TrimStart().TrimEnd(); } catch (Exception) { } try { sn = StringFormatting.ConvertUInt16ArrayToString((UInt16[])m["SerialNumberID"]).Replace("\0", "").TrimStart().TrimEnd(); } catch (Exception) { } try { mn = StringFormatting.ConvertUInt16ArrayToString((UInt16[])m["ManufacturerName"]).Replace("\0", "").Replace("VSC", "ViewSonic").Replace("ACR", "Acer").Replace("DEL", "Dell").Replace("PHL", "Philips").TrimStart().TrimEnd(); } catch (Exception) { } result.Add(new Monitor() { MonitorModel = StringFormatting.CleanInvalidXmlChars(mm), MonitorSerialNumber = StringFormatting.CleanInvalidXmlChars(sn), Manufacturer = StringFormatting.CleanInvalidXmlChars(mn) }); } } catch (Exception) { } return(result); }