2009-08-17 11 views
0

アセンブリを動的にロードしています。ファイルの移動やファイルの切り取りと貼り付けによってロードされたファイルが移動されないようにする必要があります。.NETでファイルが移動されないようにする方法はありますか?

Windowsは、読み込まれたアセンブリが削除されないようにします。ただし、同じボリューム内の別のディレクトリにファイルを移動することはできます。

ファイルが移動されないようにする方法はありますか。

ありがとうございました。

+1

FileStreamのLock(...)メソッドを使用してファイルをロックする必要がありました。 – tranmq

答えて

1

ユーザーに移動させたくないフォルダにアクセス許可を設定できます。 ファイルまたはフォルダのアクセス制御を取得するには、System.Security.AccessControlを使用する必要があります。このpostをmsdnで使用すると、あなたの役に立ちます。

+0

これはいい考えです。私はそれを調査します。ありがとう。 – tranmq

+0

これは適用されません。 – tranmq

+0

どうですか?アセンブリが存在するフォルダにアクセス許可を設定できないということですか? – ak3nat0n

0

これは最も簡単で正しい方法ではありませんが、私が大学で行ったWindowsサービスプロジェクトです。

基本的には、ディレクトリをスキャンしたサービスで、ファイルが変更されたときに通知されます。これは、そのディレクトリ内のイベントをキャッチする何らかの方法かもしれません。あなたが知っているアセンブリのうちの1つが、移動したくないとユーザに通知し、移動させたくない場合は、

このリンクは、移動されるファイルによってスローされるイベントはわかりませんが、「変更されました」と思われますか?

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6165137.html

は、この情報がお役に立てば幸い!

+0

あなたが意味していた 'FileSystemWatcher'だと、ファイルが移動されたかどうかを検出せず、ファイルがまったく動かないようにしているので役に立ちません。ウォッチャーから通知を受け取ったら、ファイルはすでに移動されています!移動したファイルを検出して元の場所に戻すことで、回避する必要はありません。 – tranmq

0

zaladaneの答えにあなたのコメントは、実際に問題の核心に行く:

これは、[アクセス権の設定]は同等以上の権限を持つユーザーによって移動されることからファイルを防ぐことはできません。

あなたよりも高いアクセス権を持っている人がいる場合、移動するのを防ぐために何かできることはないと思います。新しいアセンブリをインストールするためにフォルダへのアクセス権が必要な場合は、ファイルを移動する権限が与えられます。