首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代C:驱动器时拒绝访问路径

迭代C:驱动器时拒绝访问路径
EN

Stack Overflow用户
提问于 2022-10-12 15:37:27
回答 1查看 36关注 0票数 2

问题是,当我在文件夹中--例如在我的桌面中--或者它可能是任何其他文件夹时,我的程序运行得很顺利,但是一旦我尝试用"C:“驱动器作为路径迭代每个目录和子目录中的每个文件,它就会抛出一个错误”拒绝访问路径“。

如果我在迭代文件夹之前使用了try/catch,它只向我显示类似7个文件并停止。

我的代码是这样的:

代码语言:javascript
运行
复制
        try
        {
            foreach (string file in Directory.EnumerateFiles("C:\\", "*.*", SearchOption.AllDirectories))
            {
                    textBox1.AppendText(file + "\r\n");


                    cpt++;
                    textBox2.AppendText(cpt.ToString() + "\r\n");
            }
        }
        catch (Exception ex)
        { 
            MessageBox.Show(ex.Message);
        }
       
        return cpt;

textBox1和textBox2的输出值是:

代码语言:javascript
运行
复制
C:\appverifUI.dll 1
C:\bootTel.dat 2
C:\DumpStack.log.tmp 3
C:\hiberfil.sys 4
C:\pagefile.sys 5
C:\swapfile.sys 6
C:\vfcompat.dll 7

我需要它在.NET框架上工作

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 15:49:42

普通应用程序无法访问计算机中的每个文件夹。当他们这样做时,他们会得到一个访问被拒绝的异常。您可以通过使用EnumerateFiles重载来避免这种情况,该重载接受IgnoreInaccessible设置为trueEnumerationOptions参数:

代码语言:javascript
运行
复制
var options=new EnumerationOptions { 
    IgnoreInaccessible = true,
    RecurseSubdirectories = true
};
foreach (string file in Directory.EnumerateFiles("C:\\", "*.*",options))
{
...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74044535

复制
相关文章

相似问题

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