Resposta original: outubro de 2008
Você também tem todo o " rundll32.exe shell32.dll" série:
(veja atualização abaixo)
rundll32.exe user.exe,**ExitWindows** [Desligamento rápido do Windows]
rundll32.exe user.exe,**ExitWindowsExec** [Reinicie o Windows]
rundll32.exe shell32.dll,SHExitWindowsEx n
onde nsignifica:
- 0 -
LOGOFF
- 1 -
SHUTDOWN
- 2 -
REBOOT
- 4 -
FORCE
- 8 -
POWEROFF
(pode ser combinado -> 6 = 2 + 4 FORCE REBOOT)
Atualização em abril de 2015 (mais de 6 anos depois):
1800 INFORMAÇÃO gentilmente aponta nos comentários :
Não use rundll32.exepara esse fim. Ele espera que a função que você passou na linha de comando tenha uma assinatura de método muito específica - ela não corresponde à assinatura do método ExitWindows.
Raymond CHEN escreveu:
A assinatura da função necessária para as funções chamadas por rundll32.exeé:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
Isso não impediu as pessoas de usarem rundll32para chamar funções aleatórias que não foram projetadas para serem chamadas por rundll32, como user32 LockWorkStationou user32 ExitWindowsEx.
(oops)
A assinatura da função real para ExitWindowsEx é:
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
E para deixar claro:
Rundll32 é uma sobra do Windows 95 e foi preterido desde pelo menos o Windows Vista, porque viola muitas diretrizes de engenharia modernas.