首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法Directory.GetDirectories故障

方法Directory.GetDirectories故障
EN

Stack Overflow用户
提问于 2013-09-28 04:17:55
回答 2查看 581关注 0票数 1

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

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

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

代码:

代码语言:javascript
复制
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命令,我得到了错误“found”。

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

EN

回答 2

Stack Overflow用户

发布于 2013-09-28 04:34:50

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

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

代码语言:javascript
复制
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];
}
票数 3
EN

Stack Overflow用户

发布于 2013-09-28 04:34:20

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

代码语言:javascript
复制
C:\Users\Default  (This path is not accessible by your code)

另一个原因可能是您的应用程序试图访问那些不是真正像

代码语言:javascript
复制
My Music
My Pictures

如果您试图读取特定驱动器中的所有文件夹,则可以设置一些异常来处理这些目录,另一件可能有助于您以管理员身份运行应用程序的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19063196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档