1

GetDirectories() メソッドを呼び出すときに、ときどきエラーが発生するのは非常に奇妙です。

これは、IT 部門がいくつかのフォルダーをローカル マシンにリモートで移動したときに発生し始めました。このエラーは、C# を使用してこれらのフォルダーをナビゲートする場合にのみ発生します。

エラー メッセージ: 'パスへのアクセス 'C:\Users\XXXX\XXXXX が拒否されました'

コード:

public static string[] GetDirectoryInfo(string path)
{
    if (Directory.Exists(path))
    {
        //This call is failing on the new folder.
        return Directory.GetDirectories(path);
    }
    return new string[0];
}

それほど複雑ではありませんよね?

Windows エクスプローラーでナビゲートすると、フォルダーが存在しません。

CMD プロンプトで、ディレクトリをこのフォルダーに変更できます。DIR コマンドを実行すると、「ファイルが見つかりません」というエラーが表示されます。

問題は Win32 の問題であり、フォルダーが移動されたときに何かがクリーンアップされなかったと推測しています。逆コンパイルされた System.IO クラスを掘り下げることを除いて、問題を修正する方法がわかりません。解決策が得られない場合は、これを行います。

4

2 に答える 2

0

これは、次のようなセキュリティ上の理由で Wi​​ndows によって制限されているフォルダにソフトウェアがアクセスしようとしたときに発生します。

C:\Users\Default  (This path is not accessible by your code)

もう 1 つの理由は、アプリケーションが実際のフォルダーではないフォルダーにアクセスしようとしている可能性があります。

My Music
My Pictures

特定のドライブ内のすべてのフォルダーを読み取ろうとしている場合は、これらのディレクトリを処理するための例外を作成できます。アプリケーションを管理者として実行することも役立つかもしれません。

于 2013-09-28T04:34:20.323 に答える