Windows Server 2003/2008をデスクトップOSに 9

このエントリーをはてなブックマークに追加
259248
HALOのメモリ不足エラーがまた出たので詳しく調べてみた。
何故か固定アドレスでメモリを確保する処理がある(普通はそのように作らない)
そのメモリ領域をwininet.dllとiertutil.dllが占有してしまうため、エラーになってしまうみたい。

対策法
rebase.exeをSDKかどっかから持ってくる。
※rebase.exeはWindowsの起動ロゴを変えるためにntoskrnl.exeの
  チェックサムを直すために使ったのと同じツールです。

コマンドプロンプトを起動して次のコマンドを入力する。

>cd (HALOのインストール先)

DLLを複製する
 copy %windir%\syswow64\wininet.dll .
 copy %windir%\syswow64\iertutil.dll .

DLLの配置アドレスを変更
 rebase -b 4f000000 wininet.dll
 rebase -b 4f100000 iertutil.dll

halo.exeが上記のDLLをロードするようにする
 echo. > halo.exe.local

その後はkb969897とか入れても、今のところ問題なし。
日本語でメモリ不足のダイアログが出るが、これは続行しても大丈夫です。