C# 方法Directory.GetDirectories失败

C# 方法Directory.GetDirectories失败,c#,.net,C#,.net,非常奇怪的是,我在调用getDirectory()方法时偶尔会遇到错误 当我们的IT部门将一些文件夹远程移动到我的本地计算机时,就开始出现这种情况。此错误仅在使用C#浏览这些文件夹时发生 错误消息:“对路径“C:\Users\XXXX\XXXXX”的访问被拒绝” 代码: 不是很复杂,对吗 使用Windows资源管理器导航时,文件夹不存在 在CMD提示符下,我可以将目录更改为该文件夹;在执行DIR命令之后,我得到了错误“File not found” 我猜 问题是Win32问题,在移动文件夹时未清

非常奇怪的是,我在调用getDirectory()方法时偶尔会遇到错误

当我们的IT部门将一些文件夹远程移动到我的本地计算机时,就开始出现这种情况。此错误仅在使用C#浏览这些文件夹时发生

错误消息:“对路径“C:\Users\XXXX\XXXXX”的访问被拒绝

代码:

不是很复杂,对吗

使用Windows资源管理器导航时,文件夹不存在

在CMD提示符下,我可以将目录更改为该文件夹;在执行DIR命令之后,我得到了错误“File not found”

我猜
问题是Win32问题,在移动文件夹时未清除某些内容。我不知道如何纠正这个问题,除了深入研究反编译的System.IO类;如果找不到解决方案,我会这样做。

当软件试图访问因安全原因而受windows限制的文件夹时,会发生这种情况,例如:

C:\Users\Default  (This path is not accessible by your code)
另一个原因是,您的应用程序正在尝试访问的文件夹不是真正的文件夹

My Music
My Pictures

如果您试图读取特定驱动器中的所有文件夹,则可以对这些目录进行例外处理,另一个可能对您有帮助的方法是以管理员身份运行应用程序

您的代码可能试图访问您的帐户/角色无法访问的隐藏文件夹

最简单的解决方案是捕获
UnauthorizedAccessException
并吃掉它,因此它基本上跳过目录,如下所示:

public static string[] GetDirectoryInfo(string path)
{
    if (Directory.Exists(path))
    {
        try 
        { 
            //This call is failing on the new folder.
            return Directory.GetDirectories(path);
        }
        catch(UnauthorizedAccessException unAuthEx)
        {
            // Do nothing to eat exception
        }
    }
    return new string[0];
}

您没有找到文件错误,但您对计算机说。我很困惑。如果文件夹在资源管理器中可见,请检查权限,否则我认为ILSpy是您最好的选择,以找出它可能出错的原因。不,有问题的文件夹在资源管理器中不可见。权限不是问题,这是我检查的第一件事。我一直在寻找新的工具,所以我会看看ILSpy。谢谢。权限是个问题。请IT部门为您解决此问题。是的,这将是最简单的,并且已经实施,直到(如果)我能找到解决方案为止。我想保持问题的简单性,但是问题中的文件夹是environment.SpecialFolders,它们在移动过程中被删除,映射仍然存在(猜测)。这就是我需要删除的内容。
public static string[] GetDirectoryInfo(string path)
{
    if (Directory.Exists(path))
    {
        try 
        { 
            //This call is failing on the new folder.
            return Directory.GetDirectories(path);
        }
        catch(UnauthorizedAccessException unAuthEx)
        {
            // Do nothing to eat exception
        }
    }
    return new string[0];
}