#defineSE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")#defineSE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")#defineSE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")#defineSE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")#defineSE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")#defineSE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")#defineSE_TCB_NAME TEXT("SeTcbPrivilege")#defineSE_SECURITY_NAME TEXT("SeSecurityPrivilege")#defineSE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")#defineSE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")#defineSE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")#defineSE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")#defineSE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")#defineSE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")#defineSE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")#defineSE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")#defineSE_BACKUP_NAME TEXT("SeBackupPrivilege")#defineSE_RESTORE_NAME TEXT("SeRestorePrivilege")#defineSE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")#defineSE_DEBUG_NAME TEXT("SeDebugPrivilege")#defineSE_AUDIT_NAME TEXT("SeAuditPrivilege")#defineSE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")#defineSE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")#defineSE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")#defineSE_UNDOCK_NAME TEXT("SeUndockPrivilege")#defineSE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege")#defineSE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege")#defineSE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege")BOOL EnablePrivilege(LPCTSTR lpszPrivilegeName,BOOL bEnable)
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
LUID luid;if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY|TOKEN_READ,&hToken))returnFALSE;if(!LookupPrivilegeValue(NULL, lpszPrivilegeName,&luid))returnTRUE;
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=(bEnable)?SE_PRIVILEGE_ENABLED :0;
AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL);
CloseHandle(hToken);return(GetLastError()==ERROR_SUCCESS);
}