打开本地组策略编辑器出现提示 找不到资源"$(presentation.LetAppsAccessPasskeys)"(在属性 presentation 中引用). 文件 C:\WINDOWS\PolicyDefinitions\AppPrivacy.admx, 行 405, 列 268
问题产生的影响: 缺失 计算机配置-管理模板-Windows 组件-应用隐私
出现问题的版本: Windows 11 25H2 26200.8313
出现问题的组策略模板: C:\Windows\PolicyDefinitions\AppPrivacy.admx 与 C:\Windows\PolicyDefinitions\zh-CN\AppPrivacy.adml, AppPrivacy.adml 的位置依据系统语言而定
与 Windows 11 25H2 26200.8246 的 AppPrivacy.admx 和 AppPrivacy.adml 相比多出以下内容:
AppPrivacy.admx:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 <policy name ="LetAppsAccessPasskeys" class ="Machine" displayName ="$(string.LetAppsAccessPasskeys_Name)" explainText ="$(string.LetAppsAccessPasskeys_Explain)" presentation ="$(presentation.LetAppsAccessPasskeys)" key ="Software\Policies\Microsoft\Windows\AppPrivacy" > <parentCategory ref ="AppPrivacy" /> <supportedOn ref ="windows:SUPPORTED_Windows_10_0" /> <elements > <enum id ="LetAppsAccessPasskeys_Enum" valueName ="LetAppsAccessPasskeys" > <item displayName ="$(string.UserInControl)" > <value > <decimal value ="0" /> </value > </item > <item displayName ="$(string.ForceAllow)" > <value > <decimal value ="1" /> </value > </item > <item displayName ="$(string.ForceDeny)" > <value > <decimal value ="2" /> </value > </item > </enum > <multiText id ="LetAppsAccessPasskeys_UserInControlOfTheseApps_List" valueName ="LetAppsAccessPasskeys_UserInControlOfTheseApps" /> <multiText id ="LetAppsAccessPasskeys_ForceAllowTheseApps_List" valueName ="LetAppsAccessPasskeys_ForceAllowTheseApps" /> <multiText id ="LetAppsAccessPasskeys_ForceDenyTheseApps_List" valueName ="LetAppsAccessPasskeys_ForceDenyTheseApps" /> </elements > </policy > <policy name ="LetAppsAccessPasskeysEnumeration" class ="Machine" displayName ="$(string.LetAppsAccessPasskeysEnumeration_Name)" explainText ="$(string.LetAppsAccessPasskeysEnumeration_Explain)" presentation ="$(presentation.LetAppsAccessPasskeysEnumeration)" key ="Software\Policies\Microsoft\Windows\AppPrivacy" > <parentCategory ref ="AppPrivacy" /> <supportedOn ref ="windows:SUPPORTED_Windows_10_0" /> <elements > <enum id ="LetAppsAccessPasskeysEnumeration_Enum" valueName ="LetAppsAccessPasskeysEnumeration" > <item displayName ="$(string.UserInControl)" > <value > <decimal value ="0" /> </value > </item > <item displayName ="$(string.ForceAllow)" > <value > <decimal value ="1" /> </value > </item > <item displayName ="$(string.ForceDeny)" > <value > <decimal value ="2" /> </value > </item > </enum > <multiText id ="LetAppsAccessPasskeysEnumeration_UserInControlOfTheseApps_List" valueName ="LetAppsAccessPasskeysEnumeration_UserInControlOfTheseApps" /> <multiText id ="LetAppsAccessPasskeysEnumeration_ForceAllowTheseApps_List" valueName ="LetAppsAccessPasskeysEnumeration_ForceAllowTheseApps" /> <multiText id ="LetAppsAccessPasskeysEnumeration_ForceDenyTheseApps_List" valueName ="LetAppsAccessPasskeysEnumeration_ForceDenyTheseApps" /> </elements > </policy > <policy name ="LetAppsAccessForegroundText" class ="Machine" displayName ="$(string.LetAppsAccessForegroundText_Name)" explainText ="$(string.LetAppsAccessForegroundText_Explain)" presentation ="$(presentation.LetAppsAccessForegroundText)" key ="Software\Policies\Microsoft\Windows\AppPrivacy" > <parentCategory ref ="AppPrivacy" /> <supportedOn ref ="windows:SUPPORTED_Windows_11_0_25H2" /> <elements > <enum id ="LetAppsAccessForegroundText_Enum" valueName ="LetAppsAccessForegroundText" > <item displayName ="$(string.UserInControl)" > <value > <decimal value ="0" /> </value > </item > <item displayName ="$(string.ForceAllow)" > <value > <decimal value ="1" /> </value > </item > <item displayName ="$(string.ForceDeny)" > <value > <decimal value ="2" /> </value > </item > </enum > <multiText id ="LetAppsAccessForegroundText_UserInControlOfTheseApps_List" valueName ="LetAppsAccessForegroundText_UserInControlOfTheseApps" /> <multiText id ="LetAppsAccessForegroundText_ForceAllowTheseApps_List" valueName ="LetAppsAccessForegroundText_ForceAllowTheseApps" /> <multiText id ="LetAppsAccessForegroundText_ForceDenyTheseApps_List" valueName ="LetAppsAccessForegroundText_ForceDenyTheseApps" /> </elements > </policy >
AppPrivacy.adml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <string id ="LetAppsAccessPasskeys_Name" > 允许应用访问密钥</string > <string id ="LetAppsAccessPasskeys_Explain" > 此策略设置指定应用是否可访问密钥。 可以指定所有应用的默认设置,也可以通过指定包系列名称来指定每应用设置。可以通过使用 Get-AppPackage Windows PowerShell cmdlet 来获取应用的包系列名称。每应用设置会替代默认设置。 如果你选择“由用户控制”选项,你组织中的员工可在设备上使用“设置”> “隐私”来决定应用是否可访问密钥。 如果你选择“强制允许”选项,则将允许应用访问密钥,并且你组织中的员工无法更改此设置。 如果你选择“强制拒绝”选项,则禁止应用访问密钥,并且你组织中的员工无法更改此设置。 如果禁用或未配置此策略设置,你组织中的员工可以在设备上使用“设置”> “隐私”来决定应用是否可访问密钥。 在设备上应用此组策略对象时,如果某个应用处于打开状态,则员工必须重启该应用或设备,才能将策略更改应用到该应用。 </string > <string id ="LetAppsAccessPasskeysEnumeration_Name" > 允许应用枚举密钥</string > <string id ="LetAppsAccessPasskeysEnumeration_Explain" > 此策略设置指定应用是否可枚举密钥。 可以指定所有应用的默认设置,也可以通过指定包系列名称来指定每应用设置。可以通过使用 Get-AppPackage Windows PowerShell cmdlet 来获取应用的包系列名称。每应用设置会替代默认设置。 如果你选择“由用户控制”选项,你组织中的员工可在设备上使用“设置”> “隐私”来决定应用是否可枚举密钥。 如果你选择“强制允许”选项,则将允许应用枚举密钥,并且你组织中的员工无法更改此设置。 如果你选择“强制拒绝”选项,则禁止应用枚举密钥,并且你组织中的员工无法更改此设置。 如果禁用或未配置此策略设置,你组织中的员工可以在设备上使用“设置”> “隐私”来决定应用是否可枚举密钥。 在设备上应用此组策略对象时,如果某个应用处于打开状态,则员工必须重启该应用或设备,才能将策略更改应用到该应用。 </string > <string id ="LetAppsAccessForegroundText_Name" > 允许 Windows 应用访问前台应用程序中的文本内容</string > <string id ="LetAppsAccessForegroundText_Explain" > 此策略设置指定 Windows 应用是否可访问前台应用程序的文本内容。 可以指定所有应用的默认设置,也可以通过指定包系列名称来指定每应用设置。可以通过使用 Get-AppPackage Windows PowerShell cmdlet 来获取应用的包系列名称。每应用设置会替代默认设置。 如果选择“由用户控制”选项,则你组织中的员工可在设备上使用“设置”> “隐私”来决定是否允许 Windows 应用访问前台应用程序的文本内容。 如果选择“强制允许”选项,则将允许 Windows 应用访问前台应用程序的文本内容,并且你组织中的员工无法更改此设置。 如果选择“强制拒绝”选项,则不允许 Windows 应用访问前台应用程序的文本内容,并且你组织中的员工无法更改此设置。 如果禁用或未配置此策略设置,你组织中的员工可在设备上使用“设置”> “隐私”来决定是否允许 Windows 应用访问前台应用程序的文本内容。 在设备上应用此组策略对象时,如果某个应用处于打开状态,则员工必须重启该应用或设备,才能将策略更改应用到该应用。 </string > <presentation id ="LetAppsAccessForegroundText" > <dropdownList refId ="LetAppsAccessForegroundText_Enum" noSort ="true" defaultItem ="0" > 所有应用的默认设置:</dropdownList > <text > 由用户控制这些特定应用(使用程序包系列名称):</text > <multiTextBox refId ="LetAppsAccessForegroundText_UserInControlOfTheseApps_List" /> <text > 强制允许这些特定应用(使用包系列名称):</text > <multiTextBox refId ="LetAppsAccessForegroundText_ForceAllowTheseApps_List" /> <text > 强制拒绝这些特定应用(使用包系列名称):</text > <multiTextBox refId ="LetAppsAccessForegroundText_ForceDenyTheseApps_List" /> </presentation >
临时解决方案: 将相应文件多出的部分删除
由于存在权限问题, 需要更改二者的文件权限, 步骤如下:
右键文件-属性-安全
点击 高级 选项, 在弹出的窗口中点击 所有者 旁边的 更改 按钮
在弹出的窗口中输入要选择的对象名称, 这里输入本地账户的用户名即可, 输入后点击 检查名称 确保无误 (一般无任何提示即为无误). 然后连续点击 确定 保存更改
回到属性-安全窗口, 点击 编辑 按钮
在弹出的窗口中选择刚才更改后的所有者用户, 更改该用户的权限, 添加 写入, 修改, 完全控制 权限, 然后连续点击 确定 保存修改
更改完相应文件后, 若需要撤回权限更改操作, 只需将上述操作反向进行即可, 注意需要先撤回权限修改, 然后撤回所有者的更改. 将所有者更改回 TrustedInstaller 需要输入完整名称: NT SERVICE\TrustedInstaller
阿三代码再次发力, 疑似组策略中新增的选项对应的功能没写完
后续 Windows 更新也许会解决这个问题
目前 Windows 最新版本已解决这个问题