Respuesta original: octubre de 2008
También tienes todos los " rundll32.exe shell32.dll" serie:
(ver actualización a continuación)
rundll32.exe user.exe,**ExitWindows** [Apagado rápido de Windows]
rundll32.exe user.exe,**ExitWindowsExec** [Reiniciar Windows]
rundll32.exe shell32.dll,SHExitWindowsEx n
donde nsignifica:
- 0 -
LOGOFF
- 1 -
SHUTDOWN
- 2 -
REBOOT
- 4 -
FORCE
- 8 -
POWEROFF
(se puede combinar -> 6 = 2 + 4 FORCE REBOOT)
Actualización de abril de 2015 (más de 6 años):
1800 INFORMACIÓN señala amablemente en los comentarios :
No lo use rundll32.exepara este propósito. Espera que la función que pasó en la línea de comando tenga una firma de método muy específica; no coincide con la firma del método de ExitWindows.
Raymond CHEN escribió:
La firma de la función requerida para las funciones llamadas por rundll32.exees:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
Eso no ha impedido que la gente use rundll32para llamar funciones aleatorias que no fueron diseñadas para ser llamadas por rundll32, como user32 LockWorkStationo user32 ExitWindowsEx.
(Uy)
La firma de función real para ExitWindowsEx es:
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
Y para hacerlo más claro como el cristal:
Rundll32 es un remanente de Windows 95, y ha quedado en desuso al menos desde Windows Vista porque viola muchas pautas modernas de ingeniería.