C#添加或取消文件(夹)从上级继承权限

来源:互联网 发布:评论点赞软件 编辑:程序博客网 时间:2024/06/10 00:02

首先添加对System.Security.AccessControl的引用

1.下面是对文件的处理:

public void 允许文件从父继承(string fileFullName)
{
    FileSecurity fs1 = System.IO.File.GetAccessControl(fileFullName);
    //添加管理员并完全控制
    fs1.AddAccessRule(new FileSystemAccessRule("administrator", FileSystemRights.FullControl, AccessControlType.Allow));
    System.IO.File.SetAccessControl(fileFullName, fs1);
    //取消继承
    fs1.SetAccessRuleProtection(false, true);
    System.IO.File.SetAccessControl(fileFullName, fs1);
}


public void 取消文件从父继承(string fileFullName)
{
    FileSecurity fs1 = System.IO.File.GetAccessControl(fileFullName);
    fs1.SetAccessRuleProtection(true, false);
    System.IO.File.SetAccessControl(fileFullName, fs1);
}   

 

2.下面是对目录的处理

public void 允许目录从父继承(string dirFullPath)
{
    DirectorySecurity fs1 = System.IO.Directory.GetAccessControl(dirFullPath);
    //添加管理员并完全控制
    fs1.AddAccessRule(new FileSystemAccessRule("administrator", FileSystemRights.FullControl, AccessControlType.Allow));
    System.IO.Directory.SetAccessControl(dirFullPath, fs1);
    //取消继承
    fs1.SetAccessRuleProtection(false, true);
    System.IO.Directory.SetAccessControl(dirFullPath, fs1);
}


public void 取消目录从父继承(string dirFullPath)
{
    DirectorySecurity fs1 = System.IO.Directory.GetAccessControl(dirFullPath);
    fs1.SetAccessRuleProtection(true, false);
    System.IO.Directory.SetAccessControl(dirFullPath, fs1);