通过 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 脚本以启用键盘过滤器

启用WindowsEventLog服务出现错误怎么办

启用存储空间时获取物理磁盘的信息

如何在 C# 中获取启用(媒体)设备的列表

[error]:启用sqlserver配置管理器异常,内存不足

如何使用 wmi 在家长控制中添加程序限制