Windows実行可能ファイルがある場合、どのDLLがロードされるかをどのようにして見つけることができますか?
LoadLibraryのようなもので動的に読み込まれる可能性のあるものではなく、静的に読み込まれるものについてだけ話しています。
これを行うユーティリティがあります。
過去には、VBに付属のMSツール(depends.exe)を使用しました(と思います)。
https://msdn.Microsoft.com/en-us/library/8kche8ah.aspx
これもあります:
http://dependencywalker.com/
そしておそらく他の人も。
dumpbin は、VC++に付属のツールです。
プログラムがインポートするDLLを確認するには:
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
コマンドプロンプトを開き、以下のコマンドを入力します
tasklist/m/fi "imagename eq netbeans.exe"
代わりに、exeファイル名に関係なく、netbeans.exeと入力します。
Dependency Walker は、どの.dllをロードするかを決定するのに役立ちます。
コマンドプロンプトに移動し、tasklist /m
、特定のプログラムで使用されるdllファイルのリストが表示されます。
Microsoft .Netのソリューション:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}
progfrはシンプルで便利です:[ http://members.fortunecity.com/michaelmoser/tip11.htm]
すべてのDLL依存関係を提供するNDependという便利なツールがあります。