System.UnauthorizedAccessException在winforms中的C#

时间:2012-07-16 20:17:17

标签: c# linq permissions

问题是回收站文档和设置文件夹/文件上的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代码。它也出错了。

我提前感谢,

2 个答案:

答案 0 :(得分:1)

Stack Overflow中还有其他引用;但您可能需要为应用程序本身定义权限。 Setting Perms

还有这个小块[C:\ Users是一个JUNCTION]; C#: Access to path <'filepath'> is denied

答案 1 :(得分:0)

following article所示,

try/catch进行救援。还有alternatives