Оригинальный ответ: октябрь 2008 г.
Вы также получили все " rundll32.exe shell32.dll
" серия:
(см. обновление ниже)
-
rundll32.exe user.exe,**ExitWindows**
[Быстрое завершение работы Windows] rundll32.exe user.exe,**ExitWindowsExec**
[Перезагрузка Windows]
rundll32.exe shell32.dll,SHExitWindowsEx n
где n
означает:
- 0 -
LOGOFF
- 1 -
SHUTDOWN
- 2 -
REBOOT
- 4 -
FORCE
- 8 -
POWEROFF
(можно комбинировать -> 6 = 2 + 4 FORCE REBOOT
)
Обновление апреля 2015 года (6+ лет спустя):
1800 ИНФОРМАЦИЯ любезно указывает в комментариях :
Не используйте rundll32.exe
для этой цели. Он ожидает, что функция, которую вы передали в командной строке, имеет очень специфическую подпись метода - она не соответствует сигнатуре метода ExitWindows
.
Raymond CHEN писал (а):
Функциональная подпись, требуемая для функций, называемых rundll32.exe
:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
Это не помешало людям использовать rundll32
для вызова случайных функций, которые не были рассчитаны на rundll32
, например user32 LockWorkStation
или user32 ExitWindowsEx
.
(Ой)
Фактической сигнатурой функции для ExitWindowsEx является:
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
И сделать его кристально чистым:
Rundll32
является остатком от Windows 95, и он устарел с по крайней мере Windows Vista, потому что он нарушает множество современных технических руководств.