System.UnauthorizedAccessException C# in winforms



问题是回收站文档和设置文件夹/文件上的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方法,在这里我不必手动循环和测试每个文件夹/dir。我发现了一些操作类似的重复MS代码。它也犯了同样的错误。

我提前感谢

在Stack Overflow中还有其他对此的引用;但是您可能需要为应用程序本身定义权限。设置Perms

还有一个小金块[C:\Users is a JUNCTION];C#:访问路径<#39;文件路径'>被拒绝

try/catch进行救援,如下文所示。还有其他选择。

最新更新