在C#中将目录命名为只读

时间:2011-05-29 02:27:52

标签: c# permissions directory readonly

我的问题是,我想创建一个新文件夹,让用户无法(或相当难)更改其名称或删除它。问题是,用户必须能够访问该文件夹中包含的文件,并以他喜欢的任何方式进行更改。使用我在网上找到的所有示例,我都无法更改文件夹中的文件,而不是文件夹本身。

提前致谢;)

2 个答案:

答案 0 :(得分:2)

这可能会有所帮助。

http://technet.microsoft.com/en-us/library/cc732880.aspx

似乎您希望允许“创建文件/写入数据”权限但不允许“控制”父文件夹。

您应该能够设置ACL来执行此操作。给他们“列出文件夹内容”权限,然后有选择地给他们额外的扩展权限,而不给他们修改属性权限。


服务答案是个坏主意。我可能会工作,但不是最好的方法。具有Windows目录和文件夹安全性的密钥是文件夹的“所有者”。作为管理员,您始终可以获取文件夹或文件的所有权。但是,如果该文件拥有不同的所有者并且该所有者已授予您权利,则在您进入并取得所有权之前,您将没有任何其他权利。

您要做的是在计算机上创建一个特殊帐户(通常称为服务帐户),该帐户是程序运行的标识。此帐户具有管理员权限,并且是其创建的任何文件的所有者。然后它可以允许它想要授予用户创建的文件和文件夹的任何访问权。

管理员将始终能够获得所有权,但大多数用户甚至不知道如何执行此操作。

答案 1 :(得分:2)

只要该文件夹由用户的帐户创建(假设您正在通过应用程序以编程方式创建文件夹),用户就可以编辑该文件夹。保护该文件夹免受篡改的最佳方法是编写一个非常小的Windows服务,使该文件夹始终打开,从而防止删除/重命名。