use*_*582 3 c# directory permissions inheritance directoryinfo
我在Windows域中有两台计算机,称为客户端和服务器.服务器有一个共享目录,可以从客户端计算机访问.我想在客户端上运行C#应用程序,该应用程序设置此共享的权限以继承服务器上共享的父目录的权限.我该怎么做呢?
我已尝试过以下几行代码,但我认为它没有正确的效果:
DirectoryInfo shareDirectoryInfo = new DirectoryInfo("\\server\share");
DirectorySecurity directorySecurity = shareDirectoryInfo.GetAccessControl();
directorySecurity.SetAccessRuleProtection(false, false);
InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
FileSystemAccessRule accessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, iFlags, PropagationFlags.InheritOnly, AccessControlType.Allow);
bool modified;
directorySecurity.ModifyAccessRule(AccessControlModification.Set, accessRule, out modified);
if (modified)
{
Directory.SetAccessControl(name, directorySecurity);
}
Run Code Online (Sandbox Code Playgroud)
我想我不明白为什么我必须为目录创建一个FileSystemAccessRule - 我怎么能说从父进行继承呢?
谢谢你的帮助!马丁
您可以使用SetAccessRuleProtection将文件夹设置为从父级继承
DirectoryInfo targetFolder = new DirectoryInfo(@"\\server\share");
DirectorySecurity folderSecurity = targetFolder.GetAccessControl(); // Existing security
folderSecurity.SetAccessRuleProtection(false, true); // This sets the folder to inherit
targetFolder.SetAccessControl(folderSecurity);
Run Code Online (Sandbox Code Playgroud)
编辑:msdn文档解释如果将false作为第一个参数发送,则忽略第二个参数.