如何在Windows中使文件夹只读?


5

所以我想阻止自己写入文件夹中的一些文件。我总是使用我比较的back_up文件夹,将数据传输到目标项目。问题是,有时候我会编辑备份文件。有什么方法可以拒绝我自己的编辑/写入权限吗?我不希望重命名/删除文件。设置文件夹只读标志是绝对没有的 - 之后我可以再次编辑/删除文件(至少在Win 8.1中)。这对我来说非常重要 - 因为现在我已经破坏了许多back_up文件,这给我带来了很多麻烦。有任何想法吗?

我正在运行最新版本的Windows 8.1 x64。


放置备份文件夹的光盘的文件系统类型是什么? NTFS还是FAT?
Werner Henze

1
当您右键单击文件夹/文件并转到它的属性时,您是否看到“安全”选项卡?
txtechhelp

确实如此。 FS是NTFS。
Nemo759

这将有助于版本跟踪,以防止意外覆盖旧文件版本。 (v1,v2,v3等)
Steven M. Vascellaro

@McDonald's这是一个包含文件的文件夹。每次我进行更改时,我都会“另存为”并增加版本号。但是,有时我不小心点击“保存”并覆盖我的文件
Steven M. Vascellaro

Answers:


2

原始答案:

如果是NTFS,则可以使用文件系统安全功能。

  1. 编辑文件夹的“安全”选项卡,我假设您之前没有更改它们:删除“经过身份验证的用户”,它可能会警告您必须首先禁用继承,在“高级”选项中执行此操作。

  2. 确保UAC已启用。

现在,当您尝试编辑/添加/删除该文件夹中的任何内容时,UAC会警告您,您甚至可以将其设置为更高级别,每次都必须输入密码。

编辑: 上述方法是一个简单易懂的指南,仅适用于Windows Vista并需要管理员权限,以及未经过回放的文件/文件夹安全设置。

但是,如果您了解其背后的原理,则可以在任何用户帐户上使用NTFS的几乎任何Windows版本上执行此操作。

假设您的正常工作帐户是A,另一个“安全”帐户是B,您可以将文件夹所有者设置为B并为其授予完全权限(不要忘记检查“使用此对象的可继承权限替换所有子对象权限” “),然后将帐户A添加为只读,现在您只能使用帐户B写入,同时仍然在日常帐户A中读取/使用它。

如果没有管理员权限,则无法从访问列表中删除管理员,也不能更改所有者(如果是管理员)。但该方法应该仍然有效,如果您创建文件夹,所有者应默认为您。

PS。以上都是基于我的经验,如果您有更好的方法,欢迎咨询。


如果我们没有管理员权限怎么办?
Steven M. Vascellaro

1

罗密欧是正确的,您可以通过属性将您的单个文件设置为只读,但您将无法保护它不被删除。

如果您想快速将多个文件更改为只读,还有一个建议。

打开命令提示符并输入命令 attrib +r [path] 利用通配符 *


这很有帮助,但它只会影响 现有 文件。 OP希望将只读状态也应用于新文件。
Twisty Impersonator

1

它是包含文件的单个文件夹。每次我进行更改时,我都会“另存为”并增加版本号。然而,   有时我不小心点击“保存”并覆盖我的文件 - 史蒂芬   Vascellaro


如何使文件夹中的文件只读可访问

您可以使用 ICACLS 并明确拒绝 写属性 对特定文件夹中的所有文件的权限,并防止您自己(或任何安全组)覆盖或修改这些文件,但仍允许读取权限打开它们。

下面是环境的批处理脚本 %userdomain%\%username% 用于定义当前域(或本地计算机名称)和用户名签名到您执行批处理脚本的计算机上的变量(即 <domain>\<username> )拒绝访问该帐户;如果需要,这可以很容易地被任何有效的域安全组名称替换(即 <domain>\<securitygroupname> )。

批处理脚本

替换的值 Folder= 变量是完全显式文件夹路径(或UNC路径)到您需要的位置,以使只读的现有文件可访问。

@ECHO ON

SET Folder=C:\Users\User\Desktop\Test
SET Security=%userdomain%\%username%

ICACLS "%Folder%\*" /deny "%Security%":(OI)(WA)
EXIT

如果查看文件ACL权限,您将看到 写属性 现在应用于显式拒绝 这个文件夹和文件

enter image description here

这是一个包含V1,V2等测试文档的文件夹,它已经运行了批处理脚本。

enter image description here

如果您尝试保存文件,则会弹出另存为对话框,如果您尝试使用相同的文件名覆盖已存在的文件,您将收到拒绝访问错误消息,因为该文件对于此只能是只读的帐户。

enter image description here

您只需执行另存为,为文件指定一个不同的名称,但要锁定所有要读取的文件只能访问的文件夹,这就是您将数字增加一个或其他任何内容的位置。

此文件夹中的任何新保存的文件现在都具有 写属性 一旦具有新文件名的文件保存到此文件夹,这些权限限制将立即生效。

enter image description here


进一步阅读和资源

  • 环境变量

  • ICACLS

    /deny Sid:perm explicitly denies the specified user access rights.
        An explicit deny ACE is added for the stated permissions and
        the same permissions in any explicit grant are removed.
    
    WA - write attributes
    
    
        inheritance rights may precede either form and are applied
        only to directories:
    (OI) - object inherit
    

每当我将新版本保存到文件夹时,是否需要重新运行?如果是这样,我目前的解决方案偶尔将整个文件夹/子文件夹重新标记为只读似乎同样有效。
Steven M. Vascellaro

我想限制覆盖现有文件的选项,但我希望能够将新文件保存到该文件夹​​。基本上,我希望文件一旦创建就变为“只读”。事后看来,我认为这可能更适合作为单独的问题......
Steven M. Vascellaro

1
@McDonald's没有必要在创建文件时重复应用此ACE。相反,应用拒绝可以使你的答案更好 Write Attributes ACE来了 ,但随着 Apply to: Files only 设置。这将影响所有当前和未来的文件,并且永远不需要重新运行脚本以将ACE应用于单个文件。
Twisty Impersonator

2
@StevenVascellaro你可能是对的,这应该是一个单独的问题。原始问题没有明确说明OP希望能够将文件添加到他的文件夹中。事实上,他的开场陈述是 “我想阻止自己写入文件夹中的某些文件。” 您和他所要求的内容有所不同,特别是因为NTFS无法防止创建和重命名/删除文件。
Twisty Impersonator

1
@McDonald's另一种改进答案的方法是使用一个脚本定期修改所有现有文件以添加 Deny Delete 高手。虽然没有办法通过在文件夹级别设置的NTFS权限提前执行此操作,但这将满足无法删除/重命名现有文件的请求。
Twisty Impersonator

-3

右键单击文件夹,属性,属性下面,设置ReadOnly,Apply。

这将使此文件夹中的所有文件(以及选择的子文件夹)仅用于读取。当您尝试保存R / O文件时,软件将为您提供另存为不同的名称


็但是在这种方法中,我仍然可以删除文件。
Nemo759

对不起,你试图躲避自己的事情。在操作文件时建立强大的纪律!
Romeo Ninov

1
如果操作系统可以为我做这件事,为什么要打扰?
Nemo759

1
没有操作系统可以避免人类的愚蠢
Romeo Ninov

1
这仅适用于当前保存的文件。稍后保存到文件夹的任何文件都不具有“只读”属性
Steven M. Vascellaro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.