インストールされているプログラム、または特定のDLLファイルを使用しているプログラムを見つけるにはどうすればよいですか?


9

1つのサーバーのSYSTEM32ディレクトリにDLLファイルがありますが、実際に必要かどうかはわかりません。

グーグルはそれが通常何のために使われるかを私に言ったが、ソフトウェアはこのシステムにインストールされたことがない。それでも、サーバーにインストールされている他の製品の1つにファイルが含まれている可能性がある(したがって、presumabyが必要になる)可能性はあると考えています。

レジストリを介してファイルの名前を検索し、ファイルのメタデータで見つかったいくつかの文字列も検索しましたが、情報を得ることができませんでした。(ACMruキーは私の目を引くものでしたが、それが何のためにあるかを知るまで。)

他に何かできることはありますか?システム自体にDLLをインストールしたプログラムやDLLをインストールしたプログラム(ある場合)がDLLを使用するように指示するためですか?

注:ツールの提案は適切ですが、このシステムで追加のソフトウェアをインストールまたは実行することはありません。Server 2003の既定のインストールで利用できるすべてのものを使用する必要があります。

回答:


5

システムに配置された日付を確認し、システム内の他のファイルと比較して手掛かりを取得します。検索では、システム全体を日付で検索できます。

また、ここにファイルの名前を投稿すると、そのファイルに精通している一部のユーザーがIDを使用できるようになります。


ありがとう。別の質問でファイル名を投稿する場合があります。これは、DLLファイルに使用できる回答が得られるように、汎用的なものにしたかったのです。
Iszi

4

%SystemRoot%\ Installerフォルダー内の各.MSIファイルを調べる可能性があります。Windowsインストーラーによってインストールされたすべての(?)プログラムは、ここでMSIを追加して、後でアンインストールできるようにします。フォルダーには通常、大量のものが含まれています。無数のMSIパッケージの中からDLLを見つけたら、パッケージを明確に定義された名前にマッピングし直す必要があります。

スクリプトを使用してmsiファイルを逆コンパイルするには、このVBSツールhttp://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspxを使用するか、MSIDiff(これまで使ったことがない)というプログラムを試すことができます。http: //dennisbareis.com/msidiff.htm。もちろん、ツールをインストールする必要がないという制約を考慮すると、後者はその点では必要ありません。前者はcscriptがインストールされている場合です。

後者のツールは、適切なGUIDまたはMSIファイル名のレジストリを手動で検索することなく、パッケージ名のマッピングを行う場合があります。前のツールを変更して、参照するテーブル/列がわかっている場合はパッケージ名をダンプすることができます(私は知りません)。

VBSスクリプトは、データベースの観点からMSIファイルを検査するだけです。重要な作業は、database.OpenView( "SELECT FileName FROM File")で行われます。


これらすべてをインストールするのと同じように、これは非常にコストがかかりませんか?私のWindows 8では412アイテム、私のWindows 7では559アイテムです。また、ファイルがmsiインストールから
取得さ

はい、コストはかかりますが、システムの前後にスナップショットを撮る予見力を持たずに所有権を知りたい場合は、これによりある程度の洞察が得られます。実際の逆コンパイルおよび比較機能を自動化することもできます(結局のところ、これは単なるvbsスクリプトです)。すべてのパッケージがMSI経由でインストールされるわけではないので、これは完璧な解決策ではないことに同意しますが、幸運になるかもしれません。あなたが言ったように、それらがたくさんあるので、ファイルがそのように通過したかもしれないという可能性があります。
logicalscopeは

MSIファイルを逆コンパイル/解凍するのではなく、MSIファイルの中だけを見ることができるツールがあるのでしょうか。
とにかく

トム、私はこのvbsがデータベースビューからMSIを単に検査するだけだと確信しています。MSIは単にdbです。このツールはSQLを使用して、適切なテーブルからファイル名を抽出します。それ自体は「逆コンパイル」しないので、投稿でこれを指定する必要がありました。改定します。
logicalscope

1

Process Monitorがこれを行います。DLLの名前でフィルターをかけるだけで、プログラムがDLLをロードしようとすると、言及したDLLを探している、またはアクセスしているプロセスを示すエントリが表示されます。

また、起動時にそれをロードするプログラムとサービスをキャッチするために必要な起動ログ(メニューで起動ログを有​​効にしてから、再起動してプロセスモニターを再度開く)を実行する必要もあります。


非アクティブなプログラムについてはどうですか?コンピューター上のすべての疑わしいプログラムを開いて、Process Monitorで監視する必要があるようです。
Iszi

@Iszi:チャットで述べたように、それらまたはそのインストーラの列挙には長い時間がかかります。前述のようにパッシブに監視するか、Process Explorerでアクティブに監視します。または、言及したmusic2myearのように検索します。これはSearch Everythingで簡単に実行できます。
Tamara Wijsman 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.