如何在C:\和任何其他驱动器中搜索特定文件类型?我得到了异常访问被拒绝

时间:2012-08-23 21:17:47

标签: c#

  

可能重复:
  UnauthorizedAccessException cannot resolve Directory.GetFiles failure

这是我用来搜索文件的功能:

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;
    }

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

2 个答案:

答案 0 :(得分: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) { }
}

答案 1 :(得分:0)

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