我正在尝试创建一个轻量级应用程序,它将检查计算机上的某些安全设置。目前,我拥有除当前加密状态之外的所有内容。我是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);
}
}
}
答案 0 :(得分:1)
我在屏幕截图中看到一个名为ManagementObjectCollection.cs的文件。
我打算走出困境并猜测由于某种原因,该类的命名空间定义与框架提供的类的确切命名空间定义匹配,并且该文件中的任何内容都未实现GetEnumerator 。新项目中的代码和正确的引用不会显示错误。
如果您打算使用框架提供的类,我猜您需要add a reference到System.Management.dll。如果您打算在文件中使用该类,请至少更改命名空间。