Я бы хотел получить список используемых DLL-файлов из самого приложения. Моя цель - сравнить список с жестко запрограммированным, чтобы узнать, не вложена ли какая-либо DLL. Я не могу найти примеров в Google.Как получить список используемых DLL?
ответ
Вы можете использовать PSAPI для этого. Необходимая функция: EnumProcessModules
. Есть sample code on MSDN.
Основной альтернативой является библиотека Tool Help. Это происходит следующим образом:
- Звоните
CreateToolhelp32Snapshot
. - Начать перечисление
Module32First
. - Неоднократно звоните
Module32Next
. - Когда вы закончите, вызовите
CloseHandle
, чтобы уничтожить моментальный снимок.
Лично я предпочитаю Инструмент Справка для этой задачи. Вот очень простой пример:
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, TlHelp32;
var
Handle: THandle;
ModuleEntry: TModuleEntry32;
begin
Handle := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0);
Win32Check(Handle <> INVALID_HANDLE_VALUE);
try
ModuleEntry.dwSize := Sizeof(ModuleEntry);
Win32Check(Module32First(Handle, ModuleEntry));
repeat
Writeln(ModuleEntry.szModule);
until not Module32Next(Handle, ModuleEntry);
finally
CloseHandle(Handle);
end;
Readln;
end.
Я думаю, что это должно быть 'Win32Check (Handle <> INVALID_HANDLE_VALUE);' вместо 'Win32Check (Handle <> 0);' – forsajt
@forsajt Большое спасибо. Ты прав. Я редактировал. –
Если вы хотите непрограммное решения, просто запустите приложение под Dependency Walker.
Он будет не только показывать статические зависимости, но также будет отслеживать и отслеживать динамическую загрузку модулей во время выполнения и сообщать вам, какой модуль называется LoadLibrary
.
@FreeConsulting AFAIR tdump не отслеживает ваш exe для динамических нагрузок, он просто делает статику. Это изменилось? –
Ах, извините, когда я вижу «Dependency Walker», я думаю о старшем средстве MS PSDK. –
Установите Джедай Code Library (http://jcl.sf.net)
Она располагает исключениями диалога, который включает в себя трассировку стеки, Windows/аппаратное обеспечение краткого и отчетность - список загруженных библиотек DLL и их версий. Вы можете копировать или вызывать эту часть, генерируя этот список, из него.
- 1. Получить список часто используемых программ
- 2. Как получить список используемых UDTF в SQLRPGLE
- 3. Получить список используемых конфигурационных файлов от Nose
- 4. Получить список библиотек, используемых в библиотеке
- 5. Журнальные версии всех используемых DLL
- 6. Получить список драгоценных камней, используемых проектом Bundler
- 7. Получить список используемых значений для некоторого свойства
- 8. Получить список функций для DLL
- 9. Как получить список функций, определенных в DLL?
- 10. Как получить список команд, используемых в сценарии оболочки?
- 11. Как получить список вызовов api, используемых в Application.apk?
- 12. XSLT: Как получить список всех используемых пространств имен
- 13. Как получить список переменных, используемых в шаблоне groovy
- 14. XACML - Как получить список политик, используемых в решении?
- 15. Как получить список встроенных функций, используемых в функции
- 16. как получить список всех тегов, используемых в определенном наборе flickr
- 17. Как получить список «наиболее часто используемых приложений» на Android
- 18. Как получить список пакетов, используемых в документе knitr .Rnw?
- 19. DLL, требующие регистрации, используемых в разных программах.
- 20. Visual C++: Местоположение сторонних DLL, используемых DLL плагином?
- 21. Список IP-адресов, используемых Twitterbot
- 22. DocumentDB: Список используемых разделов разделов
- 23. SSMS: Список часто используемых запросов
- 24. Список разделителей, используемых в sqoop
- 25. Получить список (вложенных) ключей, используемых в коллекции MongoDB
- 26. получить количество используемых каналов
- 27. sybase: получить список сохраненных процедур, используемых хранимой процедурой
- 28. получить список шрифта и размеров, используемых в DOCX
- 29. Список всех тегов, используемых в stackoverflow
- 30. Получить список имен, используемых в списке объектов Person
Вы можете использовать Process Explorer (http://technet.microsoft.com/de-de/sysinternals/bb896653.aspx). Он отображает все DLL как открытые файлы. – jpfollenius