方法 Directory.GetDirectory 失败

本文关键字:失败 GetDirectory Directory 方法 | 更新日期: 2023-09-27 18:33:17

很奇怪,我在调用 GetDirectory() 方法时偶尔会遇到错误。

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

错误消息:"访问路径'C:''用户''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 类;如果我没有得到解决方案,我会这样做。

方法 Directory.GetDirectory 失败

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

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

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

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

另一个原因是您的应用程序正在尝试访问不是真正文件夹的文件夹

My Music
My Pictures

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