C# 4.0 扫描目录时发生UnauthorizedAccessException';用户\文档\我的音乐'; 问题:为什么扫描用户的“我的文档”文件夹时会出现此错误,而扫描“我的音乐/我的图片/我的视频”目录时却不会出现此错误 次要,不太重要的问题:有没有一种方法可以避免这种情况,而无需专门筛选这些文件夹,或使用try/catch块

C# 4.0 扫描目录时发生UnauthorizedAccessException';用户\文档\我的音乐'; 问题:为什么扫描用户的“我的文档”文件夹时会出现此错误,而扫描“我的音乐/我的图片/我的视频”目录时却不会出现此错误 次要,不太重要的问题:有没有一种方法可以避免这种情况,而无需专门筛选这些文件夹,或使用try/catch块,c#-4.0,directory,C# 4.0,Directory,我更喜欢教我如何钓鱼的答案,而不仅仅是给我鱼。就在这一点上,我不确定我需要寻找到哪里来具体回答这个问题。我已经阅读了有关和的文档,花了一周的时间寻找为什么我可以在“用户\我的音乐”而不是“用户\文档\我的音乐”(链接)上设置DirectoryInfo,我只想在学习更多信息的不同方向上享受一点提升 我捕获在尝试Directory.GetFiles('path',“*”,SearchOption.AllDirectories)时最初抛出的初始“UnauthorizedAccessException”

我更喜欢教我如何钓鱼的答案,而不仅仅是给我鱼。就在这一点上,我不确定我需要寻找到哪里来具体回答这个问题。我已经阅读了有关和的文档,花了一周的时间寻找为什么我可以在“用户\我的音乐”而不是“用户\文档\我的音乐”(链接)上设置DirectoryInfo,我只想在学习更多信息的不同方向上享受一点提升

我捕获在尝试Directory.GetFiles('path',“*”,SearchOption.AllDirectories)时最初抛出的初始“UnauthorizedAccessException”,其中path是用户的“我的文档”。要处理异常,我知道我需要手动遍历目录。从子目录返回文件

初始GetFiles函数的代码:

publicstaticstring[]GetFiles(字符串路径)
{
字符串[]文件;
尝试
{
files=Directory.GetFiles(路径“*”,SearchOption.AllDirectories);
}
捕获(未经授权的访问例外)
{files=WalkDirectory(path);}
归还文件;
}
公共静态字符串[]目录(字符串路径)
{
列表文件=新列表();
DirectoryInfo dir=新的DirectoryInfo(路径);
foreach(dir.GetDirectories()中的DirectoryInfo子目录)
{
尝试
{
files.AddRange(WalkDirectory(subDir.FullName));
}
捕获(未经授权的访问例外)
{
//已列出完整的漫游失败目录
掷骰子;
}
}
foreach(dir.GetFiles()中的FileInfo文件)
{
files.Add(file.FullName);
}
}
在代码尝试遍历隐藏文件夹(我的音乐、图片或视频)之前,这一切都是完美的。无论我如何尝试重新编码以遍历隐藏文件,我都会不断收到UnauthorizedAccessException

我完全理解我将围绕这一点编写代码。我想知道的主要是,为什么异常会发生在用户文件夹下

我的假设是,文件夹是指向另一个目录的符号链接,因为我可以创建路径?:\users directory\user\My(音乐、图片或视频),然后代码遍历这些目录而不会出现任何问题。只有在从“用户”“我的文档”中设置目录文件后尝试扫描目录文件时,才会发生这种情况

  • OS:Windows7
  • 用户权限:管理员
  • 应用程序提升为以管理员身份运行

我和一个朋友谈论这个问题,他不是技术专家,但知道足够的技术来进行对话,他帮助我进一步缩小了这个问题的范围。这实际上是一个重复的问题,并在会议上得到了回答

该文件夹是一个符号链接,根据TechRepublic:上的这篇文章,出于向后兼容的目的,该文件夹位于Windows Vista和Windows 7具有内置符号链接的章节下

为了特别避免在未经授权的访问异常上没有Try/Catch块的情况下扫描此目录,需要检查文件夹属性以确定所涉及的文件夹或文件是否为符号链接。上述问题再次得到了回答