Установка/снятие Debug привелегии у текущего процесса

Установка/снятие Debug привелегии у текущего процесса

{ **** UBPFD *********** by kladovka.net.ru ****
>>
Функция устанавливает/снимает отладочные привелегии у
текущего процесса (можно выбрать и другой, изменив
GetCurrentProcess на нужный Handle ).
Актуально для совместного использования с ToolHelp - т.е. получения информации о процессах.
Зависимости: Windows
Автор: Мироводин Дмитрий (адаптация), mirovodin@mail.ru
Copyright: 2000 Jeffrey Richter
Дата: 20 октября 2003 г.
********************************************** }

Function EnableDebugPrivilege(Const Value: Boolean): Boolean;
Const
 SE_DEBUG_NAME = 'SeDebugPrivilege';
Var
 hToken : THandle;
 tp : TOKEN_PRIVILEGES;
 d : DWORD;
Begin
 Result := False;
 If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) Then
  Begin
  tp.PrivilegeCount := 1;
  LookupPrivilegeValue(Nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
  If Value Then
  tp.Privileges[0].Attributes := $00000002
  Else
  tp.Privileges[0].Attributes := $80000000;
  AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), Nil, d);
  If GetLastError = ERROR_SUCCESS Then
  Begin
  Result := True;
  End;
  CloseHandle(hToken);
  End;
End;

Пример использования:

// После этого можно смотреть информация о таких системных модулях как:

//winlogon.exe и servises.exe и д.р.

EnableDebugPrivilege(True); // вкрючить

EnableDebugPrivilege(False); // выключить

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...