当社の社内アプリケーションでは、起動時に読み取るフォルダXのファイルaa、bb ... zzが必要です。私(FullControlのフォルダXにアクセスできる人)がアプリを起動すると、すべてうまくいく。私の同僚(フォルダXへの読み取りアクセス権しか持っていない)がアプリを起動すると、「ファイルにアクセス拒否」という例外が発生します。アプリケーションエクスプローラを使用してファイルをコピーすることはできますが、ファイルにアクセスできない
のファイルは、以下のルーチン
public static void readFromBinaryFile(this QIHasFileIo xThis, string xFilePath)
{
if (!System.IO.File.Exists(xFilePath))
throw new System.Exception("File to read " + xFilePath + " does not exist ... ");
if (xThis == null)
throw new NullReferenceException("xThis cannot be null, as it is a readonly reference ... ");
using (BinaryReader xReader = new BinaryReader(new FileStream(xFilePath, FileMode.Open, FileAccess.Read)))
xThis.readObject(xReader);
}
つまり、私は順番に必要とフォルダのみへのアクセスをお読みください読み取りモードを指定していますによって読まれています。私の同僚がエクスプローラでフォルダXに移動すると、aa、bb、...ファイルをデスクトップにコピーできます。つまり、ファイルへの読み取りアクセス権があります。
私は興味をそそられています。この奇妙な動作は、数日前にデータサーバーの変更から始まりました。最も顕著な変更点は、1 /私の同僚がデータサーバー2の管理者権限を持っていないこと/いくつかのGPOが混乱している可能性があるということでした(以前は社内で起こっていました)。 IT部門も同様に困惑しているので、どのように進めるべきかわからない。
どれヒントははるかに高く評価され、 ダニエル
編集:アンすでに削除ポストはFileShare.ReadWrite
を使用して提案しました。私はコメントの著者に感謝していますが、ファイルには書き込みロックがないことが保証されています。したがって、why File.copy works but File.OpenRead prompts access denied?スレッドはここでは関係ありません。
ファイルは、別のプロセスによって同時に書き込まれているか、またはアクセスされていますか? – Baldrick
もしそうなら、 'FileStream'コンストラクタに渡されるパラメータに' FileShare.ReadWrite'を追加する必要があります。これにより、排他的な読み取りロックを取得しようとしません。 – Baldrick
[File.copyが動作するのにFile.OpenReadがアクセスを拒否する理由は?](http://stackoverflow.com/questions/28087927/why-file-copy-works-but-file-openread-prompts-access-拒否されました) – Baldrick