1 BOOL SetPrivilege( HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege ) 2 { 3 TOKEN_PRIVILEGES tkp; 4 5 if ( LookupPrivilegeValue( NULL, lpszPrivilege, &tkp.Privileges[0].Luid ) ) 6 { 7 m_tkp.PrivilegeCount = 1; 8 m_tkp.Privileges[0].Attributes = ( bEnablePrivilege ? SE_PRIVILEGE_ENABLED : 0 ); 9 if ( AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, NULL, NULL ) && GetLastError() == ERROR_SUCCESS ) 10 { 11 return TRUE; 12 } 13 } 14 15 return FALSE; 16 } 17 18 int main() 19 { 20 HANDLE hToken; 21 22 if ( OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) 23 { 24 SetPrivilege( hToken, SE_SHUTDOWN_NAME, TRUE ); 25 SetPrivilege( hToken, SE_SHUTDOWN_NAME, FALSE ); 26 CloseHandle( hToken ); 27 } 28 29 return 0; 30 }
时间: 2024-10-11 05:26:07