重置 C:\Program Files\WindowsApps 的默认 ACL

Lou*_*eru 15 windows permissions acl windows-10

我必须拥有特殊文件夹的所有权C:\Program Files\WindowsApps才能解决图标问题。问题现已解决,因此我想将权限重置为获得文件夹所有权之前的状态。

我恢复NT SERVICE\TrustedInstaller了所有者并删除了我帐户的权限条目:

在此处输入图片说明

但是我仍然可以完全控制该文件夹,并且可以在资源管理器中浏览该文件夹,而不会收到通常的警告,即我必须拥有所有权:

在此处输入图片说明

是否可以恢复此文件夹的默认权限?

小智 15

重置权限在大多数情况下都有效,但您需要 SYSTEM 权限才能运行该命令。

最简单的解决方案是使用PsExec(来自 sysinternals)。

打开提升的命令提示符或 powershell 并运行 psexec 以获取 SYSTEM-shell。

psexec.exe -s -i cmd

在该命令提示符下运行重置权限命令

icacls "C:\Program Files\WindowsApps" /reset /t /c /q

  • 由于此答案建议的命令的后遗症造成的极度沮丧,我制作了一个脚本来修复所有内容:https://github.com/AgentRev/WindowsAppsUnfukker (11认同)
  • **警告!** `/reset /t` 命令将通过删除 WindowsApps 内每个文件夹特有的特殊权限来**破坏大多数 UWP 应用程序**。在许多情况下,Windows 将在允许 UWP 应用启动之前显式验证这些特殊权限是否存在,如果缺少这些权限,则会中止并出现错误。如果没有备份,尝试恢复这些特殊权限是非常困难的。确保在重置之前使用“/save <ACLfile> /t”获取备份。 (6认同)
  • 或者`psexec.exe -s icacls "C:\Program Files\WindowsApps" /reset /t /c /q` 更短 (4认同)

Kat*_*Lee 10

像这样重置此文件夹的权限:

icacls "C:\Program Files\*" /q /c /t /reset
Run Code Online (Sandbox Code Playgroud)

事情是:

/reset - Replaces ACLs with default inherited ACLs for all matching files.
/t     - Performs the operation on all specified files in the current
         directory and its subdirectories.
Run Code Online (Sandbox Code Playgroud)


小智 9

我在搜索谷歌时找到了这个答案,它让我找到了一个解决方案。

问题:Windows 应用程序(例如邮件和日历)将无法打开。开始菜单不会打开。无法右键单击任务栏图标。

  • Microsoft Store 报告了更新这些应用程序的问题。
  • 卸载/重新安装失败。
  • 就地 Windows 升级(“修复”)没有解决问题。
  • 检查“WindowsApps”目录的权限显示权限损坏。
  • 错误代码 0x80246013、0x80070005

修复:运行 Kattee从 Windows 安装 USB 启动盘发布的重置 ACL 命令,使用内置命令提示符进行故障排除。

  1. 按照此页面上的说明创建 Windows 安装介质:https : //support.microsoft.com/en-us/help/15088/windows-create-installation-media
  2. 从 USB/CD 启动
  3. 当您到达“安装”按钮时,请单击左下角的“修复我的计算机”。
  4. 选择“疑难解答”
  5. 选择“命令提示符”
  6. 找到您的系统驱动器
    • 命令提示符不会在您的系统驱动器上启动。它将位于“X:\”上,即安装 USB/CD 的位置
    • 您需要导航到每个驱动器号并键入“dir”以找到正确的,以 C 开头:
    • 请注意,此命令提示符不使用“cd”来更改驱动器(仅目录)。只需键入驱动器号即可切换到该驱动器(例如“D:\”)
  7. 找到正确的驱动器号并切换到它后,使用刚刚找到的驱动器号(我的是 D:) 输入 Kattee 命令的稍微修改版本:
    • icacls "D:\Program Files\WindowsApps" /q /c /t /reset
  8. 等待操作完成,并检查最终输出行是否有任何故障。
  9. 重启!

这就是让我重新工作的原因。重启后一切正常。甚至不需要重新安装应用程序。一切都“正常工作”。

  • 要跳过几个步骤,请改为在 #3 处使用 Shift+F10 打开命令提示符。然后跳到#6。 (2认同)

Gid*_*sik 8

我在这个问题上挣扎了很多。

