1285660139 Windowsでソフトウエアをアンインストールする際に

「使われていないdllがあります。削除してよろしいですか?」といったニュアンスの質問が出てきます。

削除しないほうが安全なのは知っておりますが、
そもそも”使われていない”かどうかを、どうやって調べているのでしょうか?

レジストリあたりに、参照カウンタのようなものが記録されているのですか?

回答の条件
  • 1人2回まで
  • 登録:2010/09/28 16:49:01
  • 終了:2010/09/28 19:22:08

ベストアンサー

id:tikarrass No.2

tikarrass回答回数2ベストアンサー獲得回数12010/09/28 18:33:35

ポイント50pt

ある種のCOMコンポーネントは、レジストリにそのDLL等のIDを登録して、

他の実行ファイルからレジストリを介して参照されることがあります。


画像を拝見するに、システムのディレクトリ(c:\windows/system32)ではなく

アプリのインストール先に配置されたaxファイルだと思うので、

元々の設計上そのアプリ用に設計されたものであるため

共通使用される可能性はかなり低いが、

上記の仕組みで利用されるコンポーネントのため、その可能性がゼロではないということで

メッセージが出てくるのではないかと思います。

id:HISI

どうも有難う御座います。


>システムのディレクトリ(c:\windows/system32)ではなく・・・

なるほど

今回うまくdll 対象を見つけられず、axファイルのもので画像を撮ったのですが、

そういった判断基準の可能性が高いですね。



ちょっと調べてみましたところ

レジストリの

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs"

に、参照カウンタがあることがわかりました。


各種インストーラには「共有ファイル(SharedDLLs)」としてここに登録する機能があるようです。

参考 : http://dobon.net/vb/installer/


あと

"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\KnownDLLs"

に登録してある DLL も、共通として削除対象にしないのでしょう。インストールで入れ替わることは決してないと思いますが...

参考 : http://eternalwindows.jp/windevelop/dll/dll05.html

2010/09/28 19:21:38

その他の回答(1件)

id:ko8820 No.1

ko8820回答回数1221ベストアンサー獲得回数692010/09/28 17:15:05

ポイント24pt

DLL Toys (インポートチェッカー)

http://www2.lint.ne.jp/~lrc/fi_uninst.htm

このあたりのツールでDLLの使用を確認できます。

EXEファイルのインポート情報を調べているだけです。

実際にはすべてのEXEファイルを確認してるか不明ですし

すべてのEXEファイルを調べてもそれだけで、そのDLLを使用していないと

言う保障にはなりませんから、絶対に安全だとは言い切れないだけですね。

id:HISI

なるほど、そういうツールがあるのですね。


ただ

アンインストーラが、ディスク中のEXE(PE)ファイルを

全部スキャンしているしているようでもなさそうですし

(えらく時間がかかると思います)

インポート情報には共通使用されているdll

(msvcrt.dllやuser32.dllなど)もあるのに削除対象になりません。


どうやって判断しているのか知りたいと思います。

2010/09/28 18:00:46
id:tikarrass No.2

tikarrass回答回数2ベストアンサー獲得回数12010/09/28 18:33:35ここでベストアンサー

ポイント50pt

ある種のCOMコンポーネントは、レジストリにそのDLL等のIDを登録して、

他の実行ファイルからレジストリを介して参照されることがあります。


画像を拝見するに、システムのディレクトリ(c:\windows/system32)ではなく

アプリのインストール先に配置されたaxファイルだと思うので、

元々の設計上そのアプリ用に設計されたものであるため

共通使用される可能性はかなり低いが、

上記の仕組みで利用されるコンポーネントのため、その可能性がゼロではないということで

メッセージが出てくるのではないかと思います。

id:HISI

どうも有難う御座います。


>システムのディレクトリ(c:\windows/system32)ではなく・・・

なるほど

今回うまくdll 対象を見つけられず、axファイルのもので画像を撮ったのですが、

そういった判断基準の可能性が高いですね。



ちょっと調べてみましたところ

レジストリの

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs"

に、参照カウンタがあることがわかりました。


各種インストーラには「共有ファイル(SharedDLLs)」としてここに登録する機能があるようです。

参考 : http://dobon.net/vb/installer/


あと

"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\KnownDLLs"

に登録してある DLL も、共通として削除対象にしないのでしょう。インストールで入れ替わることは決してないと思いますが...

参考 : http://eternalwindows.jp/windevelop/dll/dll05.html

2010/09/28 19:21:38

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません