在C#中如何获得文件夹的访问权限?

问题描述 投票:0回答:1

我想制作一个C#递归文件分析程序。我还使用 Spectre 控制台来更清晰地查看我的树。我想向该程序添加更多数据,但不知何故我无法从我的目录信息中获取更多信息。

    static void Main(string[] args)
    {
        string path= @"C:\Users\michs\Desktop\Test";

        Tree tree =new Tree(path);

        TraverseTree(path, tree);

        AnsiConsole.Write(tree);

    }

    private static void TraverseTree(string path,IHasTreeNodes node)
    {
       DirectoryInfo dir = new DirectoryInfo(path);

        var dirNode = node.AddNode(new Markup("[blue]" + dir.Name + "[/]"));
        dirNode.AddNode(new Markup("Erstellt am: "+"[green]" + dir.CreationTime + "[/]" + " Letzter Zugriff:" + "[green]" + dir.LastAccessTime + "[/]" + " Zuletzt geändert:" + "[green]" + dir.LastWriteTime + "[/]"));

        FileInfo[] files=dir.GetFiles();
        if (files.Length>0)
        {
            var filesNode = dirNode.AddNode("Dateien");

            foreach (FileInfo file in files)
            {
                filesNode.AddNode(new Markup("DateiName: " + "[yellow]" + file.FullName + "[/]" + " Letzter Zugriff:" + "[yellow]" + file.LastAccessTime + "[/]" + " Zuletzt geändert:" + "[yellow]" + file.LastWriteTime + "[/]"));
            }

        }

        DirectoryInfo[] dirs=dir.GetDirectories();
        if (dirs.Length>0)
        {
            foreach (DirectoryInfo dirSingle in dirs)
            {
                TraverseTree(dirSingle.FullName, dirNode);
            }   
        }


    }
}
c# .net tree filesystems
1个回答
0
投票

如果有人遇到类似的问题,我的解决方案:

这个用于遍历函数:
DirectorySecurity dirSecurity = dir.GetAccessControl();
dirNode.AddNode(new Markup("Zugriffsrechte Typ: " + "[red]" + GetAccessRights(dirSecurity) + "[/]"));

这是 GetAccessRights 函数:

私有静态字符串 GetAccessRights(DirectorySecurity dirSecurity) { AuthorizationRuleCollection accessRules = dirSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));

        string accessInfo = "";

        foreach (FileSystemAccessRule rule in accessRules)
        {
            accessInfo += $"Idendität: {rule.IdentityReference}, Zugriffsrechte Typ: {rule.AccessControlType}, Datei Berechtigungen: {rule.FileSystemRights}\n";
        }

        return accessInfo;
    }
© www.soinside.com 2019 - 2024. All rights reserved.