可能重复:
UnauthorizedAccessException无法解决Directory.GetFiles失败
这是我用来搜索文件的功能:
public string SearchFor(string fileExtension, DirectoryInfo at)
{
string error = null;
try
{
foreach (DirectoryInfo subDir in at.GetDirectories())
{
SearchFor(fileExtension, subDir);
foreach (FileInfo f in at.GetFiles())
{
// test f.name for a match with fileExtension
// if it matches...
// yield return f.name;
if (f.Name == fileExtension)
{
return f.Name;
}
else
{
error = f.Name;
}
}
}
}
catch (UnauthorizedAccessException) { }
return error;
}
我知道在调用函数时应该为路径放什么,但我应该为文件放什么?如何使用/调用函数?我不知道该放什么作为文件。
一个选项是以管理员身份运行程序。(右键单击并以管理员身份运行)
另一种选择是自定义代码自己的目录搜索,类似于:
public IEnumerator SearchFor(string fileExtension, DirectoryInfo at) {
try {
foreach (DirectoryInfo subDir in at.GetDirectories()) {
SearchFor(fileExtension, subDir);
foreach (FileInfo f in at.GetFiles()) {
// test f.name for a match with fileExtension
// if it matches...
// yield return f.name;
}
}
} catch (UnauthroizedAccessException) { }
}
如果运行函数所使用的windows帐户没有将目录更改为文件夹的权限,那么如果您尝试从代码中访问它,就会出现该异常。您可以通过try/catch优雅地处理它并继续搜索,也可以尝试在有权进入该目录的帐户下运行。