WMI Code Creator for Bitlocker Status - 我哪里出错了?
WMI Code Creator for Bitlocker Status - where did i go wrong?
我正在使用 WMI Code Creator,代码看起来可以在应用程序中正常运行。但是,它在我的代码内部出现了我似乎无法摆脱的错误。我应该为这个工作提供参考吗?如果是这样,我在哪里可以得到它?
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);
}
}
}
(点击看大图)
如果您在 MSDN 中搜索 ManagementObjectSearcher
,您会得到 this page。在 .NET 的每个 MSDN 页面上 class 您将在页面顶部看到两条信息。
Namespace: System.Management
Assembly: System.Management (in System.Management.dll)
第一行告诉你,如果你想引用这个对象,你需要添加using System.Management;
或者做System.Management.ManagementObjectSearcher
。
第二行告诉您您的项目必须引用文件 System.Management.dll
,您的代码才能找到 class。如果您在 Add Reference Dialog 中搜索,则需要在列表中查找 System.Management
(括号外的部分)。
你的问题的第二部分是你的项目中有一个名为 ComplianceGuide.ManagmentObject
的 class 并且 Visual Studio 正在选择该引用而不是 System.Management.ManagementObject
,替换你的foreach 与
foreach (System.Management.ManagementObject queryObj in searcher.Get())
强制它使用正确的 class。
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);
}
}
}
(点击看大图)
如果您在 MSDN 中搜索 ManagementObjectSearcher
,您会得到 this page。在 .NET 的每个 MSDN 页面上 class 您将在页面顶部看到两条信息。
Namespace: System.Management
Assembly: System.Management (in System.Management.dll)
第一行告诉你,如果你想引用这个对象,你需要添加using System.Management;
或者做System.Management.ManagementObjectSearcher
。
第二行告诉您您的项目必须引用文件 System.Management.dll
,您的代码才能找到 class。如果您在 Add Reference Dialog 中搜索,则需要在列表中查找 System.Management
(括号外的部分)。
你的问题的第二部分是你的项目中有一个名为 ComplianceGuide.ManagmentObject
的 class 并且 Visual Studio 正在选择该引用而不是 System.Management.ManagementObject
,替换你的foreach 与
foreach (System.Management.ManagementObject queryObj in searcher.Get())
强制它使用正确的 class。