2009-03-02 9 views
21

ファイルをサーバーから.NET 2.0アプリケーション(C#)のローカルマシンにコピーしようとしていますが、ソースファイルが不必要にロックされています。この動作を引き起こしているファイルサーバー上に構成されているものと思われますが、何が助けになるのでしょうか?File.Copyは完了後にソースファイルをロックします

ファイルコピー操作後、ファイルサーバー(Windows 2K3 R2)は、サーバー上のファイルで操作が行われなくても、ソースファイルが読み取りロックで保持されていると報告します。アプリケーションが終了すると、ロックが解除されます。

私たちも、以下の見最も基本的なコードで、現象を再現することができます:

static void Main(string[] args) 
{ 
    string sourceFile = @"\\win2K3server\resource\Production\IQE\sourceFolder\iqeconsole.exe"; 
    string destinationFile = @"d:\destinationFolder\iqeconsole.exe"; 
    System.IO.File.Copy(sourceFile,destinationFile,true); 

    Console.ReadLine(); 
} 

ロックが実行File.Copy()ラインの間にすぐにoccurrs、このラインが終了した後に持続します。より複雑なアプリケーションでは、File.Copy()のルーチンが終了すると(ただし、アプリケーションはまだ実行されています)、ロックは維持されます。

アプリケーション全体が終了したときにのみロックが解除されます。

sourceFileを変更しても、UNCパスの代わりにマップされたドライブを使用しても、動作に違いはありません。

ソースファイルが別のサーバーにある場合、またはローカルにある場合、この現象は発生しません。

我々はFile.Copy後に以下の行を追加すると、ロックがすぐに解放されます。

new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { sourceFile }).Demand(); 

このこの動作を引き起こしているサーバー上の何かがあるかのように、すべては私たちに聞こえます。私たちはShadowProtectをMcAfeeアンチウィルスと一緒にサーバーにインストールしています。それとは別に、Windows Serverとそれ以上のコンポーネントには何もインストールされていないように見えます。

なぜファイルに対する読み取りアクセス許可を要求することで問題が解決するのかもわかりません。

あなたはこれらの質問に答えることができれば、我々は非常に感謝します:

  1. ファイルロックが持続する原因は何?
  2. なぜ読み取り権限を要求すると問題が解決されるのですか?
+0

更新:この問題は、もはや再現可能ではありません。それは解決したようです。 McAfeeが問題を引き起こしているかどうかを確認することはできませんでした(ただし、調査中に解決した問題と関連している可能性があります)。 – Jayden

+1

@ Jarden:File.Copyと同じ問題がありました。 File.Copy()の次の文がDeleteの場合、Exceptionへのアクセスが報告されました。問題は非決定的に発生していましたが、上記のDemand()メソッドは問題を解決しました。私の知る限りでは、この問題はウイルス対策ソフトウェアから独立しています。 – PanJanek

+0

私は同じ問題を抱えていますが、McAfee、AVGを実行していることは間違いありませんが、ファイルmontiorが無効になっています。私はUnlockerを使ってファイルをロックしていることを教えてくれて、それが自分のアプリケーションであることに同意します。だから私はまだ監督が外れたと思うよ!しかし、あなたの解決策を実装することで、私の問題は解決しますので、今度は –

答えて

4

おそらく、ロックを保持しているMcAfeeオンアクセススキャナです。読み取りアクセスのみを使用すると、読み取りアクセスはバイパスされます。私はSysinternals Process Viewerツール(Microsoftから無料)を使用してその確認を行うことができると確信しています。

McAfeeに対してどのようなサブスクリプションがあるのか​​わかりませんが、このファイルをスキャンしないように例外ルールを定義できます。

+0

こんにちは。ありがとうございました。 – Jayden

+0

記録のために、プロセスビューアを使用してこれが問題であることを確認できませんでした。私たちのサーバーのメンバーはサーバーに何もしなかったと言っても、問題は不思議に解決されたようです。あなたの答えは「最高」だったので、あなたにポイントを与えました。ご協力いただきありがとうございます。 – Jayden

+0

ありがとうございます。でも、ファイルをコピーした後に私が日常的に実行しているので、McAfeeは依然として良い候補です。 McAfee On Access Scannerを終了してから、ファイルを削除できます。 – cdonner

0

ファイルサーバーでこれを複製することはできません。

しかし、PeerSoftwareがPeerLockを使用しているため、便宜的なロックは無効になっています。

関連する問題