0

我正在尝试创建一个轻量级应用程序,它将检查机器上的某些安全设置。目前,除了当前的加密状态外,我拥有一切。我被引导到 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);
        }
    }
}
4

1 回答 1

1

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

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

如果您打算使用框架提供的类,我猜您需要添加对 System.Management.dll 的引用。如果您打算在文件中使用该类,请至少更改名称空间。

于 2016-05-25T18:08:06.017 回答