2

私のコードは Delphi 7 で書かれていますが、それが特定の役割を果たすとは思いません。

ファイルの内容を WriteFile で上書きしようとしています。「.dll」ファイルを書き込んでいてウイルス対策がアクティブな場合を除いて、完全に機能します。

  • ファイルへのハンドルを開くことは問題ありません。
  • 書き込みがブロックされています: WriteFile 関数は戻りません !!!

ウイルス対策は、そのdllでの上書きを防止しているようです。しかし、最悪の場合、アプリがブロックされている、タスク マネージャーがブロックされている、Windows エクスプローラーがブロックされているなどの理由で、PC を再起動する必要があります。

どうすればこれを防ぐことができますか?

何か案は ?

4

2 に答える 2

3

アンチウイルスの問題に対処する方法について他の誰もが言ったことは別として、オーバーラップ I/O を使用してタイムアウトを設定し、WriteFile()この問題が再び醜い頭を上げた場合にコードがデッドロックしないようにすることもできます。重複した操作がタイムアウトした場合は、 でキャンセルしてCancelIo()から、問題をユーザーに報告できます。

于 2012-09-25T17:50:23.433 に答える
0

実行可能ファイルにデジタル署名を追加すると、ウイルス対策がトリガーされる可能性が低くなります。多くの Delphi プログラムがウイルス対策ソフトウェアによって誤ってターゲットにされており、D7 は最悪です。

dll に何を書き込もうとしているのかわからない。アンチウイルスは、PE 外の余分なデータを好みません。

dll を更新する必要があるだけの場合は、古い dll の名前を変更し、新しいファイルを作成してから、古いファイルを削除してください。

于 2012-09-25T10:00:44.467 に答える