在这篇文章中,我们看到了如何使用 Windows Management Instrumentation – WMI 检索所有逻辑驱动器,以及如何找到所有网络适配器。
假设您想获取在本地“root”机器上运行的所有 Windows 服务及其属性的列表,即阅读此处列出的服务:
以下代码将查找找到的所有 Windows 服务的所有非空属性:
private static void ListAllWindowsServices()
{
ManagementObjectSearcher windowsServicesSearcher = new ManagementObjectSearcher("root\\cimv2", "select * from Win32_Service");
ManagementObjectCollection objectCollection = windowsServicesSearcher.Get();
Console.WriteLine("There are {0} Windows services: ", objectCollection.Count);
foreach (ManagementObject windowsService in objectCollection)
{
PropertyDataCollection serviceProperties = windowsService.Properties;
foreach (PropertyData serviceProperty in serviceProperties)
{
if (serviceProperty.Value != null)
{
Console.WriteLine("Windows service property name: {0}", serviceProperty.Name);
Console.WriteLine("Windows service property value: {0}", serviceProperty.Value);
}
}
Console.WriteLine("---------------------------------------");
}
}
在撰写这篇文章时,我的 PC 上运行了 196 个服务。以下是 Adobe Flash Player 更新服务的输出示例:
一旦您知道 WMI 类的属性名称,您就可以扩展 SQL 查询。例如,这是查找所有非运行服务的方法:
ManagementObjectSearcher windowsServicesSearcher = new ManagementObjectSearcher("root\\cimv2", "select * from Win32_Service where Started = FALSE");
您可以在此处查看与诊断相关的所有帖子。