使用父控件设置 API

日志记录之前会讨论设置,因为日志记录是用户设置的条件。

WMI API 设置写入/读取

WMI API 提供对由 Wpcsprov.mof 架构文件中定义的家长控制基础结构实例化的所有设置的非抽象 (原始) 访问权限。 设置存储位于 \root\CIMV2\Applications\WindowsParentalControls 命名空间中,其中以下类定义定义了架构。 将记录扩展性元素。

每台计算机:

  • WpcSystemSettings (一个实例)
    • AddUser () 和 RemoveUser () 方法分别创建和删除给定 SID 的家长控制设置。
    • 当前游戏分级系统的属性,以及与管理员检查日志相关的跟踪和通知。
    • 扩展性:用于只读和读/写 HTTP 应用程序的属性以及用于 Web 内容筛选的 URL 豁免列表、Web 内容筛选器替代 ID 和名称资源 DLL 路径和 ID,以及字段和标头名称注册的自定义日志事件编号。
  • WpcRatingsSystem (每个安装的分级系统) 一个实例
    • WpcRating (每个分级级别) 一个实例。
    • WpcRatingDescriptor (每个分级描述符) 一个实例。
  • 扩展性:WpcExtension () 添加的每个家长控制面板扩展性链接一个实例。
    • GUID、子系统、ID、图像资源路径、禁用状态图像资源路径、可执行文件路径、显示名称资源 DLL 路径和 ID、字幕资源 DLL 路径和 ID 的属性。

按控制的用户:

  • WpcUserSettings 为每个受控用户 (一个实例)

    • 用于拥有 SID 的属性、家长控制开/关标志、登录开/关标志、时间限制开/关标志、覆盖已启用标志、登录小时掩码和常规应用程序限制开/关标志。

    • 在Windows 8现有属性表示每小时的前半小时。 添加了一个新的半小时属性来表示每小时的后半部分。 又引入了一项新财产,以代表每日时间津贴。

      Windows 7 和 Windows Vista: 支持 1 小时粒度的计时器限制。

  • WpcWebSettings (每个受控用户) 一个实例

    • 用于拥有 SID 的属性、筛选器打开/关闭标志、筛选器级别、文件下载阻止标志、未分级的站点阻止标志。
  • WpcUrlOverride (在 URL 替代列表中显式允许或拒绝的每个 URL 一个实例,用作 Web 内容筛选的允许/阻止列表)

    • 用于拥有 SID、受影响的 URL、允许/阻止状态的属性。
  • WpcAppOverride (常规应用程序限制应用程序替代列表中显式允许的每个路径一个实例)

    • 用于拥有 SID 的属性。 更安全的规则 ID,应用程序的路径。
  • WpcGamesSettings (每个受控用户) 一个实例

    • 拥有 SID 的属性、允许的游戏标志、这些设置的分级系统的 GUID、允许未分级的游戏标志、当前系统下允许的最大分级 ID、拒绝的描述符的集合。
  • WpcGameOverride (显式允许或拒绝的每个应用程序 ID 一个实例)

    • 用于拥有 SID 的属性、标识游戏的应用程序 ID、允许/拒绝状态。

数据表示说明

架构中的多个设置受具有属性non_null的 .mof 文件的约束。 这些变量不能设置为 null 变体。 对于所有非数组类型,家长控制代码将初始化值。 对于数组,可以使用 null 变量、空变量或零大小的变体数组写入空状态。 WMI 提供程序将在读取时将所有这些规范化为 null 变体状态表示形式。

使用 WMI 注册 UI 扩展性链接需要指定以下信息:

  • GUID - 如果多个链接是通用包或套件的一部分,则它们可能共享同一 GUID。
  • 子系统 - 用于指示链接类型的分类,例如套件或独立兼容的应用程序
  • 命名资源 DLL 路径和 ID - 指定要为链接显示的显示名称的资源。
  • 字幕资源 DLL 路径和 ID - 为名称下方的其他文本指定资源。
  • 图像路径 - 24 × 24 像素位图的完整路径, (BMP) ,每像素颜色深度为 8 位,最好是 alpha 通道。 这是以与 shell 扩展一致的方式指定的: <文件系统路径>,<负资源 ID\1>。 例如:C:\Windows\System32\Wpccpl.dll,-20。
  • 禁用的图像路径 - 与上面的图像路径相同,但显示禁用状态的位图变体除外。 当家长控制关闭时,会显示此图像。
  • Exe 路径 - 要使用 ShellExecute () 调用的可执行文件的完整路径。 必须使用反斜杠指定此路径,否则链接不会调用可执行文件。 在 exe 路径后添加 %SID% 令牌将导致链接执行替换当前正在查看中心页面的用户的 SID 字符串。 然后,可执行文件可以使用 SID 字符串来管理指定用户的功能。

应用程序卸载必须删除扩展性链接注册。

