为什么 new ManagementObject(@"root\WMI", "BcdStore", null) 抛出异常?

Why new ManagementObject(@"root\WMI", "BcdStore", null) throws exception?

使用 WMI Code Creator,我正在尝试向 root\WMI\BcdStore.EnumerateObjects() 发出呼叫。但是我在第一行代码中遇到异常:

var classInstance = new ManagementObject(
    @"root\WMI", "BcdStore", null); // <== exception!!!

// Obtain in-parameters for the method
var inParams = classInstance.GetMethodParameters("EnumerateObjects");

// ... 

例外情况是:

A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in System.Management.dll

Additional information: Specified argument was out of the range of valid values.

怎么了?

您正在使用的 ManagementObject 构造函数版本需要一个 WMI 路径作为参数,而您只传递 class 名称,因此您必须使用类似这样的东西。

var classInstance = ManagementObject(@"root\WMI", "BcdStore.FilePath=''", null);

注意:系统存储由空字符串 ("") 表示。