C# Bitlocker状态的WMI代码创建者-我哪里出错了?
我正在使用WMI代码创建者,代码看起来可以从应用程序正常工作。然而,它带来了我的代码内部的错误,我似乎无法动摇。我应该有一个参考资料才能让它发挥作用吗?如果是,我在哪里可以买到C# Bitlocker状态的WMI代码创建者-我哪里出错了?,c#,encryption,wmi,C#,Encryption,Wmi,我正在使用WMI代码创建者,代码看起来可以从应用程序正常工作。然而,它带来了我的代码内部的错误,我似乎无法动摇。我应该有一个参考资料才能让它发挥作用吗?如果是,我在哪里可以买到 public class MyWMIQuery { public static void Main() { try { ManagementObjectSearcher searcher =
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
,则会得到。在.NET类的每个MSDN页面上,您将在页面顶部看到两条信息
名称空间:系统管理程序集:System.Management(在System.Management.dll中) 第一行告诉您需要使用System.Management添加
如果要引用该对象,请使用code>或doSystem.Management.ManagementObjectSearcher
第二行告诉您,项目必须引用文件System.Management.dll
,代码才能找到类。如果在中搜索,则需要在列表中查找System.Management
(括号外的部分)
问题的第二部分是,您的项目中有一个名为Compliance Guide.ManagementObject
的类,Visual Studio正在提取该引用,而不是System.Management.ManagementObject
,请将您的foreach替换为
foreach (System.Management.ManagementObject queryObj in searcher.Get())
强制它使用正确的类。我怀疑是否有人能告诉您什么是“合规指南”。听起来你一直在疯狂地创造机会试图解决这个问题。这是一个非常简单的方法,确保您已经添加了对System.Management的引用,并使用System.Management放置代码>位于文件顶部。这是我通过另一个网站找到的一段代码,从未解析过。ComplianceGuide只是应用程序名称空间,它已在代码中进行了修改以适应。谢谢你发现了。好吧,除了一个错误,我把所有的错误都查出来了。这就是“foreach”,显然我对“GetEnumerator”没有定义。如何解决此问题?不知道,ManagementObjectCollection
确实实现了IEnumerable
,因此不应该发生错误。我会用更新的代码问一个新问题,问为什么foreach不工作。我在上面添加了信息,包括错误的图像。到目前为止,我已经按照您的建议添加了引用并更改了Foreach行。从您的图像中可以看到searcher
是一个合规指南。ManagementObjectSearcher
不是System.Management.ManagementObjectSercher
。我不知道你为什么要重新创建所有的管理类,但是那些命名冲突是你的问题。用System.Management.ManagementObjectSearcher searcher=new System.Management.ManagementObjectSearcher(…
小问题)替换searcher的声明。如何获取此控制台数据并在文本框中显示读取值?