如何检查给定目录的访问权限

本文关键字:访问 权限 访问权 何检查 检查 | 更新日期: 2023-09-27 18:08:47

目前我有一个程序,搜索用户集目录和子目录的音乐文件,并将它们添加到一个集合。但是,如果它遇到的其中一个目录是受保护的,那么程序就会失败。我想知道如何在尝试搜索目录之前检查用户是否有权访问该目录以避免此问题。下面是我用于搜索的代码,它目前包含了"系统卷信息"的基本工作,但由于可能有其他受保护的目录,我想更改它以包括它们。

    public void SearchForMusic()
    {
        //Searches selected directory and its sub directories for music files and adds their path to ObservableCollection<string> MusicFound
        foreach (string ext in extentions)
        {
            foreach (string song in Directory.GetFiles(SearchDirectory, ext))
            {
                musicFound.Add(song);                   
            }
            foreach (string directory in Directory.GetDirectories(SearchDirectory))
            {
                if (directory.Contains("System Volume Information"))
                {
                }
                else
                {
                    foreach (string song in Directory.GetFiles(directory, ext))
                    {
                    musicFound.Add(song);
                    }
                    foreach (string subDirectory in Directory.GetDirectories(directory))
                    {
                        foreach (string subSong in Directory.GetFiles(subDirectory, ext))
                        {
                            musicFound.Add(subSong);
                        }
                    }
                }
            }
        }
    }

非常感谢

如何检查给定目录的访问权限

到目前为止,确保您可以访问文件系统对象的最简单方法是尝试访问它。如果它失败并出现Access Denied错误,那么您就没有访问权限。只要检测到错误条件,然后继续搜索下一个项目。

换句话说,将检查访问权限委托给系统,毕竟,系统是访问权限的最终仲裁者。

您可以通过将写权限替换为读权限来检查此问题。此外,将代码包装在try catch块中,如果抛出异常,则可以假设(或正确检查异常类型以确保)无法遍历目录。