2013-04-09 108 views
3

在特殊的文件夾中提出在我的應用程序使用下面的命令從所選路徑得到的所有文件:異常在Windows 7

foreach (string currentFile in Directory.EnumerateFiles(@"c:\", "*.*", SearchOption.AllDirectories)) 
{ 
    //some logic here 
} 

的事情是,試圖訪問特定的目錄如c:\Documents and Settings我得到的時候一個UnauthorizedAccessException

上面提到的文件夾不顯示在Windows Explorer.NET System.Windows.Forms.FolderBrowserDialog,我無法找到此文件夾的特定屬性,所以我可以通過篩選枚舉。我試過thisthis但沒用。

是否有任何種類的屬性或參數可以用來限制這種類型的目錄從我的循環?

+0

Windows資源管理器根本沒有列出「Documents and Settings」,因爲它被標記爲隱藏的系統文件夾。它並不關心它是否可訪問,如果您將資源管理器配置爲顯示隱藏文件和系統文件和文件夾,它會顯示出來,但仍然無法訪問。 – hvd 2013-04-09 11:59:18

回答

3

目錄類不提供跳過不可訪問的文件和文件夾的方法。您可以編寫自己的目錄掃描方法,該方法將遞歸地進入每個文件夾並在發生異常時跳過它。

+0

沒有辦法通過檢查'DirectoryInfo'參數來檢查這個嗎? – Yoav 2013-04-09 12:05:18

+0

您可以使用DirectoryInfo.GetAccessControl()獲取訪問控制列表,然後嘗試確定您是否擁有權限。但我認爲沒有理由這樣做,因爲捕捉異常會更容易實現和理解。 – alex 2013-04-09 12:25:25

+0

結束了這個解決方案:http://stackoverflow.com/a/929418/1092181,顯然(和令人驚訝的是)更容易趕上'例外'而不是檢查權限。非常感謝! – Yoav 2013-04-25 19:54:28

0

難道你不能只是讓系統管理員給你的用戶讀取所有文件的權限嗎?聽起來好像有些東西你不能訪問。雖然我不會僅僅從可移植性的角度來排除這些文件,但我並不打算解決這個問題(不幸的是,我不能直接說出如何做到這一點)。

+0

我不想訪問未經授權的目錄。我只想跳過它們。 – Yoav 2013-04-09 11:55:48

+1

如果他讀到這個答案,我們的安全人員會心臟病發作。 – 2013-04-09 11:57:57

相關問題