通过 WMI 启用 UWF
Posted
技术标签:
【中文标题】通过 WMI 启用 UWF【英文标题】:Enable UWF via WMI 【发布时间】:2018-08-29 09:23:03 【问题描述】:我正在编写一个需要启用 UWF 的程序。不幸的是,我没有使用 WMI 接口的经验,而且 UWF 文档没有 C# 或 .NET 示例。
启用 UWF 时,出现异常:“方法参数无效”。但是,根据文档 - 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);
【问题讨论】:
你试过只打电话给uwfClass.InvokeMethod("Enable", null);
- 没有inputParameters
吗?
是的,我应该提到...
【参考方案1】:
好吧,经过一番头疼,我终于知道为什么它不起作用了。 ManagementClass 只代表一个类,而不是对象(实例)。为了使它工作,我需要调用实例上的方法:
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,这可能是合乎逻辑的,但不是很明显。
【讨论】:
我知道我的回答有点晚了 ;-):我前段时间创建了一个小型 C# 应用程序(在 MIT 许可下开源),在其中我通过 CIM 启用和禁用 UW 过滤器(WMI ), 除其他事项外。也许它可以帮助某人......以上是关于通过 WMI 启用 UWF的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中运行 Powershell 脚本以启用键盘过滤器