我在创建具有特定权限的目录时遇到问题.
//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上
在创建时FileSystemAccessRule
,您正在指定InheritanceFlags.ContainerInherit
.这会将掩码传播到子容器.如果要应用于叶对象(在您的情况下为文件),您需要指定InheritanceFlags.ObjectInherit
,或两者都指定
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit
Run Code Online (Sandbox Code Playgroud)