Оригинальный ответ: октябрь 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
.
Раймонд ЧЭН написал:
Подпись функции, требуемая для функций, вызываемых 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, потому что он нарушает многие современные технические рекомендации.