TL/DR:
The main issue is this: I get a ManagementBaseObject
as returned value. But I cannot call its methods, as it doesn't have the InvokeMethod()
member, like ManagementObject
has. So how do I call its member-methods?
elaboration:
I open a BcdStore
object:
var bcdCls = new ManagementClass(@"root\WMI", "BcdStore", null); // OpenStore is a static method
var methodParams = bcdCls.GetMethodParameters("OpenStore");
methodParams["file"] = ""; // the default store
var results = bcdCls.InvokeMethod("OpenStore", methodParams, null);
Assert.IsNotNull(results);
var store = results["store"] as ManagementBaseObject;
Assert.IsNotNull(store);
But this object is useless:
// unfortunately, it is not a ManagementObject, so no InvokeMethod() is possible :-(
Assert.IsNull(store as ManagementObject);
store.InvokeMethod("EnumerateObjects", new object[] { 0 }); // Compilation error!
// ManagementBaseObject doesn't have an InvokeMethod member method!