打开本地组策略编辑器出现提示 找不到资源"$(presentation.LetAppsAccessPasskeys)"(在属性 presentation 中引用). 文件 C:\WINDOWS\PolicyDefinitions\AppPrivacy.admx, 行 405, 列 268

问题产生的影响: 缺失 计算机配置-管理模板-Windows 组件-应用隐私

出现问题的版本: Windows 11 25H2 26200.8313

出现问题的组策略模板: C:\Windows\PolicyDefinitions\AppPrivacy.admxC:\Windows\PolicyDefinitions\zh-CN\AppPrivacy.adml, AppPrivacy.adml 的位置依据系统语言而定

Windows 11 25H2 26200.8246AppPrivacy.admxAppPrivacy.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 来获取应用的包系列名称。每应用设置会替代默认设置。

如果你选择“由用户控制”选项,你组织中的员工可在设备上使用“设置”&gt;“隐私”来决定应用是否可访问密钥。

如果你选择“强制允许”选项,则将允许应用访问密钥,并且你组织中的员工无法更改此设置。

如果你选择“强制拒绝”选项,则禁止应用访问密钥,并且你组织中的员工无法更改此设置。

如果禁用或未配置此策略设置,你组织中的员工可以在设备上使用“设置”&gt;“隐私”来决定应用是否可访问密钥。

在设备上应用此组策略对象时,如果某个应用处于打开状态,则员工必须重启该应用或设备,才能将策略更改应用到该应用。
</string>
<string id="LetAppsAccessPasskeysEnumeration_Name">允许应用枚举密钥</string>
<string id="LetAppsAccessPasskeysEnumeration_Explain">此策略设置指定应用是否可枚举密钥。

可以指定所有应用的默认设置,也可以通过指定包系列名称来指定每应用设置。可以通过使用 Get-AppPackage Windows PowerShell cmdlet 来获取应用的包系列名称。每应用设置会替代默认设置。

如果你选择“由用户控制”选项,你组织中的员工可在设备上使用“设置”&gt;“隐私”来决定应用是否可枚举密钥。

如果你选择“强制允许”选项,则将允许应用枚举密钥,并且你组织中的员工无法更改此设置。

如果你选择“强制拒绝”选项,则禁止应用枚举密钥,并且你组织中的员工无法更改此设置。

如果禁用或未配置此策略设置,你组织中的员工可以在设备上使用“设置”&gt;“隐私”来决定应用是否可枚举密钥。

在设备上应用此组策略对象时,如果某个应用处于打开状态,则员工必须重启该应用或设备,才能将策略更改应用到该应用。
</string>

<string id="LetAppsAccessForegroundText_Name">允许 Windows 应用访问前台应用程序中的文本内容</string>
<string id="LetAppsAccessForegroundText_Explain">此策略设置指定 Windows 应用是否可访问前台应用程序的文本内容。
可以指定所有应用的默认设置,也可以通过指定包系列名称来指定每应用设置。可以通过使用 Get-AppPackage Windows PowerShell cmdlet 来获取应用的包系列名称。每应用设置会替代默认设置。

如果选择“由用户控制”选项,则你组织中的员工可在设备上使用“设置”&gt;“隐私”来决定是否允许 Windows 应用访问前台应用程序的文本内容。

如果选择“强制允许”选项,则将允许 Windows 应用访问前台应用程序的文本内容,并且你组织中的员工无法更改此设置。

如果选择“强制拒绝”选项,则不允许 Windows 应用访问前台应用程序的文本内容,并且你组织中的员工无法更改此设置。

如果禁用或未配置此策略设置,你组织中的员工可在设备上使用“设置”&gt;“隐私”来决定是否允许 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>

临时解决方案: 将相应文件多出的部分删除

由于存在权限问题, 需要更改二者的文件权限, 步骤如下:

  1. 右键文件-属性-安全
  2. 点击 高级 选项, 在弹出的窗口中点击 所有者 旁边的 更改 按钮
  3. 在弹出的窗口中输入要选择的对象名称, 这里输入本地账户的用户名即可, 输入后点击 检查名称 确保无误 (一般无任何提示即为无误). 然后连续点击 确定 保存更改
  4. 回到属性-安全窗口, 点击 编辑 按钮
  5. 在弹出的窗口中选择刚才更改后的所有者用户, 更改该用户的权限, 添加 写入, 修改, 完全控制 权限, 然后连续点击 确定 保存修改

更改完相应文件后, 若需要撤回权限更改操作, 只需将上述操作反向进行即可, 注意需要先撤回权限修改, 然后撤回所有者的更改. 将所有者更改回 TrustedInstaller 需要输入完整名称: NT SERVICE\TrustedInstaller

阿三代码再次发力, 疑似组策略中新增的选项对应的功能没写完
后续 Windows 更新也许会解决这个问题
目前 Windows 最新版本已解决这个问题