Código del programa de cierre del lenguaje C
Hay dos formas de implementar el apagado mediante lenguaje C:
1. Llame al comando de apagado de DOS a través de la función del sistema.
A través de
int system(char *cmd);
en stdlib.h, puede ejecutar el comando DOS cmd.
El comando de apagado en DOS es apagado -s, así que use
system("shutdown -s");
para lograr la operación de apagado.
2 El apagado se logra llamando a la función API proporcionada por Windows: void?shut_down_windows()
{
HANDLE?hToken;
TOKEN_PRIVILEGES?tkp;
//Obtener?un?token?para?este?proceso.
if?(!OpenProcessToken(GetCurrentProcess(),
?TOKEN_ADJUST_PRIVILEGES?|?TOKEN_QUERY,?amp;hToken))
return(?FALSE?);
//¿Obtener?el?LUID?para?el?apagado? privilegio.
LookupPrivilegeValue(NULL, ?SE_SHUTDOWN_NAME,
?amp; tkp.Privileges[0].Luid
tkp.PrivilegeCount?=?1); ;?//?one?privilege?to?set
tkp.Privileges[0].Attributes?=?SE_PRIVILEGE_ENABLED;
//¿Obtener?el?privilegio?de?apagado? para?este?proceso.
AjustarTokenPrivileges(hToken,?FALSE,?amp;tkp,?0,
?(PTOKEN_PRIVILEGES)NULL,?0);
if?(GetLastError()?!=?ERROR_SUCCESS)
return?FALSE;
//¿Apagar?el?sistema?y?forzar?todas?las?aplicaciones ?para?cerrar.
if?(!ExitWindowsEx(EWX_SHUTDOWN?|?EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM?|
SHTDN_REASON_MINOR_UPGRADE?|
SHTDN_REASON_FLAG_PLANNED))
retorno?FALSE;
retorno?TRUE;
}