这2个中的第一个锁定BitLocked驱动器。第二个InvokeMethod
抛出:'无效的对象路径'。为什么?他们似乎是等效的。
//Using a search:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2\\Security\\MicrosoftVolumeEncryption", "SELECT * FROM Win32_EncryptableVolume WHERE DriveLetter = 'E:'");
foreach (ManagementObject classInstance1 in searcher.Get())
classInstance1.InvokeMethod("Lock", new object[] { true });
//Direct:
ManagementObject classInstance2 = new ManagementObject("root\\CIMV2\\Security\\MicrosoftVolumeEncryption", "Win32_EncryptableVolume.DriveLetter='E:'", null);
classInstance2.InvokeMethod("Lock", new object[] { 0 });//throws: 'Invalid object path'.
答案 0 :(得分:0)
似乎您没有调用Get()
方法。试试这个:
ManagementObject classInstance2 = new ManagementObject("root\\CIMV2\\Security\\MicrosoftVolumeEncryption", "Win32_EncryptableVolume.DriveLetter='E:'", null);
classInstance2.Get();
classInstance2.InvokeMethod("Lock", new object[] { 0 });
查看此文档:https://docs.microsoft.com/en-us/windows/desktop/wmisdk/retrieving-an-instance
答案 1 :(得分:0)
不幸的是,您不能使用不是键属性的属性实例化对象。 WMI中的关键属性是具有CIM_Key qualifier的属性,WMI文档进一步详细介绍了Key Qualifier。有关WMI使用带有键的完整路径引用对象的WMI要求的更多信息,您可以阅读有关Instance Object Paths的WMI文档。
在C#中,对于您指定的特定类(Win32_EncryptableVolume
),您只能通过使用ManagementObjectSearcher
来完成您要尝试执行的操作,如示例所示。这是因为您试图获取基于标准属性而不是键属性的实例。
探索WMI的一个很好的实用工具是WMI Explorer 2.0。这给了WMI类一个很好的可视化表示。在此实用程序中,关键属性用星号标识。
答案 2 :(得分:-1)
我只是假设正确答案与其他人所提到的相似,但不完全相同。
The class's page提到DeviceID
具有以下属性:
预选赛:键
由于缺乏实际的文档,我认为通过其 Key 搜索某事物本身会返回该事物。在通过其他方式搜索时,将返回满足该条件的对象列表。即使列表仅包含1个条目-它也不是对象本身,而是列表。
但是如果有人可以提供一些文档,那就太好了。