C# 方法Directory.GetDirectories失败
非常奇怪的是,我在调用getDirectory()方法时偶尔会遇到错误 当我们的IT部门将一些文件夹远程移动到我的本地计算机时,就开始出现这种情况。此错误仅在使用C#浏览这些文件夹时发生 错误消息:“对路径“C:\Users\XXXX\XXXXX”的访问被拒绝” 代码: 不是很复杂,对吗 使用Windows资源管理器导航时,文件夹不存在 在CMD提示符下,我可以将目录更改为该文件夹;在执行DIR命令之后,我得到了错误“File not found” 我猜C# 方法Directory.GetDirectories失败,c#,.net,C#,.net,非常奇怪的是,我在调用getDirectory()方法时偶尔会遇到错误 当我们的IT部门将一些文件夹远程移动到我的本地计算机时,就开始出现这种情况。此错误仅在使用C#浏览这些文件夹时发生 错误消息:“对路径“C:\Users\XXXX\XXXXX”的访问被拒绝” 代码: 不是很复杂,对吗 使用Windows资源管理器导航时,文件夹不存在 在CMD提示符下,我可以将目录更改为该文件夹;在执行DIR命令之后,我得到了错误“File not found” 我猜 问题是Win32问题,在移动文件夹时未清
问题是Win32问题,在移动文件夹时未清除某些内容。我不知道如何纠正这个问题,除了深入研究反编译的System.IO类;如果找不到解决方案,我会这样做。当软件试图访问因安全原因而受windows限制的文件夹时,会发生这种情况,例如:
C:\Users\Default (This path is not accessible by your code)
另一个原因是,您的应用程序正在尝试访问的文件夹不是真正的文件夹
My Music
My Pictures
如果您试图读取特定驱动器中的所有文件夹,则可以对这些目录进行例外处理,另一个可能对您有帮助的方法是以管理员身份运行应用程序 您的代码可能试图访问您的帐户/角色无法访问的隐藏文件夹 最简单的解决方案是捕获
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];
}
您没有找到文件错误,但您对计算机说。我很困惑。如果文件夹在资源管理器中可见,请检查权限,否则我认为ILSpy是您最好的选择,以找出它可能出错的原因。不,有问题的文件夹在资源管理器中不可见。权限不是问题,这是我检查的第一件事。我一直在寻找新的工具,所以我会看看ILSpy。谢谢。权限是个问题。请IT部门为您解决此问题。是的,这将是最简单的,并且已经实施,直到(如果)我能找到解决方案为止。我想保持问题的简单性,但是问题中的文件夹是environment.SpecialFolders,它们在移动过程中被删除,映射仍然存在(猜测)。这就是我需要删除的内容。
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];
}