【发布时间】:2016-05-25 17:34:01
【问题描述】:
我正在尝试创建一个轻量级应用程序来检查机器上的某些安全设置。目前,除了当前的加密状态外,我拥有一切。我被引导到 WMI 创建者,这似乎是最安全的选择(虽然有点慢)但是,我收到以下错误:
“foreach 语句无法对“ComplianceGuide.ManagementObjectCollection”类型的变量进行操作,因为“ComplianceGuide.ManagementObjectCollection”不包含“GetEnumerator”的公共定义
在哪里添加定义? C# 有时令人困惑。一个视频教程会很棒。
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2\\Security\\MicrosoftVolumeEncryption",
"SELECT * FROM Win32_EncryptableVolume");
foreach (System.Management.ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_EncryptableVolume instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("ProtectionStatus: {0}", queryObj["ProtectionStatus"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
【问题讨论】:
-
"我去哪里添加定义?"您将其添加到类中 - 直接或通过实现
IEnumerable或IEnumerable<T>。 -
“视频教程会很棒” - others think so too
-
@DStanley 好像 Joe 正在使用一个据称已经实现 IEnumerable 的标准类 (msdn.microsoft.com/en-us/library/…)。
-
@GiladNaaman
ComplianceGuide命名空间似乎另有说明。 -
您是在尝试使用内置的
ManagementObjectCollection类还是在ComplianceGuide命名空间中定义了自己的类?