web-dev-qa-db-ja.com

C#でのパス拒否エラーへのアクセス

同様の投稿を読んだことがありますが、問題を理解することはできません。

Windowsのアクセス許可とルートを変更しました。

ファイルを保存しようとすると、例外がスローされます:

パス****へのアクセスが拒否されました。

string route="D:\\";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
        StreamWriter write = new StreamWriter(fs);
        patient person = new patient();
        patient.name = textBox1.Text;
        patient.name2 = textBox2.Text;
45
aerojun

ディレクトリ(フォルダー)のFileStreamオブジェクトを作成しようとしています。ファイル名(例:@ "D:\ test.txt")を指定すると、エラーはなくなります。

ちなみに、エンコードを2番目のパラメーターとして使用するStreamWriterコンストラクターを使用することをお勧めします。

117
Alan

ファイル名を指定してみましたか?

例えば:

string route="D:\\somefilename.txt";
12
Renato Gama

tl; drバージョン:ファイルシステムで読み取り/書き込みモードで読み取り専用としてマークされているファイルを開こうとしていないことを確認します。

旅行中にXMLファイルを読み取ろうとしてこのエラーに遭遇しました。状況によっては(詳細は後述)、パスとファイル名が正しい場合でも、このエラーがファイルに対して生成されることがわかりました。

ファイルの詳細:

  • パスとファイル名は有効で、ファイルは存在します
  • サービスアカウントとログインしているユーザーの両方に、ファイルとフルパスに対するフルコントロールのアクセス許可があります。
  • ファイルは読み取り専用としてマークされています
  • Windows Server 2008 R2で実行されています
  • ファイルへのパスは、UNCパスではなくローカルドライブ文字を使用していました

プログラムでファイルを読み取ろうとすると、まったく同じコードを実行しているときに次の動作が観察されました。

  • ログインしたユーザーとして実行すると、ファイルはエラーなしで読み取られます
  • サービスアカウントとして実行しているときに、ファイルを読み取ろうとすると、詳細なしでアクセスが拒否されましたというエラーが生成されます

これを修正するために、メソッド呼び出しをデフォルト(RWとして開く)からファイルをROとして開くように変更する必要がありました。一度変更すると、エラーがスローされなくなりました。

5
Taegost

これらすべての回答で問題が解決しない場合は、ファイル属性を次のように変更してください。

File.SetAttributes(yourfile, FileAttributes.Normal);
1
CPJ

ファイルにアクセスする権限がありません。そのドライブのファイルにアクセスできるかどうかを確認してください。

string route= @"E:\Sample.text";
FileStream fs = new FileStream(route, FileMode.Create);

作成するファイル名を指定する必要があります。これを試してください、今すぐ作成できます。

0
chennaiah.P