web-dev-qa-db-ja.com

実行可能ファイルがロードするDLLを見つけるにはどうすればよいですか?

Windows実行可能ファイルがある場合、どのDLLがロードされるかをどのようにして見つけることができますか?

LoadLibraryのようなもので動的に読み込まれる可能性のあるものではなく、静的に読み込まれるものについてだけ話しています。

72
David Norman

これを行うユーティリティがあります。

過去には、VBに付属のMSツール(depends.exe)を使用しました(と思います)。
https://msdn.Microsoft.com/en-us/library/8kche8ah.aspx

これもあります:
http://dependencywalker.com/

そしておそらく他の人も。

31
gkrogers

dumpbin は、VC++に付属のツールです。

プログラムがインポートするDLLを確認するには:

  • Visual Studioを開きます
  • メニュー項目ツール| Visual Studioコマンドプロンプト
  • 実行可能ファイルを含むフォルダーにcd
  • dumpbin/dependents whatever.exe
Dump of file whatever.exe

File Type: EXECUTABLE IMAGE

  Image has the following dependencies:

    AIOUSB.DLL
    sqlite3.dll
    wxmsw293u_core_vc_custom.dll
    wxbase293u_vc_custom.dll
    KERNEL32.dll
    ole32.dll
    OLEAUT32.dll
    MSVCP90.dll
    MSVCR90.dll

インポートする関数(およびDLL)を確認するには、使用します

C:\> dumpbin /imports whatever.exe
49
Graeme Perrow

コマンドプロンプトを開き、以下のコマンドを入力します

tasklist/m/fi "imagename eq netbeans.exe"

代わりに、exeファイル名に関係なく、netbeans.exeと入力します。

13
LOKESH

Dependency Walker は、どの.dllをロードするかを決定するのに役立ちます。

10
David Segonds

コマンドプロンプトに移動し、tasklist /m、特定のプログラムで使用されるdllファイルのリストが表示されます。

10
Subek Shakya

Microsoft .Netのソリューション:

foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) 
{
    MessageBox.Show(a.Name); 
}
3
htc

progfrはシンプルで便利です:[ http://members.fortunecity.com/michaelmoser/tip11.htm]

1
anon

すべてのDLL依存関係を提供するNDependという便利なツールがあります。

1
FlySwat