Windows 2012 R2\8.1 中某些文件夹的内容不可写入 - 一个例子是 Program Files\WindowsApps(用于存储从 Windows 应用商店下载的应用程序)。显然,这是设计使然 - 以防止人们修改不应由最终用户访问的代码 - 但阻止这种情况的具体机制是什么?作为练习,我尝试了各种方法来规避它 - 但即使我获得了目录的所有权,授予我的用户对它的完全控制权限并确保没有设置只读标志 - 我仍然在尝试将新文件写入此区域时被拒绝权限。我甚至尝试从以“系统”身份运行的命令提示符(通过 sysinternals psexec)执行此操作,但我得到了同样的错误。
我一度认为这可能与强制访问控制和完整性级别有关 - 但似乎不是,因为我的进程处于高完整性级别 - 尽管此目录上的强制访问控制已启用 - 但设置为低。有效访问表示我拥有完全控制权。但无论它是什么,它都是操作系统级别的控制,因为在 Linux 中安装文件系统时,文件是完全可写的。
顺便说一句,我之所以问这个问题,是因为我正在写一个关于 Windows Store Apps 安全性的演示文稿,我知道有人会问我是什么阻止了最终用户进入并修改它们。如果有人见过这样的事情,任何来自 MS 的关于这一点的具体文档的指针都会很棒(我已经广泛查找但找不到任何东西)。如果这个问题看起来有点与客户有关,我很抱歉 - 但我发现这个问题已经在 SuperUser 上被问过几次了,似乎没有人知道答案。非常感谢您的帮助。
答案1
这是微软制定的一项新安全政策,旨在禁止修改某些应用程序的核心文件。
可以将其视为 Apple 在 iOS 上的沙盒。它的作用如下:
- 停止文件被修改(更改设置/选项/值)
- DRM(Windows 商店的一部分使用 DRM,这是包含配置文件的文件夹)
- SHA / MD5(以确保检查文件相同,因为这些文件也存储在应用程序的此文件夹中)
我将尝试找出我拥有的开发人员论文,这是我在 8.1 发布时从微软构建会议上收到的。
尽管这在 8.1 中被进一步锁定,但在 8 中,您可以通过添加要拥有的文件夹Administrators
并授予您的用户完全控制权来获取所有权 + 控制权。
有趣的是,如果您使用非 Windows 8 驱动器,您可以根据自己的心意修改这些文件,尽管这可能会导致 SHA/MD5 检查失败并损坏该文件夹中的所有内容。