C#代码:将远程共享设置为继承其父目录的权限。

3
我有两台机器,称为客户端和服务器,在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);
}

我猜我不明白为什么我要为目录创建一个FileSystemAccessRule - 我怎么才能说继承自父级呢?

谢谢任何帮助!马丁


你有检查过这个吗?https://dev59.com/JUnSa4cB1Zd3GeqPM1Br - Waqas
是的,我尝试过了,但并没有什么帮助 - 除非我误解了这篇文章,因为它基本上做的就是我现在正在做的事情:为用户添加访问规则。我认为我应该能够做的是只说“继承自父级”,而不创建任何特定用户的规则。 - user304582
1个回答

5
您可以使用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);

编辑:MSDN文档解释说,如果将false作为第一个参数发送,则忽略第二个参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接