Hi,
Does anyone know how I could use the ExitWindowsEx function in Windows NT 4?
Any sample code would be great.
Thanks,
Manteau
Printable View
Hi,
Does anyone know how I could use the ExitWindowsEx function in Windows NT 4?
Any sample code would be great.
Thanks,
Manteau
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);
}