c# - 创建目录并给用户 FullControl 问题

标签 c#

我在创建具有特定权限的目录时遇到问题。

        //Make sure Tools directory exists
        DirectoryInfo oMyDirectoryInfo = new DirectoryInfo(oInstance.szToolsPath);
        if (!oMyDirectoryInfo.Exists)
        {
            oMyDirectoryInfo.Create();
            DirectorySecurity oDirectorySecurity = oMyDirectoryInfo.GetAccessControl();
            oDirectorySecurity.AddAccessRule(new FileSystemAccessRule((Settings.Default.LoginDomain + "\\" + Settings.Default.LoginUsername), FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
            oMyDirectoryInfo.SetAccessControl(oDirectorySecurity);
        }

现在这将创建目录,我可以看到登录名已添加到安全选项卡中。但是,当我模拟登录并尝试将文件复制到该目录时,我得到了一个未经授权的异常。我可以创建一个文件(没有数据),我可以创建一个文件夹但我不能将数据写入文件(但我设置了 FullControl :/)

我通过 Windows 进一步研究了权限,发现它适用于子文件夹,但我也想将其设置为文件。我如何通过代码执行此操作?

这是在 Windows 7 上

最佳答案

当您创建 FileSystemAccessRule 时,您指定了 InheritanceFlags.ContainerInherit。这会将掩码传播到子容器。如果你想应用于叶对象(在你的情况下是文件),你需要指定 InheritanceFlags.ObjectInherit,或者两者都指定,

 InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit 

关于c# - 创建目录并给用户 FullControl 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751623/

相关文章:

c# - 最小起订量 功能参数

c# - CallbackOnCollectedDelegate 在 Application.Run(new Form1())

c# - DataGridView with DataTable 数据源 : how to efficiently extract selected rows?

c# - 与谷歌日历双向同步

c# - WPF MVVM 与 Messenger 通信(VM 的消息后加载)

c# - 如何从 XmlReader 构建 XmlNode

c# - Hangfire 1.5.3 System.MissingMethodException 在我们所有的工作上

c# - 有没有比在整个应用程序代码中散布 try/catch 更优雅的错误处理方法?

c# - ListView 未在 asp.net 中显示

c# - 大写字母的 URL 编码