0

可能重复:
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;
    }

我知道在调用函数时要为路径放置什么,但我应该为文件放置什么?如何使用/调用函数?我不知道该放什么文件。

4

2 回答 2

1

一种选择是以管理员身份运行程序。(右键单击并以管理员身份运行)

另一种选择是自定义编码您自己的目录搜索,例如:

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) { }
}
于 2012-08-23T21:30:57.243 回答
0

如果您正在运行该函数的 Windows 帐户没有将目录更改为文件夹的权限,则如果您尝试从代码中访问它,则会出现该异常。您可以使用 try / catch 优雅地处理它并继续搜索,或者您可以尝试在有权进入该目录的帐户下运行。

于 2012-08-23T21:28:32.737 回答