2012-07-16 26 views
2

問題是System.UnauthorizedAccessException 回收站文檔和設置文件夾/文件。 (VS2010 .NET 4.0 C#)System.UnauthorizedAccessException C#winforms

以下LINQ代碼查詢目錄大小。我試過GetFiles和EnumerateFiles。我肯定以管理員身份運行。在評論代碼中,您可以看到我嘗試從另一個Stack帖子中測試某些屬性,但未成功。

DirectorySize(new DirectoryInfo(@"C:\\"),true); 

public static long DirectorySize(DirectoryInfo dInfo, bool includeSubDir) 
{ 
    // Enumerate all the files 
    long totalSize = dInfo.EnumerateFiles().Sum(file => file.Length); 
     //.Where(d => (d.Attributes & FileAttributes.ReparsePoint) == 0 && (d.Attributes & FileAttributes.System) == 0) 
     //.Sum(file => file.Length); 

    if (includeSubDir) // Subdirs? 
    { 
     // Enumerate all sub-directories 
     totalSize += dInfo.EnumerateDirectories().Sum(dir => DirectorySize(dir, true)); 
      //.Where(d => (d.Attributes & FileAttributes.ReparsePoint) == 0 && (d.Attributes & FileAttributes.System) == 0) 
      //.Sum(dir => DirectorySize(dir, true)); 
    } 
    return totalSize; 
} 

我想要一個簡潔的LINQ方法,我不必手動循環和測試每個文件夾/目錄。我發現了一些類似操作的重複的MS代碼。它也錯了。

我在此先感謝,

+2

我認爲你需要吞下藥丸並嘗試/發現異常。 http://stackoverflow.com/a/5957525/284240 – 2012-07-16 20:37:32

+0

這與Winforms無關 – IanNorton 2012-07-16 20:59:40

+0

提到winforms的原因是建立環境並從討論中消除通常的asp.net/iIS環境。 – 2012-07-17 14:49:19

回答

相關問題