public static ManagementObject AdvancedSearch(string key, string propertyName) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT {0} FROM {1}".FormatString(propertyName, key)); ManagementObjectCollection items = searcher.Get(); if (!items.IsNullOrEmpty()) { return(items.Cast <ManagementObject>().First()); } return(null); }