如何在驱动器下显示所有目录和文件

时间:2018-02-23 13:12:30

标签: c#

我尝试在C#中使用 TreeView ListView 并在this guide之后创建一个简单的Window资源管理器。

当我选择一个目录时,我的代码工作得很好但是当我选择像C:\这样的驱动器时它不起作用

我尝试为选择驱动器的情况编写一个函数:

private void PopulateTreeViewWithDriver()
{
    string[] temp = 
    Directory.GetDirectories(fbd_Dialog.SelectedPath.ToString());
    DirectoryInfo[] temp1 = new DirectoryInfo[temp.Length];

    for (int i = 0; i < temp.Length; i++)
    {
        temp1[i] = new DirectoryInfo(temp[i]);
    }

    TreeNode[] array = new TreeNode[temp1.Length];

    for (int i = 0; i < temp1.Length; i++)
    {
        array[i] = new TreeNode(temp1[i].Name);
        array[i].Tag = temp1[i];
        GetDirectories(temp1[i].GetDirectories(), array[i]);
    }

    TreeNode rootNode;
    rootNode = new TreeNode(fbd_Dialog.SelectedPath.ToString(), array);
    tv_Folder.Nodes.Add(rootNode);
}

但是我收到了这个错误:

  

&#34;访问路径&#39; C:\ Documents and Settings&#39;被拒绝。&#39;&#34;

此图显示了选择目录时的结果:

This picture is result when I choose a directory

1 个答案:

答案 0 :(得分:1)

由于访问权限,有些目录无法显示。当我处于类似的情况时,我只是处理SecurityException并将其视为我无法访问目录的指示。

顺便说一下,有人提到了管理员权限。这也不是正确的方法,因为有一些系统关键目录和文件甚至管理员用户都无法访问。

在更哲学的层面上,如果普通用户启动您的应用程序然后成功读取它没有权限的目录,这意味着什么?这样的工具将允许用户窥探同一台计算机的其他用户,这将否定操作系统内置文件系统安全性的全部目的。

底线 - 忽略所有SecurityExceptions,跳过它们并使用其他未收到异常的目录。