在 C# 中获取键盘过滤器 WMI 参数

get keyboardfilter WMI parameters in c#

在 Windows IoT 上(但在正常的 Windows 10 上),您可以启用键盘过滤器和 shell 启动器。 我启用了 UWF、KB-Filter 和 Shell Launcher。

现在,我无法使用简单的 C#.NET 程序获取键盘过滤器的参数。

ManagementScope scope = new ManagementScope(@"root\standardcimv2\embedded");
using (ManagementClass mc = new ManagementClass(scope.Path.Path, "WEKF_Settings", null))
{
    ManagementObjectCollection moc = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
    }
}

UWF_Filter 正在运行。 WEKF_Settings and WESL_UserSetting 不工作,即使在 OS.

上启用了它们

我总是遇到异常 提供程序加载失败,即使应用程序是以管理员身份启动的。

在 powershell 中,我得到 class 没有任何问题:

Get-CimClass wekf_settings \.\root\standardcimv2\embedded | select -expand cimclassqualifiers

所以问题是:为什么我不能在 C# 中获取实例(使用 GetInstances())而只能使用 powershell?

正如信息(如果你得到同样的错误):
如果是 32 位,则查询在 Powershell 上也会失败。

您需要将程序编译为64位。然后代码就可以查询键盘过滤器了。

这就是解决方案。