Perché appoggiarsi ad applicazioni esterne (nello specifico shutdown.exe) quando si possono usare le apposite API?
codice:#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HANDLE hToken; TOKEN_PRIVILEGES tkp; //Attende 30 secondi Sleep(30000); //Ottiene un token per il processo if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return 1; //Ottiene il LUID per il privilegio SE_SHUTDOWN_NAME (necessario per spegnere il PC) LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; //Ottiene il privilegio SE_SHUTDOWN_NAME AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return 2; //Arresta il sistema if (!ExitWindowsEx(EWX_SHUTDOWN, 0)) return 3; return 0; }

Rispondi quotando