Shutdown...?

Started by
10 comments, last by sathenzar 20 years, 1 month ago
Oops, forgot the actual privilege we want to enable.
Try this:
HANDLE token;OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token );LUID luid;LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &luid );  TOKEN_PRIVILEGES p;p.PrivilegeCount = 1;p.Privileges[0].Luid = luid;p.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges( token, false, &p, 0, NULL, 0 );CloseHandle( token );ExitWindowsEx(EWX_POWEROFF, NULL);


And if it doesn''t work check the return values.
Advertisement
you''re still not setting the proper privileges. The following code from msdn should get you where you want to be.

HANDLE hToken; TOKEN_PRIVILEGES tkp;  // Get a token for this process.  if (!OpenProcessToken(GetCurrentProcess(),         TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))     error("OpenProcessToken");  // Get the LUID for the shutdown privilege.  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)     error("AdjustTokenPrivileges");  // Shut down the system and force all applications to close.  if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))     error("ExitWindowsEx");

This topic is closed to new replies.

Advertisement