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

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 に答える