首先不要使用 icacls "C:\Program Files\WindowsApps" /reset /t /c /q。它将从文件夹中删除特殊的条件权限,并为其提供 Windows 默认和继承的 ACL,这不应该对 WindowsApps 执行。


这是我发现对我有用的答案(Win10和Win11 21H2)并且没有造成任何麻烦(至少是我知道的麻烦)

  1. 首先打开具有管理权限的命令提示符

  2. 通过运行下一个命令确保您拥有 WindowsApps 文件夹的所有权

takeown /f "%ProgramFiles%\WindowsApps"
Run Code Online (Sandbox Code Playgroud)
  1. 通过运行此命令恢复该文件夹的初始权限
cacls "%programfiles%\WindowsApps" /s:"D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;OICIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1200a9;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;OICIIO;GXGR;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;CI;0x1200a9;;;BA)(A;OICI;0x1200a9;;;LS)(A;OICI;0x1200a9;;;NS)(A;OICI;0x1200a9;;;RC)(XA;;0x1200a9;;;BU;(Exists WIN://SYSAPPID))"
Run Code Online (Sandbox Code Playgroud)

或者如果cacls无法访问,请使用icacls. 为此,创建temp.txt包含下一个内容的文件并将其保存到某个位置,例如c:\

windowsapps
D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;OICIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1200a9;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;OICIIO;GXGR;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;CI;0x1200a9;;;BA)(A;OICI;0x1200a9;;;LS)(A;OICI;0x1200a9;;;NS)(A;OICI;0x1200a9;;;RC)(XA;;0x1200a9;;;BU;(Exists WIN://SYSAPPID))
Run Code Online (Sandbox Code Playgroud)

然后运行

icacls "%programfiles%" /restore c:\temp.txt
Run Code Online (Sandbox Code Playgroud)
  1. 将 WindowsApps 的所有权归还给 trustinstaller
icacls "%programfiles%\WindowsApps" /setowner "nt service\trustedinstaller"
Run Code Online (Sandbox Code Playgroud)

如果它在 cmd 中不起作用 - 右键单击​​资源管理器中的 WindowsApps 文件夹,打开属性并转到安全选项卡,单击高级,然后单击所有者的更改按钮。输入NT Service\TrustedInstaller(NT 和服务之间有空格且不带引号)并单击“检查名称”按钮。单击“确定”并最终应用更改。


执行此操作后,WindowsApps 文件夹上的权限应恢复为默认值,并且所有 UWP 应用程序应正常工作(例如 wt.exe)


PS WindowsApps 的默认 ACL 是

NT SERVICE\TrustedInstaller:(F)
NT SERVICE\TrustedInstaller:(OI)(CI)(IO)(F)
S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204:(RX)
S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204:(OI)(CI)(IO)(GR,GE)
NT AUTHORITY\SYSTEM:(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
BUILTIN\Administrators:(CI)(RX)
NT AUTHORITY\LOCAL SERVICE:(OI)(CI)(RX)
NT AUTHORITY\NETWORK SERVICE:(OI)(CI)(RX)
NT AUTHORITY\RESTRICTED:(OI)(CI)(RX)
BUILTIN\Users:(Rc,S,RD,REA,X,RA)
Run Code Online (Sandbox Code Playgroud)

上面的命令就是这样设置的。


我从 winhelponline 博客中获取了最有用的信息,所以要归功于它。我选择写一个大的答案,而不是仅仅给出一个链接,因为我认为最好在许多地方而不是仅仅在一个博客上保留有用的信息。

  • @LouisWaweru,这是采取**自己的**命令,而不是采取**下来**。是的,我看到了 AgentRev 的脚本,但当我找到它时,我已经自己修复了 ACL 问题。不管怎样,我读了它,我认为这绝对是值得一提的,下次我的 WindowsApps 坏掉时我会使用它。 (2认同)

小智 5

我不必使用前面提到的恢复磁盘选项。我只需要在管理员模式下命令提示符运行它:

icacls "C:\Program Files\WindowsApps" /reset /t /c /q
Run Code Online (Sandbox Code Playgroud)

参数说明:

  • /reset 将所有匹配文件的 ACL 替换为默认继承的 ACL。
  • /t 对当前目录及其子目录中的所有指定文件执行操作。
  • /c 尽管有任何文件错误,但仍继续操作。仍将显示错误消息。
  • /q 禁止成功消息。

参考:icacls 命令参考

我可能也重新启动了计算机,但我认为这不是必需的。