一時ファイルをロックおよび削除するウイルススキャナー-それらに対処する最良の方法は?
-
03-07-2019 - |
質問
私のアプリケーションは、さまざまなソースからの電子メールを処理します。 OutlookおよびIMAPメールボックス。それらを解析する前に、一時ディレクトリに書き込みます(メモリに保持することはオプションではありません)。解析中に、一時ディレクトリに添付ファイルを書き込んでいる可能性があります(たとえば、添付ファイルが大きすぎてメモリに保存したり、全文を抽出したりできない場合)。
しかし、実際には、最初は非常に奇妙に思えたが、ウイルススキャナーの動作にすべて起因する可能性のある2つのことが起こります。
-
数ミリ秒前に自分で書いたファイルを開けないことがあります。ウイルススキャナーによって明らかにロックされ、それらがクリーンであることを確認します。例外が発生します。
-
ファイルがウイルススキャナによって危険と見なされる場合、ある時点で削除されます。
この動作に対処するため、オープンが失敗した場合に再試行するか、ファイルが存在するかどうかを確認するいくつかのメソッドを作成しましたが、アプリケーションのすべての部分でそれらを使用することはできません(サードパーティのコード、例のフィルター)、それで物事は良くなりましたが、100%完璧ではなく、このため私のソースコードは部分的にいように見えます。
ウイルススキャナーへの対処方法
解決
暗号化を使用してファイルを書き込みます。私はあなたがあまりにもトリッキーまたは関与する必要はないと思うでしょう。また、ウイルススキャナーもトリガーされる可能性があるため、ファイル名を暗号化またはマングルします。
他のヒント
ウイルススキャナの構成を変更するのが理想的なオプションではない場合。ファイルの作成からプロセスの最後までファイルを開いたままにできますか?ファイルのハンドルを取得した場合、ウイルススキャナーでは使用できません。
通常、メールフィルタリングファイルをウイルススキャナから除外し、一連の受信メールに含まれる専用のメールアンチウイルスプログラムを使用する必要があります。メールサーバーで「感染ファイルの削除」オプションをオフにするようユーザーに依頼することを検討してください。そうしないと、メールデータベースが失われる可能性があります:-/。たとえば、Exchangeを無視するようにAVを構成する方法は次のとおりです。 http://www.sophos.com/support/knowledgebase/article/12214。 html しかし、別の見方をすれば、ファイルにウイルスがあるため、おそらくとにかくそれを配信したくないでしょう;-)
以前の回答では、プロセスのみがファイルにアクセスできるようにアクセス許可を変更すると言われていました。それはうまくいきません。その価値のあるAVはすべてカーネルで実行され、とにかくファイルにアクセスできます。
ウイルススキャナーには除外フォルダーがあります。ドキュメントを見て、このリストに一時フォルダーを追加してください。