- 问:为什么我得到这个错误,而扫描用户的“我的文档”文件夹,而不是当我扫描“我的音乐/我的图片/我的视频”目录?
- 次要的, 不太重要的问题 :是否有办法避免这种情况,而不必对这些文件夹专门过滤掉,或使用try / catch块?
我更喜欢教我如何钓鱼的答案,而不是只给我的鱼。 恰在此时,我不知道,我需要看具体回答这个问题。 我已经通过关于文档阅读提升权限 ,并通过文件系统迭代 ,并花了美好的一周寻找为什么我可以在设定的DirectoryInfo“用户\我的音乐”,但不是“用户\ Documents \我的音乐”(链接),只是将享受关于在不同的方向一点点推动学习更多。
我赶上了最初的“UnauthorizedAccessException”最初被抛出试图Directory.GetFiles时(“路径”,“*”,SearchOption.AllDirectories),其中路径是用户的“我的文档”。 为了处理我知道我需要手动行走目录例外。 其中一期工程,从子目录返回文件。
用于初始的GetFiles功能的代码:
public static string[] GetFiles(string path)
{
string[] files;
try
{
files = Directory.GetFiles(path, "*", SearchOption.AllDirectories);
}
catch(UnauthorizedAccessException ex)
{ files = WalkDirectory(path); }
return files;
}
public static string[] WalkDirectory(string path)
{
List<string> files = new List<string>();
DirectoryInfo dir = new DirectoryInfo(path);
foreach (DirectoryInfo subDir in dir.GetDirectories())
{
try
{
files.AddRange(WalkDirectory(subDir.FullName));
}
catch(UnauthorizedAccessException ex)
{
// complete fail to walk directory listed
throw ex;
}
}
foreach (FileInfo file in dir.GetFiles())
{
files.Add(file.FullName);
}
}
这完美的作品出来,直到代码尝试走隐藏的文件夹:我的音乐,我的图片或我的视频。 不管如何我尝试和重码走的隐藏文件,我不断接到UnauthorizedAccessException。
我完全理解,我要解决这个编码。 主要是什么我很好奇地想知道,是为什么是异常的用户文件夹下发生?
我想提出一个asssumption是该文件夹是一个符号链接到其他目录,因为我可以做的路径:\ \我的(音乐,图片或视频),代码走的目录,那么没有任何问题的用户目录\用户 。 这只是想从用户的我的文档中设置它们后,扫描目录中的文件时发生。
- 操作系统:Windows 7
- 用户Privliages:管理员
- 应用提升到管理员身份运行