この間、アプリケーションを実行しようとしたらエラー状態0xc0000020とかいって起動できなくなったので書いておく。
エラーメッセージには「~~.dllはWindows上では~~。エラー状態0xc000020。」と出ていたので、どうやらdllがおかしいようで、確認してみると、ファイルサイズが0KBになってしまっていた。あららこまった。
このままではどうしようもないので再インストールしてみたものの、また同じエラーが出る。どうしたものかと考えて、dllファイルを全部別の場所にコピーしてバックアップしてしまうことにした。こうしておけば、エラーが出るたびに問題のdllファイルを置き換えれば問題なく起動する。
しかしこれでは根本的な解決になっていないので原因を探ってみる。
エラーが出た時のdllの更新日時を見るに、起動した瞬間にファイルが書き換えられて0KBになってしまっている。ここでマカフィーのリアルタイムスキャンに疑いの目が向いた。試しにリアルタイムスキャンを止めるとちゃんと起動するではないか。
マカフィー曰く
ファイルが使用されるとすぐに、リアルタイムスキャンがファイルをスキャンします。これにより、脅威からパソコンを継続的に保護します。
ということらしいのだが、勝手にファイル改竄してんじゃねえよと言いたい。
さすがにリアルタイムスキャンを根本から止めるとセキュリティ的にまずいので、「除外項目」に追加しておくのが良いと思う。エラーが出たらまず再インストールして、中身を全部マカフィーの「ウイルスとスパイウェア対策>リアルタイムスキャン」の除外項目に追加してしまえば解決だ(たぶん)。あるいは、まずdllをバックアップしておき、エラーが出たら該当のファイルだけをバックアップから復元して除外項目に追加することでも対処可能なはず。
何が苛立たしいかって除外項目に複数ファイルをまとめて指定できないところだろう。面倒臭がりでセキュリティにそこまで熱心でないならリアルタイムスキャンを無効にしてしまうと楽かもしれない。(もちろん責任は取らない!)
なお、マカフィーが原因でない場合の解決策はわからないが、とりあえず再インストールすればしばらくは保つはずだ。
UnityとLilithでエラーが出たのだが、スキャンの基準が気になるところである。