人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windowsでソフトウエアをアンインストールする際に
「使われていないdllがあります。削除してよろしいですか?」といったニュアンスの質問が出てきます。

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

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

1285660139
●拡大する

●質問者: pkb_wn
●カテゴリ:コンピュータ
✍キーワード:DLL Windows なのは アンインストール カウンタ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ko8820
●24ポイント

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

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

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

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

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

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

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

◎質問者からの返答

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


ただ

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

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

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

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

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


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


2 ● tikarrass
●50ポイント ベストアンサー

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

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


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

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

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

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

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

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

◎質問者からの返答

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


>システムのディレクトリ(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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