我在创建具有特定权限的目录时遇到问题。
//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/