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.h 中,包含处理策略层次结构的特定于实用工具的包装函数。
实用工具策略评估的关键函数
getUtilityEnabledValue() - 检查单个策略,然后是全局策略getConfiguredValue() - 低级注册表读取,具有层次结构getPolicyListValue() - 读取策略列表项(例如,PowerToys Run 插件)来源:src/common/utils/gpo.h253-265 src/common/utils/gpo.h208-251
GPOWrapper 类为 .NET 组件提供了访问 GPO 策略的托管接口
来源:src/common/GPOWrapper/GPOWrapper.h10-69 src/common/GPOWrapper/GPOWrapper.cpp7-247
PowerToys Runner 在启动和设置更改期间应用 GPO 策略。apply_general_settings() 函数在应用用户配置之前检查策略
来源:src/runner/general_settings.cpp120-135 src/runner/general_settings.cpp191-196
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 支持通过 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\PowerToysHKEY_CURRENT_USER\SOFTWARE\Policies\PowerToys