スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AlwaysUnloadDllの真実

『長押し』のようなフックを使用したプログラムにはEXEの他にDLLが必要で、そのDLLが各プロセスのアドレス空間にロードされることで、他プロセス内のいろいろなイベントをフックすることができます。開発中にはプログラムをビルドし、それをデバッグ実行することを繰り返しますが、各プロセスにロードされたDLLが解放されなくなってしまう場合があります。開発者の都合ではフックが解除された時点でDLLを解放して欲しいのですが、なかなかそうもいかないようです。解放されないとビルドや上書きができないので、あちこちのプロセスを落として回るんですが、最悪の場合にはWindowsをログオフすることになります。
そこで、不要になったDLLをすぐに解放するためのキーワードがAlwaysUnloadDllです。マシンを新しくしたので、再度このAlwaysUnloadDllを設定しようと思ったのですが、やり方を忘れてしまいました。そこで、ネットで調べてみたところ、どうも情報が錯綜してしまっているようです。

【方法1】
レジストリのHKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows
¥CurrentVersion¥Explorer以下にAlwaysUnloadDLLキーを追加する。

【方法2】
レジストリのHKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows
¥CurrentVersion¥Explorer以下にAlwaysUnloadDLLキーを追加し、既定の値を1とする。

【方法3】
レジストリのHKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows
¥CurrentVersion¥ExplorerにAlwaysUnloadDLLというDWORD値を追加し、値を1とする。

う~ん、一体どれが本当なんだ・・・。そもそも私がこのAlwaysUnloadDllを知ったのは「Microsoft Windows 95 プログラマーズガイド」なので、その本によると【方法1】のキーを追加するだけの方法のようです。(値を1にするという記述がないので。)ただし、「キーを追加する」という表現ではなく、「レジストリに次の情報を追加すると、アクティブでない時間を短くできます」という表現になっています。
MSDNにおいても「Unloading the DLL」というトピックに「you can shorten the inactive period by adding the following information to the registry」という記述があり、同様の表現と思われます。下のがMSDNのレジストリ表記です。すべて太字になっています。

HKEY_LOCAL_MACHINE
 Software
  Microsoft
   Windows
    CurrentVersion
     Explorer
      AlwaysUnloadDll


ちなみにMSDNの「Unloading the DLL」のトピックと同じページに「Running and Testing Shell Extensions on Windows NT」というトピックがあり、「To enable this feature, add the following value to the registry. 」とあります。

HKEY_CURRENT_USER
 Software
  Microsoft
   Windows
    CurrentVersion
     Explorer

      DesktopProcess (REG_DWORD)= 1

これはExplorerのデスクトップのプロセスを別にするための設定だと思われますが、こちらは「REG_DWORD」と明示されており、また「DesktopProcess 」だけが太字になっていません。これを見ると、誰かが「DesktopProcess」の設定と混ぜてしまったのかなーとも思えます。

ちなみに私は【方法1】で設定してみましたが、効果の程はいまいちよく分かりません。(^^;
その後、この記事を書くためにネットで調べているとマイクロソフトの技術情報に以下のような記述を見つけました。



HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows
¥CurrentVersion¥Explorer¥AlwaysUnloadDLL

Important This registry key is no longer supported in Microsoft Windows 2000 or later.




えぇ~~~~~~~!!!(T-T)
マジで???
みんな不正解???
関連記事

comment

Secret

No title

ちなみにこの設定XPでは無効です。

No title

あらま、意味ないんですね、早速戻そうw
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
カテゴリー
最近の記事
最近のコメント
タグ

カメラ GH2 GH3 

ブログ内検索
月別アーカイブ
RSSフィード
プロフィール
●オンラインソフト作家。しかし長らく活動休止中。
ソフトウェア

●Dさんの長押しIME起動2
●IME+ (仮称)

・Dさんの長押しIME起動。
・Dさんの日本語じゃなきゃイヤン。
・Dさんの名前変更お手伝い。
・Dさんのダイヤルアップ接続お手伝い。
・DさんのWindows終了お手伝い。

・お忍びランチャー。
・お忍びリネーム。
・デジくいっくサーチ!
・Simple Remote
・計算王?

※過去の開発ソフトの一部はリンク先からダウンロードできます。

リンク
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。