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