我尝试在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;
此图显示了选择目录时的结果:
答案 0 :(得分:1)
由于访问权限,有些目录无法显示。当我处于类似的情况时,我只是处理SecurityException
并将其视为我无法访问目录的指示。
顺便说一下,有人提到了管理员权限。这也不是正确的方法,因为有一些系统关键目录和文件甚至管理员用户都无法访问。
在更哲学的层面上,如果普通用户启动您的应用程序然后成功读取它没有权限的目录,这意味着什么?这样的工具将允许用户窥探同一台计算机的其他用户,这将否定操作系统内置文件系统安全性的全部目的。
底线 - 忽略所有SecurityExceptions
,跳过它们并使用其他未收到异常的目录。