首页 > 解决方案 > 获取目录的文件和子目录时忽略 UnauthorizedAccessException

问题描述

我正在使用下面的代码来获取目录的文件和子目录,然后填充 TreeView 控件。我收到 UnauthorizedAccessException 异常。我尝试使用 try and catch 来处理它,但徒劳无功......

void GetFilesAndSubDirs(DirectoryInfo root, TreeNodeCollection nodes)
{
    FileInfo[] files = null;
    DirectoryInfo[] subDirs = null;

    try
    {
        files = root.GetFiles("*.*");
        subDirs = root.GetDirectories();
    }
    catch (UnauthorizedAccessException e)
    {
        MessageBox.Show(e.Message);
    }

    catch (DirectoryNotFoundException e)
    {
        MessageBox.Show(e.Message);
    }

    TreeNode parent = FindNode(root.Name, nodes);

    if (files != null)
    {
        foreach (FileInfo fiInfo in files)
        {
            TreeNode fileNode = new TreeNode(fiInfo.Name);
            fileNode.ImageIndex = 1;
            fileNode.SelectedImageIndex = 1;
            parent.Nodes.Add(fileNode);
        }
    }

    if (subDirs != null)
    {
        foreach (DirectoryInfo dirInfo in subDirs)
        {
            TreeNode dirNode = new TreeNode(dirInfo.Name);
            dirNode.ImageIndex = 0;
            dirNode.SelectedImageIndex = 0;
            parent.Nodes.Add(dirNode);
            GetFilesAndSubDirs(dirInfo, parent.Nodes);
        }
    }
}

更新#1

当我评论递归调用的行时,它工作得很好。

在此处输入图像描述 在此处输入图像描述

标签: c#filedirectorytreeviewunauthorizedaccessexcepti

解决方案


这是预期的行为还是您应该有权访问此目录?

您是否尝试过以管理员身份运行 Visual Studio?您作为用户可能有权查看它,但应用程序不一定这样做。


推荐阅读