gpt4 book ai didi

c# - 在 C# 中使用 WMI 更改用户的家长控制设置

转载 作者:行者123 更新时间:2023-11-30 12:16:15 27 4
gpt4 key购买 nike

我对 WMI 和 COM 真的很陌生。

我想将一些参数更改为用户帐户的家长控制和唯一可用的 API 是 WMI。要使用的 WMI 提供程序类是 WpcUserSettings。

我不明白如何为每个用户修改参数。我必须创建一个每个用户的此类的 ManagmentObject,或者它们是否已经为每个用户实例化。

如果有人可以为我提供一个用户的示例代码,那将非常有帮助。

谢谢!

编辑:你好,我们又见面了。我使用您的示例来获取用户帐户名和 SIDS。但是,当我搜索 WpcUserSettings 时没有结果,我使用 WMI Studio 检查此类并且没有实例,因此我无法读取或设置属性。您知道如何解决这个问题吗?

修复:好的,我找到了窍门。您必须使用 ManagementObject.InvokeMethod() 为要添加到家长控制管理中的每个用户调用 WpcSystemSettings 的方法 AddUser(SID)。然后您可以在 WpcUserSettings 中启用家长控制并做任何您想做的事情。

最佳答案

root\CIMV2\Applications\WindowsParentalControls 命名空间中的WpcUserSettings wmi 类没有公开任何用户更新数据的方法,但公开的所有属性都是读/写,显然 SID 属性除外。您可以遍历特定用户的属性并更改值。

因此您可以使用类似检索所有用户的句子进行 Wmi 查询SELECT * FROM WpcUserSettings

或者这句话修改特定用户的属性

SELECT * FROM WpcUserSettings Where SID="要修改的用户的 SID"

然后更新您要修改的属性的值,最后调用 Put设置新值的方法。

检查此示例应用。

using System;
using System.Collections.Generic;
using System.Management;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2\\Applications\\WindowsParentalControls", "SELECT * FROM WpcUserSettings");
foreach (ManagementObject queryObj in searcher.Get())
{
if (queryObj["SID"] == "The user SID to modify")
{
//set the properties here

queryObj["AppRestrictions"] = true;
queryObj["HourlyRestrictions"] = true;
queryObj["LoggingRequired"] = false;
//queryObj["LogonHours"] = ;
//queryObj["OverrideRequests"] = ;
queryObj["WpcEnabled"] = true;
queryObj.Put();
}
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred setting the WMI data: " + e.Message);
}
Console.ReadKey();
}
}
}

关于c# - 在 C# 中使用 WMI 更改用户的家长控制设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com