DLLの検索順を変更しアプリケーションエラーを改善する

2010.08.01 ( Sun )
アプリケーションエラー
DLLの検索順を変更する方法のメモ

Windowsのアプリケーションを使用していると、突然
アプリケーションエラー
"0x00000000"の命令が"0x00000000"のメモリを参照しました。メモリが"read"に
なることはできませんでした。
と表示されることがあります。

アプリケーションエラーが起こる理由は様々ありますが、その一つに「DLL地獄」があります。

これはバージョンの異なるDLLを参照することにより引き起こされますが、実行ファイル(exeファイル)と同じフォルダにDLLが存在する場合、DLLの検索順を変更することにより改善する可能性があります。

DLLの検索順を変更する方法

1.
regedit
「スタート」→「ファイル名を指定して実行」で「regedit」と入力し、「OK」をクリック。

2.
レジストリエディタが起動するので、
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager"
とキーをたどり開く。

3.
SafeDllSearchMode
右側の領域を右クリックし、「新規」→「DWORD値」を選択し、名前を「SafeDllSearchMode」にする。

4.
SafeDllSearchMode
「SafeDllSearchMode」を開き、「値のデータ」に「0」と入力し、「OK」をクリック。

5.
設定が終了したら「レジストリエディタ」を終了させ、Windowsを再起動すればOKです。

デフォルトでDLLは、「System32」→「System」→「Windows」→「カレントフォルダ」
という順番で検索されるため、カレントフォルダにDLLがあっても、System32フォルダに同盟のファイルが存在すると、そちらのDLLが使用されてしまいます。

上記設定を行うと、「カレントフォルダ」→「System32」→「System」→「Windows」
と検索されるようになるので、カレントフォルダにDLLがある場合そちらが使用されるようになります。

既存のシステムに影響はほとんどありませんが、設定を戻したい場合は「SafeDllSearchMode」の値のデータを「1」にすればOKです。

なお、レジストリの編集は操作を誤るとOSが起動しなくなることもあるので、バックアップを取り自己責任で行ってください。


スポンサードリンク


この記事に対するコメント


ありがとうございました 今のところ効果テキメンです。
WIN7を再インストールした直後にも関わらずあるゲームのアプリにてこのメモリ参照エラーが頻発し大変困っていました。
古いエントリーにて恐縮ですが感謝の意をぜひ記したく思いました。
【2016/03/26 04:53】 神です #- [編集]


この記事に対するコメントの投稿












※ スパムコメント対策のため、現在「http」が含まれているコメントを拒否しています。
URLを書く場合は、"h"を抜いて書くなどして下さい。

申し訳ありませんが、いろいろ忙しくなってしまったので、
今後、質問などのコメントに対しての返信はほとんど出来ないと思います。
不明点が場合はGoogle等を利用して自力で解決して頂くか、諦めてください (´・ω・`)

この記事に対するトラックバック

トラックバックURL
http://ub.blog85.fc2.com/tb.php/429-f73b328b
この記事にトラックバックする(FC2ブログユーザー)
ブログ内検索
RSS
Google +1 ボタン
リンク
人気記事ランキング
ブログパーツ
アクセスランキング
ブログパーツ
カウンター

カレンダー
«07 | 2017/08 | 09»
--12345
6789101112
13141516171819
20212223242526
2728293031--
テスト
track word track feed この日記のはてなブックマーク数