Подтвердить что ты не робот

Как использовать Rundll32 для выполнения DLL-функции?

Используя документацию ShellExecute в качестве ссылки:

Я запускаю из командной строки следующее:

C:\>RUNDLL32.EXE SHELL32.DLL,ShellExecute handle,"open","C:\Documents and Settings\admin\Desktop\tmp",NULL,NULL,SW_SHOWNORMAL

Это приводит к ошибке исключения.

Я не знаю, что это значит:

HINSTANCE ShellExecute(
  __in_opt  HWND hwnd,
  __in_opt  LPCTSTR lpOperation,
  __in      LPCTSTR lpFile,
  __in_opt  LPCTSTR lpParameters,
  __in_opt  LPCTSTR lpDirectory,
  __in      INT nShowCmd
);

Но в описании упоминается дескриптор (HWND) и указатель на строку с нулевым завершением (LPCTSTR), но это очень запутанно.

Любая помощь будет принята с благодарностью. Я также хотел бы узнать больше, поэтому любые ссылки (книги, веб-ссылки и т.д.) Также были бы замечательными!

4b9b3361

Ответ 1

Rundll32 поддерживает только экспорт DLL-экспорта со следующей подписью:

void CALLBACK
  EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

Он не поддерживает запуск произвольных точек входа. Поскольку у ShellExecute нет этой подписи, очевидно, что плохие вещи произойдут.

INFO: интерфейс Windows Rundll и Rundll32 содержит дополнительную информацию о интерфейсе rundll32.

Если вы хотите сделать equivelent из ShellExecute из командной строки, просто используйте start:

C:\>start "C:\Documents and Settings\admin\Desktop\tmp"