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 n
significa:
- 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.exe
para 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 rundll32
para chamar funções aleatórias que não foram projetadas para serem chamadas por rundll32
, como user32 LockWorkStation
ou 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.