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