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



可能重复:
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优雅地处理它并继续搜索,也可以尝试在有权进入该目录的帐户下运行。

最新更新