Rundll32.exe не работает должным образом при попытке вызвать функцию в пользовательской DLL. ⇐ C++
-
Anonymous
Rundll32.exe не работает должным образом при попытке вызвать функцию в пользовательской DLL.
Я учусь писать на C++, чтобы лучше понять, как работает DLL и как функции вызываются из DLL. Я пытаюсь запустить calc.exe из моей DLL, используя rundll32.exe. В моем коде (ниже) при выполнении rundll32.exe с моей скомпилированной DLL в качестве аргумента я ожидаю, что spwncalc() будет вызван из DLLMain()< /code> (независимо от того, какую функцию/порядковый номер экспорта я передаю через rundll32.exe) и calc.exe для запуска. Я также пытался вызвать функцию spwncalc() посредством выполнения rundll32.exe, но не могу заставить calc.exe выполнить выполнить.
#include недействительный spwncalc() { WinExec("C:\\Windows\\System32\\calc.exe", 1); } BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ переключатель (dwReason) { случай DLL_PROCESS_ATTACH: spwnкальк(); перерыв; случай DLL_PROCESS_DETACH: перерыв; случай DLL_THREAD_ATTACH: перерыв; случай DLL_THREAD_DETACH: перерыв; } вернуть ИСТИНА; } Как я могу изменить свой код, чтобы при запуске rundll32.execalc_spwn.dll,spwncalc он выполнял мою функцию? Кроме того, есть ли способ заставить его загружаться, когда dll загружается через rundll32.exe?
Я учусь писать на C++, чтобы лучше понять, как работает DLL и как функции вызываются из DLL. Я пытаюсь запустить calc.exe из моей DLL, используя rundll32.exe. В моем коде (ниже) при выполнении rundll32.exe с моей скомпилированной DLL в качестве аргумента я ожидаю, что spwncalc() будет вызван из DLLMain()< /code> (независимо от того, какую функцию/порядковый номер экспорта я передаю через rundll32.exe) и calc.exe для запуска. Я также пытался вызвать функцию spwncalc() посредством выполнения rundll32.exe, но не могу заставить calc.exe выполнить выполнить.
#include недействительный spwncalc() { WinExec("C:\\Windows\\System32\\calc.exe", 1); } BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ переключатель (dwReason) { случай DLL_PROCESS_ATTACH: spwnкальк(); перерыв; случай DLL_PROCESS_DETACH: перерыв; случай DLL_THREAD_ATTACH: перерыв; случай DLL_THREAD_DETACH: перерыв; } вернуть ИСТИНА; } Как я могу изменить свой код, чтобы при запуске rundll32.execalc_spwn.dll,spwncalc он выполнял мою функцию? Кроме того, есть ли способ заставить его загружаться, когда dll загружается через rundll32.exe?
Мобильная версия