如何将foreach语句添加到我当前的定义中?

时间:2016-05-25 17:34:02

标签: c# foreach bitlocker

我正在尝试创建一个轻量级应用程序,它将检查计算机上的某些安全设置。目前,我拥有除当前加密状态之外的所有内容。我是WMI创建者的主角,这似乎是最安全的赌注(都有点慢)但是,我收到的错误如下:

" foreach语句不能对类型' ComplianceGuide.ManagementObjectCollection'的变量进行操作。因为' ComplianceGuide.ManagementObjectCollection'不包含' GetEnumerator'的公开定义

我在哪里添加定义? C#有时候很混乱。视频教程将是真棒。

enter image description here

    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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我在屏幕截图中看到一个名为ManagementObjectCollection.cs的文件。

我打算走出困境并猜测由于某种原因,该类的命名空间定义与框架提供的类的确切命名空间定义匹配,并且该文件中的任何内容都未实现GetEnumerator 。新项目中的代码和正确的引用不会显示错误。

如果您打算使用框架提供的类,我猜您需要add a reference到System.Management.dll。如果您打算在文件中使用该类,请至少更改命名空间。