FileSystemRights问题(C#)

时间:2011-08-18 05:36:58

标签: c# filesystems console-application rights

我对文件系统和权限/权限访问(又称访问控制列表,ACL)相当新。关于ACL的编码,我无法设置我想要的文件属性。我不确定我对FileSystemRights成员的理解是错误的,还是我完全做错了。 (而且我已经在这部分上花了相当多的时间)

我想要做的是更改文件的权限,以便它只能是可读的,不能在别处编辑,重命名,删除和复制。

使用MSDN的示例,这是我到目前为止所拥有的:

try
{
    //Get current identity
    WindowsIdentity self = System.Security.Principal.WindowsIdentity.GetCurrent();

    // Add the access control entry to the file.
    AddFileSecurity(filename, self.Name, FileSystemRights.Modify, AccessControlType.Deny);
    AddFileSecurity(filename, self.Name, FileSystemRights.Write, AccessControlType.Deny);
    AddFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Allow);

    // Remove the access control entry from the file.
    RemoveFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Deny);
    RemoveFileSecurity(filename, self.Name, FileSystemRights.Read, AccessControlType.Deny);

    Console.WriteLine("Done.");
}
catch (Exception e)
{
    Console.WriteLine(e);
}

我的逻辑是:

  1. 添加拒绝修改权限(拒绝.Modify将导致文件变得不可读)
  2. 添加拒绝写权限
  3. 添加允许读取和执行权限
  4. 删除ReadAndExecute上的拒绝条目(因为.Modify拒绝ReadAndExecute)
  5. 删除Read上的拒绝条目(As .Modify拒绝阅读)
  6. 我正确地做这个部分吗?如果没有,请告知我该怎么做才能使文件只能读取,不可编辑,可恢复,可删除和可复制。非常感谢提前!

1 个答案:

答案 0 :(得分:0)

请解释它做错了什么。我看到的唯一问题可能是您要为自己设置权限,而不是为其他用户或组设置权限。也许您应该遍历所有组(管理员,用户等)并禁用除读取和执行之外的所有组。虽然我认为SYSTEM始终可以完全控制所有文件。