Manteau
May 19th, 1999, 06:56 AM
Hi,
Does anyone know how I could use the ExitWindowsEx function in Windows NT 4?
Any sample code would be great.
Thanks,
Manteau
Lothar Haensler
May 19th, 1999, 08:22 AM
MSDN article Q161136 has sample code. It's VB, but it's easy to adopt.
void ForceWindowsReboot()
{
CWatchDogApp* app = (CWatchDogApp*) AfxGetApp();
app->WriteEventLogMessage(EVMSG_APPLICATION_REBOOT);
Sleep(1000);
HANDLE hToken;
TOKEN_PRIVILEGES tkp; // Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
return;
// Shut down the system and force all applications to close.
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
}