Piccolo post per una funzione che spegne o riavvia il pc su Windows in c++.
La funzione viene chiamata con il parametro false se si vuole spegnere il pc, con true se invece si vuole riavviare, e ritorna false nel caso in cui per qualche motivo la procedura di spegnimento non sia andata in porto (per es. qualche processo ha negato lo shutdown).

Shut Down

Per spegnere il pc basta quindi invocare la funzione nel seguente modo:

if (!ShutDown(false))
{
	// spegnimento non riuscito
}

Parte del codice sorgente รจ di seguito:

HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// prendo il token di questo processo
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
// prendo i privilegi di shutdown
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;	// devo settare 1 privilegio
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// setto i privilegi
AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
…
// spengo il sistema e forzo tutte le applicazioni a chiudersi
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCEIFHUNG,
		SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
		SHTDN_REASON_MINOR_UPGRADE |
		SHTDN_REASON_FLAG_PLANNED);

Il codice sorgente completo della funzione invece si trova di seguito:

Download [download#13#nohits]. Downloads: [download#13#hits]


Se sei interessato a questo post, potresti anche provare a leggere:

    No related posts