2010-09-13 36 views
9

¿Cómo puedo reiniciar en C++? ¿Hay alguna disposición en WinSDK? ¿Qué tipo de derechos debería tener mi programa (proceso) para hacerlo?Cómo reiniciar mediante programación?

+0

No sugiero que hagas esto. El usuario probablemente lo odiaría si el sistema se reinicia sin que ellos mismos lo hagan. –

+0

Preguntaré al usuario antes de hacerlo (guarde sus cosas, bla, bla ...) ... – lalli

Respuesta

12

Existe la ExitWindowsEx Function que puede hacer esto. Debe pasar el indicador EWX_REBOOT (0x00000002) para reiniciar el sistema.

Nota importante aquí (cita de MSDN):

La función ExitWindowsEx vuelve tan pronto como se ha iniciado el proceso de apagado. El apagado o cierre de sesión se realiza de forma asincrónica. La función está diseñada para detener todos los procesos en la sesión de inicio de sesión de la persona que llama. Por lo tanto, si no es el usuario interactivo, la función puede tener éxito sin cerrar realmente la computadora. Si no es el usuario interactivo, use la función InitiateSystemShutdown o InitiateSystemShutdownEx.

Puede elegir entre la función adecuada según su situación.

+0

Gracias, voy a continuar con esto. Pero me confunden los tokens de acceso y todo, ¿podría sugerir algún enlace para analizarlo? – lalli

5

Supongo que tiene un muy buen caso para querer reiniciar una PC que puede estar ejecutando muchas otras aplicaciones.

Parece que está buscando InitiateShutdown(), pasando SHUTDOWN_RESTART en dwShutdownFlags.

Cuestiones relacionadas