В принципе и так все понятно - задаешь название привилегии и, если это возможно, система их тебе дает.
Code: |
{ **** UBPFD *************** >> Получение дополнительных привилегий под НТ
В принципе и так все понятно - задаеш название привилегии и если это возможно, то система их тебе дает
Зависимости: uses Windows, SysUtils; Автор: Денис, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Lviv Copyright: by LiquidStorm, HomeSoftStudios(tm) aka Denis L. ********************************************** }
unit NTPrivelegsU; //////////////////////////////////////////////////////////////////////// // // // NT Defined Privileges // // // ////////////////////////////////////////////////////////////////////////
interface uses Windows, SysUtils;
const SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege'; const SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege'; const SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege'; const SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege'; const SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege'; const SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege'; const SE_TCB_NAME = 'SeTcbPrivilege'; const SE_SECURITY_NAME = 'SeSecurityPrivilege'; const SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege'; const SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege'; const SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege'; const SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege'; const SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege'; const SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege'; const SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege'; const SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege'; const SE_BACKUP_NAME = 'SeBackupPrivilege'; const SE_RESTORE_NAME = 'SeRestorePrivilege'; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; const SE_DEBUG_NAME = 'SeDebugPrivilege'; const SE_AUDIT_NAME = 'SeAuditPrivilege'; const SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege'; const SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege'; const SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
function AdjustPriviliges(const PrivelegStr: String) : Bool; forward;
implementation
function AdjustPriviliges(const PrivelegStr: String) : Bool; var hTok : THandle; tp : TTokenPrivileges; begin Result := False; // Get the current process token handle so we can get privilege. if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hTok) then try // Get the LUID for privilege. if LookupPrivilegeValue(nil,PChar(PrivelegStr), tp.Privileges[0].Luid) then begin tp.PrivilegeCount := 1; // one privilege to set tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; // Get privilege for this process. Result := AdjustTokenPrivileges(hTok, False, tp, 0, PTokenPrivileges(nil)^, PDWord(nil)^) end finally // Cannot test the return value of AdjustTokenPrivileges. if (GetLastError <> ERROR_SUCCESS) then raise Exception.Create('AdjustTokenPrivileges enable failed'); CloseHandle(hTok) end else raise Exception.Create('OpenProcessToken failed'); end;
end. |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!