通过将 FilterID 属性设置为与现有已注册 UI 扩展性链接相同的 GUID,显示的链接将从“其他设置”中的通用链接提升为独占 Web 限制链接。 这是计算机范围的设置,因此将导致内置 Web 内容筛选器 LSP 绕过所有受控用户的所有筛选。 还应在 FilterName 属性中设置描述性名称,该属性由资源 DLL 和 ID 的路径指定。

家长控制系统建议从任何替代 Web 筛选器中执行以下操作:

  • 接受用户的总体家长控制开/关状态。
  • 遵循用户的“活动报告”设置。
  • 监视 FilterID 属性。 如果它从供应商的指定 GUID 更改,则另一个筛选器已获得所有权,供应商的筛选器应禁用自身。 添加了 COM 接口,以减少与 WMI 调用相比定期检查此更改的开销。
  • 强烈建议遵循只读和读/写 HTTP 应用程序和 URL 豁免列表条目。
  • 建议遵循每用户 URL 替代列表 (允许/阻止列表) 。
  • 可靠以快速进行用户切换。

家长控制对 Web 或其他内容筛选器插入 Windows 以实现筛选的方式没有任何限制。 供应商可以利用其当前投资或首选技术 (LSP、TDI 和其他) 。

卸载供应商的筛选器必须取消注册 FilterID 和 FilterName 条目。 这是通过将 FilterID 设置为 GUID_NULL,将 FilterName 设置为变体 null 来执行的。 然后,将重新启用内置 Web 内容筛选器。

请注意,重新启用内置 Web 筛选器只会筛选新会话,而不会筛选切换前的活动会话。

Web 内容筛选器允许/阻止列表导出/导入格式

Windows 8不支持此功能。

Windows 7 和 Windows Vista: 支持此功能。

<WebAddresses>

<URL AllowBlock=“1”>https://alloweddomain.com/</URL>

<URL AllowBlock=“1”>https://allowedurl.com/allowed/default.html</URL>

<URL AllowBlock=“2”>https://blockeddomain.com/</URL>

<URL AllowBlock=“2”>https://blockedurl.com/blocked/default.html</URL>

</WebAddresses>

应用程序限制替代说明

应用程序限制替代是按用户设置的,以允许特定的二进制文件或路径。 如果配置了新的家长控制用户,并且该用户需要应用程序限制替代,则建议将注册表中的 Windows 运行键与标记为需要部署提升的小型应用程序一起使用以写入替代。 这将导致一次性凭据提示为用户配置替代,之后替代的目标二进制文件不会因管理员进一步的替代提示而对用户造成麻烦。

设置更改生效所需的操作

如果管理员更改已登录标准用户的设置,则会生成警告消息。 它指出,在受控用户注销并重新登录之前,设置更改可能不会生效。 这是保守的设计。 大多数设置将在受控用户登录时几乎立即生效。 一个例外是游戏,其中设置将在下次运行游戏资源管理器或尝试调用游戏时生效。

代码示例

SDK 中提供了 C++ 示例,演示如何使用设置扩展性功能。 请参阅家长控制示例部分。

独立测试工具

Wmimgmt.msc 插件和 Wbemtest.exe 工具有助于检查类和实例。

64 位注意事项

64 位 Windows 操作系统版本当前同时安装了 32 位 WMI 提供程序和 64 位提供程序。

常规代码开发和调试

如果 Visual Studio 用于设置管理代码开发,则本地调试将需要使用管理员权限运行 Visual Studio, (使用命令行或右键单击选项) 以管理员身份调用。 这是由 UAC 实现的进程和消息隔离造成的。

读取的最低符合性 API 设置

接口和方法

由头文件 Wpcapi.h 控制的合规性 API 使用 COM 接口提供对以下设置的简化只读访问。

IWindowsParentalControls 根接口方法提供对以下对象的访问:

  • IWPCSettings 方法:
    • IsLoggingRequired () - 是否为用户将活动报告配置为打开?
    • GetLastSettingsChangeTime () - 应用程序可以识别自上一个检查以来是否有任何设置策略发生更改。
    • GetRestrictions () - 阅读是否将 Web 限制、时间限制、游戏限制或应用程序限制设置为打开。
  • IWPCWebSettings 方法:
    • GetSettings () – 检索用于打开或关闭筛选器的标志,并阻止下载。
    • RequestURLOverride () - 将请求输入管理员替代 (肩上审批) 机制,该机制将显示一个对话框,其中包含要批准的 URL。
  • IWPCGamesSettings 方法:
    • IsBlocked () - 对于给定的游戏应用程序 ID,是受家长控制阻止的游戏及其原因。
  • GetVisibility () - 提供有关家长控制 UI 当前是否隐藏的信息。
  • GetWebFilterInfo () - 提供一个接口,用于获取当前处于活动状态的 Web 内容筛选器的 ID。

代码示例

演示合规性 API 用法的 SDK 中提供了 C++ 示例。 请参阅家长控制示例部分。