即使我设置了写入权限,也无法写入 C:\ 中的文件

Posted

技术标签:

【中文标题】即使我设置了写入权限,也无法写入 C:\\ 中的文件【英文标题】:Can't write to file in C:\ even though I set write permissions即使我设置了写入权限,也无法写入 C:\ 中的文件 【发布时间】:2015-04-14 10:11:21 【问题描述】:

Windows 7,SP 1。我在 C:\ 中有一个要写入的文件(我知道,我不应该,但让我们忽略它)。我知道,作为用户,甚至作为没有提升的管理员,我都做不到。所以我也为用户组添加了写权限,但这没有帮助。即使添加具有“完全控制”权限的用户也无济于事。然而,“有效权限”对话框显示了我的用户的写入权限。

如何设置文件权限以便写入文件?我错过了什么?

编辑:如果这个问题看起来不够以程序员为中心:作为一名程序员,我真的很想了解为什么文件无法打开以及文件权限在提升时如何真正起作用。

编辑 2:任何人都应该可以自己尝试:只需打开一个管理员提示符,在 C:\ 中创建一个文本文件,然后尝试从常规资源管理器访问它而无需提升。

【问题讨论】:

您不能在没有提升的情况下拥有提升的访问权限,并且如果没有提升权限,则需要提升的访问权限将被忽略。唯一的选项是 C:\ 上的激进 icacls/setintegritylevel 或禁用 UAC。简单地说,不要写到 C:\ 见Mandatory Integrity Control,更深入的解释请阅读Windows Vista Integrity Mechanism Technical Reference。请注意,系统驱动器具有高度完整性标签,该标签由根目录中的文件继承。您可以使用icacls 仅在根目录中的一个文件上设置 DACL 和完整性级别,而无需修改目录本身。 @eryksun:就是这样!谢谢!如果你不知道要寻找什么,这个答案真的很难在网上找到。请对此做出回答,以便我投票。 【参考方案1】:

正如eryksun 在 cmets 中所写,这解决并解释了问题:

见Mandatory Integrity Control, 更深入的解释阅读Windows Vista Integrity Mechanism Technical Reference。笔记 系统驱动器具有可继承的高完整性标签 通过根目录中的文件。您可以使用 icacls 设置 根目录中文件的 DACL 和完整性级别 无需修改目录本身。

实际上,这意味着 icacls C:\somefile.txt /setintegritylevel M 可以解决问题。

【讨论】:

以上是关于即使我设置了写入权限,也无法写入 C:\ 中的文件的主要内容,如果未能解决你的问题,请参考以下文章

即使具有管理员权限也无法读取/写入 HKLM 注册表项和值

“无法写入配置文件。”Magento Connect Manager 1.9.3.2出错

CentOS 怎么设置某个目录包括子目录的写入权限 777呢

got未写入软件包数据

除非在授予权限后重新启动应用程序,否则无法写入外部存储

为我的应用程序运行 Wix 安装程序后,即使在删除文件夹后也无法创建/写入文件/文件夹