方法目录.GetDirectories失败

时间:2013-09-28 04:17:55

标签: c# .net

很奇怪我在调用GetDirectories()方法时遇到偶然的错误。

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

错误消息:'访问路径'C:\ Users \ XXXX \ XXXXX被拒绝'

代码:

public static string[] GetDirectoryInfo(string path)
{
    if (Directory.Exists(path))
    {
        //This call is failing on the new folder.
        return Directory.GetDirectories(path);
    }
    return new string[0];
}

不是很复杂,对吗?

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

在CMD提示符中,我可以将目录更改为此文件夹;跟进DIR命令后,我收到错误“找不到文件”。

我猜 问题是Win32问题,移动文件夹时没有清理的东西。我不知道如何纠正这个问题,除了挖掘反编译的System.IO类;如果我没有得到解决方案,我会这样做。

2 个答案:

答案 0 :(得分:2)

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

最简单的解决方案是捕获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];
}

答案 1 :(得分:0)

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

C:\Users\Default  (This path is not accessible by your code)

另一个原因是您的应用程序正在尝试访问不像

这样的文件夹的文件夹
My Music
My Pictures

如果您正在尝试读取特定驱动器中的所有文件夹,那么您可以使用一些例外来处理这些目录,另一件可能帮助您以管理员身份运行应用程序的事情。