Как узнать, какие библиотеки DLL будет загружаться исполняемый файл?
Если у меня есть исполняемый файл Windows, как я могу узнать, какие DLL он будет загружать?
Я просто говорю о том, какие из них будут загружаться статически, а не те, которые он может загружать динамически с чем-то вроде LoadLibrary.
8 ответов:
есть утилиты, которые сделают это для вас.
в прошлом я использовал инструмент MS (зависит.exe) который пришел с (я думаю) VB.:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspxи это тоже:
http://dependencywalker.com/и, наверное, другие.
dumpbin - это инструмент, который поставляется с VC++.
чтобы увидеть, какие библиотеки DLL, программа будет импортировать:
- Открыть Visual Studio
- пункт меню Сервис / Командная строка Visual Studio
- cd в папку, содержащую исполняемый файл
- dumpbin / иждивенцы все, что угодно.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
Откройте командную строку и введите следующую команду
tasklist /m / fi "imagename eq netbeans.EXE-файл"
введите вместо netbeans.exe независимо от имени вашего имени exe-файла.
просто перейдите в командную строку и введите
tasklist /m
вы увидите список DLL файлов, используемые программы.
Dependency Walker может помочь вам определить, какие .dll будет загружен.
решение для Microsoft .Net:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) { MessageBox.Show(a.Name); }
progfr прост и полезен: [http://members.fortunecity.com/michaelmoser/tip11.htm]