Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

20.10.2003
Мироводин Дмитрий, mirovodin@mail.ru

{ **** UBPFD *********** by kladovka.net.ru ****
>> Установка/снятие Debug привелегии у текущего процесса

Функция устанавливает/снимает отладочные привелегии у 
текущего процесса (можно выбрать и другой, изменив 
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); // выключить 
Previous page:
Как вывести результат работы консоли в TMemo?
Top:
DRKB
Next page:
Читаем заголовок exe-файла