Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Directory.GetFiles时发生UnauthorizedAccessException_C#_.net_Exception_File - Fatal编程技术网

C# 使用Directory.GetFiles时发生UnauthorizedAccessException

C# 使用Directory.GetFiles时发生UnauthorizedAccessException,c#,.net,exception,file,C#,.net,Exception,File,在我正在编写的应用程序中,用户可以添加一些文件夹,以递归方式搜索一些文件 问题是他想添加到应用程序的文件可能存储在基本驱动器中,如K:。所以如果他直接添加这个驱动器,我会得到一个例外 或者,如果他加上C:\,那么我会得到UnauthorizedAccessException,它说: 对路径“C:\System Volume Information”的访问被拒绝 我怎样才能扫描我可以扫描的地方?并允许完全扫描另一个非系统驱动器(所有目录)?捕获异常,忽略它,然后移动到下一个目录。为什么这对我不起作

在我正在编写的应用程序中,用户可以添加一些文件夹,以递归方式搜索一些文件

问题是他想添加到应用程序的文件可能存储在基本驱动器中,如K:。所以如果他直接添加这个驱动器,我会得到一个例外

或者,如果他加上C:\,那么我会得到UnauthorizedAccessException,它说:

对路径“C:\System Volume Information”的访问被拒绝


我怎样才能扫描我可以扫描的地方?并允许完全扫描另一个非系统驱动器(所有目录)?

捕获异常,忽略它,然后移动到下一个目录。

为什么这对我不起作用。我尝试/捕获unauthorizedAccessException,但它仍然只是停止程序。

同意,这很可能比在处理它之前检查每个目录的访问权限要好。@Bernhof:我也这么认为。我考虑过检查权限的替代方案,但这会对有效目录做两次检查(一次检查,一次分析文件夹结构),所以我决定这是一个较小的选择。谢谢,当我搜索非系统基本驱动器时,我也会尝试例外。这是一个不同的异常。因为如果您尝试通过一个调用(在子目录中递归扫描)来执行此操作,则函数在引发unauthorizedAccessException时停止。因此,您应该执行一个递归函数,在directorys/子目录中循环,并在Directory.GetFiles(将返回的结果连接到一个更高级别的变量)中调用,该函数包装在Try/Catch中,以防止出现问题…有关解释,请参阅以下链接: