通过 WMI 启用 UWF
Enable UWF via WMI
我正在编写一个需要启用 UWF 的程序。不幸的是,我没有使用 WMI 接口的经验,并且 UWF 文档没有 C# 或 .NET 示例。
当我启用 UWF 时,出现异常:'Invalid method Parameters(s)'。但是,根据文档 - https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/uwf-filter - Enable 没有输入参数。传递 null 也不起作用:
var scope = new ManagementScope(@"root\standardcimv2\embedded");
var uwfClass = new ManagementClass(scope.Path.Path, "UWF_Filter", null);
var inputParameters = uwfClass.GetMethodParameters("Enable");
var result = uwfClass.InvokeMethod("Enable", inputParameters, null);
好吧,折腾了好久,终于知道为什么不行了。 ManagementClass只代表一个class,不是对象(实例)。为了让它工作,我需要在实例上调用方法:
var instances = uwfClass.GetInstances();
foreach (ManagementObject instance in instances)
{
var result = instance.InvokeMethod("Enable", null);
break; //There should only be one instance, but to be sure, exit after first instance
}
这可能是合乎逻辑的,但如果您不习惯 WMI,则不是很明显。
我正在编写一个需要启用 UWF 的程序。不幸的是,我没有使用 WMI 接口的经验,并且 UWF 文档没有 C# 或 .NET 示例。
当我启用 UWF 时,出现异常:'Invalid method Parameters(s)'。但是,根据文档 - https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/uwf-filter - Enable 没有输入参数。传递 null 也不起作用:
var scope = new ManagementScope(@"root\standardcimv2\embedded");
var uwfClass = new ManagementClass(scope.Path.Path, "UWF_Filter", null);
var inputParameters = uwfClass.GetMethodParameters("Enable");
var result = uwfClass.InvokeMethod("Enable", inputParameters, null);
好吧,折腾了好久,终于知道为什么不行了。 ManagementClass只代表一个class,不是对象(实例)。为了让它工作,我需要在实例上调用方法:
var instances = uwfClass.GetInstances();
foreach (ManagementObject instance in instances)
{
var result = instance.InvokeMethod("Enable", null);
break; //There should only be one instance, but to be sure, exit after first instance
}
这可能是合乎逻辑的,但如果您不习惯 WMI,则不是很明显。