菜单

组策略集成

相关源文件

PowerToys 中的组策略对象 (GPO) 支持为企业管理员提供了集中控制在托管 Windows 环境中 PowerToys 配置和行为的能力。此系统允许 IT 管理员通过标准的 Windows 组策略管理工具强制执行策略,以控制哪些实用工具已启用、更新行为以及其他操作设置。

有关一般 PowerToys 设置管理的信息,请参阅设置系统。有关单个模块配置的详细信息,请参阅PowerToys 模块

架构概述

PowerToys GPO 集成包括管理模板(ADMX/ADML 文件)、本地注册表读取实用程序以及集成策略执行到整个应用程序的托管包装器组件。

来源src/gpo/assets/PowerToys.admx1-619 src/gpo/assets/en-US/PowerToys.adml1-317 src/common/utils/gpo.h1-500 src/common/GPOWrapper/GPOWrapper.h1-78

策略类别和注册表结构

PowerToys 策略被组织成几个功能类别,每个类别都存储在 SOFTWARE\Policies\PowerToys 路径下的特定注册表位置。

实用工具启用状态策略

可以通过专用策略控制单个 PowerToys 实用工具,这些策略会覆盖用户偏好设置。

策略类别注册表值模式示例
单个实用工具ConfigureEnabledUtility{ModuleName}ConfigureEnabledUtilityFancyZones
全局实用工具控制ConfigureGlobalUtilityEnabledState影响所有实用工具
文件资源管理器附加项ConfigureEnabledUtilityFileExplorer{Type}ConfigureEnabledUtilityFileExplorerSVGPreview

安装和更新策略

来源src/common/utils/gpo.h69-93 src/gpo/assets/PowerToys.admx480-559

策略评估流程

GPO 系统遵循分层评估模式,其中计算机级别策略优先于用户级别策略,而特定的实用工具策略会覆盖全局设置。

getConfiguredValue() 函数实现了评估逻辑,该函数返回一个 gpo_rule_configured_t 枚举

返回值含义操作
gpo_rule_configured_enabled策略强制启用将用户设置覆盖为启用
gpo_rule_configured_disabled策略强制禁用将用户设置覆盖为禁用
gpo_rule_configured_not_configured未设置策略使用用户偏好设置
gpo_rule_configured_unavailable注册表访问错误使用用户偏好设置
gpo_rule_configured_wrong_value无效策略值使用用户偏好设置

来源src/common/utils/gpo.h151-206 src/common/utils/gpo.h8-16

实现细节

本地 GPO 读取层

核心 GPO 功能实现在 gpo.h 中,包含处理策略层次结构的特定于实用工具的包装函数。

实用工具策略评估的关键函数

  • getUtilityEnabledValue() - 检查单个策略,然后是全局策略
  • getConfiguredValue() - 低级注册表读取,具有层次结构
  • getPolicyListValue() - 读取策略列表项(例如,PowerToys Run 插件)

来源src/common/utils/gpo.h253-265 src/common/utils/gpo.h208-251

托管的 GPOWrapper 接口

GPOWrapper 类为 .NET 组件提供了访问 GPO 策略的托管接口

来源src/common/GPOWrapper/GPOWrapper.h10-69 src/common/GPOWrapper/GPOWrapper.cpp7-247

与 PowerToys 组件的集成

Runner 集成

PowerToys Runner 在启动和设置更改期间应用 GPO 策略。apply_general_settings() 函数在应用用户配置之前检查策略

来源src/runner/general_settings.cpp120-135 src/runner/general_settings.cpp191-196

Settings UI 集成

Settings UI 通过禁用控件并在策略处于活动状态时显示信息性消息来遵守 GPO 策略

UI 使用属性来跟踪 GPO 状态并绑定控件可用性

来源src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs647-650 src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs482-490 src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml266-284

PowerToys Run 插件策略

PowerToys Run 支持通过 GPO 进行细粒度的插件管理,包括全局和单个插件控件

策略类型注册表位置目的
全局插件控制PowerLauncherAllPluginsEnabledState启用/禁用所有插件
单个插件控制PowerLauncherIndividualPluginEnabledList\{PluginID}每个插件的控制

单个插件策略使用插件的唯一 ID 作为注册表值名称,具有以下可能值

  • 0 = 已禁用
  • 1 = 已启用
  • 2 = 用户控制

来源src/common/utils/gpo.h20-21 src/gpo/assets/PowerToys.admx560-576

注册表值常量和命名

所有 GPO 注册表值名称都定义为 gpo.h 中的常量,遵循一致的命名模式

注册表路径同时使用计算机和用户范围

  • 计算机范围:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\PowerToys
  • 用户范围:HKEY_CURRENT_USER\SOFTWARE\Policies\PowerToys

来源src/common/utils/gpo.h19-93 src/common/utils/gpo.h18-24