2017-12-29 75 views
0

ファイルをファイルにコピーする前に、NASファイル共有のUNCファイルパスをチェックしようとしています。私は実際のコピー自体に誤りがあるかもしれないことを理解しています(私は現在、そこに書き込む許可がないので)彼らはそうしようとする前にそこにファイルをコピーすることはできません。UNCファイル共有(Winforms)でのフォルダ書き込み許可の確認

私の問題は、ファイルエクスプローラと実際のFile.Copyでファイルをコピー&ペーストすることができないため、そこに書き込み権限がないことがわかっているときに、常にtrueを返すことです。 "パス '\ nascharf06 \ uas \ to_be_processed \ Andy \ A.jpg'へのアクセスが拒否されました。

これがなぜ真実に戻っていますか?

string folder = @"\\nascharf06\uas\to_be_processed\Andy"; 
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Write, folder); 
     try 
     { 
      f2.Demand(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 

答えて

1

FileIOPermissionAcces.PathDiscovery & FileIOPermissionAccess.Read & FileIOPermissionAccess.Writeためのチェック - あなたもそこに読むために何accesssを持っていないので、あなたのアクセスがブロックされる可能性があります。

これが役に立たない場合は、try - catchにラップされた1つの「ダミー書き込み」を使用して書き込みができることを確認できます。削除権がない場合は、ダミーの書き込みファイルを削除することはできません。

これは、同様にあなたを助けるかもしれない:how-can-you-easily-check-if-access-is-denied-for-a-file-in-net(同様の質問に対する回答SO-)

+0

を私はエクスプローラをC#の経由が読み取りやファイルへのアクセスを持っています。私はそこにファイルを書き込んだりコピーしたりするアクセス権を持っていませんが、今のところそれは正しいです。私の問題は、私がそこに書き込むことができるかのように私の元のポストの関数はtrueを返すが、私はファイルエクスプローラのC#経由でそこにファイルをコピーすることができないので、代わりにfalseを返すはずです。私はなぜこれが偽の代わりに真実に戻っているのだろうと思っています。 – Andy

+0

@Andy - ちょうどクソのために、そこからファイルを取り出してローカルに保存します。それを変更して元に戻してください。私の推測では、あなたはWRITEを持っていますが、CREATEパーミッションはありません。変更されていないコピーを保存しておきます。 –

関連する問題