HANDLE token;
TOKEN_PRIVILEGES tokenpriv;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokenpriv.Privileges[0].Luid);
tokenpriv.PrivilegeCount=1;
tokenpriv.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(token, false, &tokenpriv, 0, (PTOKEN_PRIVILEGES)NULL, 0);