0

我正在尝试使用 C# 阻止对文件(或文件夹)的读/写访问。该文件已按预期锁定,但问题是我可以轻松转到安全选项卡 abd 更改权限。如何防止所有计算机用户更改这些权限?

我正在使用的代码是这样的(基于 MSDN 的一篇文章):

        DirectorySecurity fs = System.IO.Directory.GetAccessControl(textBox1.Text);
        fs.SetAccessRule(
            new FileSystemAccessRule(
                        "Users", 
                        FileSystemRights.Modify | 
                        FileSystemRights.ReadPermissions | 
                        FileSystemRights.TakeOwnership | 
                        FileSystemRights.ChangePermissions, 
                        AccessControlType.Deny));
        System.IO.Directory.SetAccessControl(textBox1.Text, fs);
4

2 回答 2

1

您想要实现的目标无法完成;解释为什么要作为上下文执行此操作可能会有所帮助。关于为什么它不能在下面完成的更多细节......

您的代码将由用户运行。因此,您的代码仅具有运行它的用户的权限。鉴于此,您的程序可以做任何用户可以做的事情,权限明智,所以问题变成了关于 Windows 权限,而不是 C# 管理它们。

不可能在 Windows 中使用权限来阻止管理员访问文件,因为管理员可以将权限更改为他们喜欢的任何内容。因此,即使您以管理员身份运行您的应用程序,它也无法执行任何无法撤消的操作。

如果您的代码以用户身份运行,那么我相信可以通过将所有权更改为其他用户以及阻止读取访问来将自己锁定在文件夹之外。但是当然管理员仍然可以重置权限。

于 2013-09-01T09:48:58.907 回答
0

我认为您要问的是如何以编程方式使用用户管理来限制文件夹访问:

http://www.codeproject.com/Articles/18219/Windows-OS-User-Management

然后限制对管理员或其他组的访问。

还可以考虑替代方案,例如系统管理员通过 Active Directory 执行此操作。

于 2013-08-31T10:51:42.533 回答