Можно ли загрузить собственную (C++) DLL в качестве исполняемого файла? предпочтительнее прямо из памяти, не создавая EXE на жестком диске или что-то подобное?Запуск DLL в качестве exe
ответ
Поиск rundll32.exe
. Но вам лучше знать, что вы делаете. Я не уверен, честно.
Вы можете использовать вызов WinAPI LoadLibrary
для загрузки DLL.
Что конкретно это означало бы? Например, какую точку входа он использовал бы в DLL?
Единственный способ, с помощью которого это могло бы работать, было бы, если бы DLL была специально написана для его разрешения. И если это так, то не совсем понятно, почему вы не просто создавали исполняемый файл вместо DLL.
Дело в том, что заглушка RunDLL32.exe. Он предназначен для выполнения функции из DLL with a specific signature в качестве точки входа. Если DLL не была специально разработана для соответствия этой сигнатуре, то things don't go well. Если вам нужна функция , вам может потребоваться сопоставить подпись функции, требуемую RunDLL32.exe, и использовать ее для «выполнения» вашей DLL.
Я пишу эту DLL, поэтому она будет написана, чтобы это разрешить. Мне нужно обрабатывать как платформы x64, так и x86, но я не хочу предоставлять 2 версии (что я делаю - объяснил в комментарии к моему вопросу) :) – Idov
@Idov: Стандартный шаблон состоит из двух версий. Если это отладчик, он написан для разработчиков. Я думаю, им удастся понять разницу между платформами x86 и x64 и успешно манипулировать двумя разными исполняемыми файлами. Вы делаете это более сложным, чем нужно. –
Microsoft предоставляет Rundll32.exe
, который может использоваться для выполнения функций DLL, которые были явно закодированы для поддержки этого использования.
- 1. Запуск main() .exe в качестве части .dll
- 2. Запуск exe, преобразованного в dll из другого exe
- 3. Запуск IKVM exe в качестве службы Windows
- 4. Запуск .exe с ++ DLL Visual C 2005
- 5. Запуск DLL/EXE-программы из Windows-службы в Windows 7
- 6. Запуск exe из другого exe
- 7. Встраивается * .exe в dll
- 8. Вставить DLL в Exe
- 9. Запуск exe в качестве текущего домена пользователя в Vista
- 10. Запуск .EXE в Node.JS
- 11. WPF. Встраивать DLL в EXE
- 12. Запуск exe при запуске системы
- 13. Запуск exe с использованием Java в качестве администратора
- 14. Запуск exe из perl с несколькими аргументами в качестве переменных
- 15. Visual Studio C++ 3rd Party dll предотвращает запуск .exe
- 16. Запуск exe в веб-приложении
- 17. Передача объекта из dll в exe
- 18. Запуск .exe без копирования .dlls
- 19. Преобразование .exe в инъекционную Dll
- 20. инъекции dll в exe-файл
- 21. Dll и exe в asp.net?
- 22. Запуск DLL-процесса не работает
- 23. EXE и DLL зависимости - Когда перекомпилировать EXE?
- 24. Запуск приложения в DLL
- 25. Запуск .exe из C++
- 26. Запуск exe из C#
- 27. Запуск exe после установки
- 28. EXE Запуск с сервера
- 29. Запуск EXE с Java
- 30. Запуск exe от Procrun
Зачем вам это нужно? – rerun
Что вы пытаетесь достичь здесь? – ChrisF
Я пишу отладчик в C++, который может отлаживать только его собственный вид. x64 может отлаживать только x64 и x86 - только x86. Вместо того, чтобы предоставлять 2 отдельных exe, по одному для каждого platfrom, я думал проверить, какая версия нужна для debuggee, а затем «создать» ее обработку exe. – Idov