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

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

01.01.2007
{ **** 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); // выключить