- 問題:爲什麼我得到這個錯誤,而掃描用戶的「我的文檔」文件夾,而不是當我掃描了「我的音樂/我的圖片/我的視頻'目錄?
- 次,不太重要的問題:是否有辦法避免這種情況,而不必對這些文件夾專門過濾掉,或使用try/catch塊?
我更喜歡那些教我如何釣魚的答案,而不僅僅是給我魚。就在這一點上,我不確定我需要專門回答這個問題。我已閱讀有關elevating permissions和iterating through the file system的文檔,並花了好一週的時間尋找爲什麼我可以在User \ My Music上設置DirectoryInfo,而不是'User \ Documents \ My Music'(鏈接),只是會享受一點點在瞭解更多信息方面提高了不同的方向。UnauthorizedAccessException同時掃描目錄「用戶 Documents 我的音樂」
我在嘗試使用Directory.GetFiles('path',「*」,SearchOption.AllDirectories)路徑是用戶的「我的文檔」時最初引發的初始「UnauthorizedAccessException」。爲了處理這個異常,我知道我需要手動操作目錄。哪些工作,從子目錄返回文件。
初始的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是該文件夾是一個符號鏈接到其他目錄,因爲我可以做的路徑:\ Users目錄\用戶\我的(音樂,圖片或視頻)和代碼走那些目錄,然後沒有任何問題。這僅發生在嘗試從用戶「我的文檔」中設置目錄文件後進行掃描時發生。
- OS: Windows 7的
- 用戶Privliages:管理員
- 應用提升到以管理員身份運行