【问题标题】:C# Creating directory and setting the permissionsC# 创建目录并设置权限
【发布时间】:2016-01-12 19:56:25
【问题描述】:

我正在尝试使用下面的代码让所有用户都能够修改文件夹:

class Program
{
    private const string FileName = "test.txt";
    private static readonly string FilePath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\TEST\\" + FileName;
    private static readonly string UserName = Environment.UserDomainName;

    static void Main()
    {
        DirectorySecurity securityRules = new DirectorySecurity();

        string dirPath = Path.GetDirectoryName(FilePath);

        securityRules.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.Modify, AccessControlType.Allow));

        if (dirPath == null) throw new InvalidOperationException("Failure to save local security settings");

        if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath, securityRules);

        File.WriteAllText(FilePath, "Test test!");
    }
}

运行代码后,用户被添加到文件夹中,但没有分配任何权限。所有的读、写、执行等所有的复选框都没有选中。除非检查了特殊权限。

如何为所有用户添加一个包含所有修改的文件夹?

【问题讨论】:

    标签: c# windows


    【解决方案1】:

    您可以使用Directory.SetAccessControl()

    例子:

    DirectoryInfo directory = new DirectoryInfo(@"C:\my\directory");
    DirectorySecurity security = directory.GetAccessControl();
    
    security.AddAccessRule(new FileSystemAccessRule(@"MYDOMAIN\JohnDoe", 
                            FileSystemRights.Modify, 
                            AccessControlType.Deny));
    
    directory.SetAccessControl(security);   
    

    更多详情请关注msdn

    【讨论】:

    • 它有效,但如果我希望用户只能读取和执行,则我将代码“FileSystemRights.Modify”更改为“FileSystemRights.ReadAndExecute”,但它仍然为用户提供修改访问权限。我该如何解决?谢谢。
    • 你试过这个吗:security.AddAccessRule(new FileSystemAccessRule(@"MYDOMAIN\JohnDoe", FileSystemRights.Modify, AccessControlType.Deny));
    • 是的,我做到了。我在第 22 行的第一个代码中尝试了“securityRules.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.Modify, AccessControlType.Allow));”它只是行不通。但是,我想知道当我调用“Directory.CreateDirectory(dirPath);”时的默认访问规则是什么是?是否为所有用户修改?
    • 确保 windows 没有欺骗你。我在这里测试为我的用户将“修改”权限设置为“拒绝”,我注意到我不能再删除该文件夹,但正如你在这张图片postimg.org/image/qsg5rl2xn 中看到的那样,选项就像你说的(只是“特殊许可”被选中)。查看“高级”选项以查看高级安全配置。
    • 是的,窗户在欺骗我。当我进阶时,它显示我拒绝。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2012-05-24
    • 2015-07-28
    相关资源
    最近更新 更多