2

問題は、ごみ箱またはドキュメントと設定フォルダ/ファイルのSystem.UnauthorizedAccessExceptionです。(VS2010 .NET 4.0 C#)

ディレクトリサイズをクエリするための次の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コードをいくつか見つけました。それも同じようにエラーになります。

よろしくお願いします。

4

2 に答える 2

1

StackOverflowにはこれに関する他の参照があります。ただし、おそらくアプリケーション自体のアクセス許可を定義する必要があります。 パーマの設定

この小さなナゲットもあります[C:\ Users is aJUNCTION]; C#:パス<'filepath'>へのアクセスが拒否されました

于 2012-07-16T20:30:23.030 に答える
0

try/catch次の記事で示されているように救助に。選択肢もあります。

于 2012-07-16T20:29:11.447 に答える