Содержание материала

В принципе и так все понятно - задаешь название привилегии и, если это возможно, система их тебе дает.

 

 

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.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить