创建目录并为用户提供FullControl问题

Oli*_*ver 4 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);
        }
Run Code Online (Sandbox Code Playgroud)

现在,这将创建目录,我可以看到Login已添加到安全选项卡.但是,当我冒充登录并尝试将文件复制到该目录时,我收到了一个未经授权的例外.我可以创建一个文件(没有数据),我可以创建一个文件夹,但我无法将数据写入文件(但我设置了FullControl:/)

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

这是在Windows 7上

Phi*_*eck 6

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

 InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit 
Run Code Online (Sandbox Code Playgroud)