foreach ( ManagementObject mo in queryCollection)
{
// string hardwareID = mo["HardwareID"]); //直接根据属性名得到属性的值
//遍历所有属性,得到所有属性的值
PropertyDataCollection searcherProperties = mo.Properties;
foreach (PropertyData sp in searcherProperties)
{
Console.WriteLine("Name = {0, -20}, Value = {1, -20}", sp.Name,sp.Value);
}
}
3 使用WMI连接本地计算机
使用WMI连接本地计算机也是非常方便的,我们只需要稍微修改一下上面的代码就可以了。
string machineName = "localhost";
co.Username = "";
co.Password = "";
也可以用比较简单的格式,直接使用查询语句。
string connectString = "SELECT * FROM Win32_PnPSignedDriver";
SelectQuery selectQuery = new SelectQuery( connectString );
ManagementObjectSearcher searcher = new ManagementObjectSearcher( selectQuery );
foreach (ManagementObject mo in searcher.Get())
{
PropertyDataCollection searcherProperties = mo.Properties;
foreach (PropertyData sp in searcherProperties)
{
Console.WriteLine(sp.Name + " " + sp.Value);
}
}
4 查询语句的格式
上面的连接字符串connectString其实有很多种格式。对于WMI来说,使用WQL查询所需要的信息。WQL继承了SQL的一些语法。但是并不是说所有SQL的语句都可以用于WQL。常用的格式有如下几种。
(1)查询系统中类中所有对象的所有属性
connectString = "SELECT * FROM Win32_PnPSignedDriver"
(2)查询类中所有对象的HardwareID属性
connectString = "SELECT HardwareID FROM Win32_PnPSignedDriver"
(3)查询类中所有对象的HardwareID和DriverVersion属性
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver"
(4)查询类中所有对象的HardwareID和DriverVersion属性,并且对象的HardwareID必须以IBM254D结尾
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like '%IBM254D'"
(5)查询类中所有对象的HardwareID和DriverVersion属性,并且对象的HardwareID必须以Monitor开头
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor%'"
(6)查询类中所有对象的HardwareID和DriverVersion属性,并且对象的HardwareID必须是以Monitor开头,以IBM254D结尾,而且之间只有一个任意的字符
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor_IBM254D'"
(7)查询类中所有对象的HardwareID和DriverVersion属性,并且对象的HardwareID必须是以Monitor开头,以IBM254D结尾,而且之间只有一个任意的字符,还要满足InfName必须是oem18.inf










