c# - 获取目录的文件和子目录时忽略 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
当我评论递归调用的行时,它工作得很好。
解决方案
这是预期的行为还是您应该有权访问此目录?
您是否尝试过以管理员身份运行 Visual Studio?您作为用户可能有权查看它,但应用程序不一定这样做。
推荐阅读
- masstransit - 在公共交通 5.2.1 中共享交通工具
- entity-framework-core - 脚手架(数据库优先)没有主键的 EF Core 表
- javascript - 反应路由器:功能无效反应子
- angularjs - 如何从服务函数中访问 $rootScope 值
- mysql - MySQL 查询 - 更优雅的选择?在 SELECT 的多个表中引用相同的列名
- angular - 尝试将数据作为参数传递给服务文件
- java - 不同的端点看似随机地获得授权
- php - # 如何使用 DateTime 类(处理转换、格式、差异和时区)
- java - Akka Streams onFailuresWithBackoff 未重新启动流程
- python - 在现有的张量流图中设置静态形状,其中动态形状用于输入