DirectorySecurity未正确设置权限

Vik*_*ram 10 c#

我有一个C#代码,它创建一个文件夹并为其设置一些权限.这是代码示例:

static void Main(string[] args){

        Directory.CreateDirectory("C:\\vk07");
        DirectorySecurity dirSec = Directory.GetAccessControl("C:\\vk07");

        dirSec.AddAccessRule(new FileSystemAccessRule("INTRANET\\fGLBChorusUsers", FileSystemRights.ReadAndExecute, AccessControlType.Allow));            
        Directory.SetAccessControl("C:\\vk07", dirSec);
}
Run Code Online (Sandbox Code Playgroud)

当我检查在上面创建的文件夹上设置的权限时,它没有"读取"和"修改"(这是我在代码中设置的),而是仅显示"特殊权限".

有人可以帮我这个吗?我是ACL的新手,所以不太了解它.

小智 9

我遇到了同样的问题,实际的原因是,如果你从另一篇文章中查看该网络服务图片,它只适用于文件.如果他们说"此文件夹,子文件夹和文件",则基本权限将仅显示在第一张图片上.为此,您需要设置两个标志-InheritanceFlags.ContainerInherit + InheritanceFlags.ObjectInherit.

    Try
        'If destination directory does not exist, create it first.
        If Not Directory.Exists(path) Then Directory.CreateDirectory(path)

        Dim dir As New DirectoryInfo(path)
        Dim dirsec As DirectorySecurity = dir.GetAccessControl()
        'Remove inherited permissions
        dirsec.SetAccessRuleProtection(True, False)

        'create rights, include subfolder and files to be inherited by this
        Dim Modify As New FileSystemAccessRule(username, FileSystemRights.Modify, InheritanceFlags.ContainerInherit + InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)
        Dim Full As New FileSystemAccessRule(admingroup, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit + InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)

        dirsec.AddAccessRule(Modify)
        dirsec.AddAccessRule(Full)
        'Set
        dir.SetAccessControl(dirsec)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
Run Code Online (Sandbox Code Playgroud)


E-Z*_*E-Z 2

FileSystemRights.ReadAndExecute不允许您修改。这是只读的。\n您需要FileSystemRights.Modify完整的范围。\n您可能需要查看可用的选项。

\n\n

这是上面的一个例子:

\n\n
String dir = @"C:\\vk07"; \nDirectory.CreateDirectory(dir); \nDirectoryInfo dirInfo = new   DirectoryInfo(dir); \nDirectorySecurity dirSec = dirInfo.GetAccessControl(); \ndirSec.AddAccessRule(new FileSystemAccessRule("INTRANET\\\\fGLBChorusUsers",FileSystemRights.Modify,AccessCo\xe2\x80\x8cntrolType.Allow)); \ndirInfo.SetAccessControl(dirSec);\n
Run Code Online (Sandbox Code Playgroud)\n