2017-10-12 78 views
2

根據MSDN,如果目錄不可訪問,Directory.Exists應返回false。我有一個Directory.Exists返回true的路徑,但Directory.GetFiles拋出一個System.UnauthorizedAccessException。我也嘗試了CanRead函數here,但是對於路徑也是如此。爲什麼我在這個文件夾上得到UnauthorizedAccessException?

如果知道有幫助,路徑是「C:\ Users \ {用戶名} \ AppData \ Local \ Microsoft \ Windows \ INetCache \ Content.IE5」。

+1

有趣的是我的不是INetCache,而是「臨時互聯網文件」 – BugFinder

+1

你誤解了文檔。 'Directory.Exists'不檢查目錄是否可訪問,而是它是:「如果path指向一個現有目錄,則爲true;如果該目錄不存在,則返回false,或者嘗試確定指定的目錄時是否爲錯誤目錄存在。「 – Claies

+0

[如何處理UnauthorizedAccessException嘗試從沒有權限的位置添加文件時可能的重複](https://stackoverflow.com/questions/13954630/how-to-handle-unauthorizedaccessexception-when-attempting-to-add-files- from-loca) – Sinatr

回答

2

您無權訪問此文件夾的內容,因爲首先 - 它實際上不是文件夾,而是以另一個文件夾爲目標的reparse point,其次 - 它具有相當嚴格的訪問權限。

在您的具體情況下,此重新分析點以可自由訪問的「C:\ Users \ {用戶名} \ AppData \ Local \ Microsoft \ Windows \ INetCache \ IE」文件夾爲目標。

在用戶文件夾中存在幾個這樣的快捷方式,以便與傳統軟件兼容。雖然您無法列出這些重新分析點的內容,但您可以在知道名稱時訪問文件和文件夾。

最後一點說明,您無需在訪問前檢查特定的文件夾權限,而應該捕獲UnauthorizedAccessExpception並採取相應措施。你甚至不需要在訪問之前檢查文件夾的存在,因爲它可以在檢查後刪除(不是這個特定的文件夾,但一般來說),你應該趕上DirectoryNotFoundException