Текущий архив: 2005.07.11;
Скачать: CL | DM;
Вниз
Как получить права отладчика? Найти похожие ветки
← →
GrayFace © (2005-05-10 16:01) [0]Как получить права на применение OpenProcess к системным процессам (типа WinLogon)?
← →
VMcL © (2005-05-10 16:10) [1]Как-то так, если не ошибаюсь:
function EnableTokenPrivilege(const ATokenHandle: THandle; const APrivilege: String;
const AEnable: Boolean): DWORD;
function InternalEnableTokenPrivilege: DWORD;
var
Luid: TLargeInteger;
Priv: TTokenPrivileges;
begin
if not LookupPrivilegeValue(nil, PChar(APrivilege), Luid) then
begin
Result := GetLastError;
Exit;
end;
FillChar(Priv, SizeOf(Priv), 0);
Priv.PrivilegeCount := 1;
if AEnable then
Priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Priv.Privileges[0].Luid := Luid;
if not AdjustTokenPrivileges(ATokenHandle, False, Priv, 0, TTokenPrivileges(nil^),
DWORD(nil^)) then
begin
Result := GetLastError;
Exit;
end;
Result := ERROR_SUCCESS;
end;
begin
Result := InternalEnableTokenPrivilege;
SetLastError(Result);
end;
function EnableTokenDebugPrivilege(const ATokenHandle: THandle; const AEnable: Boolean): DWORD;
const
DebugPrivilege = "SeDebugPrivilege";
begin
Result := EnableTokenPrivilege(ATokenHandle, DebugPrivilege, AEnable);
end;
function EnableProcessDebugPrivilege(const AProcessId: DWORD; const AEnable: Boolean): DWORD;
const
ProcessDesiredAccess = PROCESS_QUERY_INFORMATION;
TokenDesiredAccess = TOKEN_ADJUST_PRIVILEGES;
var
ProcessHandle, TokenHandle: THandle;
begin
ProcessHandle := OpenProcess(ProcessDesiredAccess, False, AProcessId);
if ProcessHandle = 0 then
begin
Result := GetLastError;
Exit;
end;
try
if not OpenProcessToken(ProcessHandle, TokenDesiredAccess, TokenHandle) then
begin
Result := GetLastError;
Exit;
end;
try
Result := EnableTokenDebugPrivilege(TokenHandle, AEnable);
finally
CloseHandle(TokenHandle);
end;
finally
CloseHandle(ProcessHandle);
end;
end;
← →
VMcL © (2005-05-10 16:11) [2]P.S. Юзать например так:
EnableProcessDebugPrivilege(GetCurrentProcessId);
← →
VMcL © (2005-05-10 16:11) [3]>>VMcL © (10.05.05 16:11) [2]
Сорри, вот так:EnableProcessDebugPrivilege(GetCurrentProcessId, True);
← →
GrayFace © (2005-05-12 20:01) [4]Спасибо. Попробую.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.025 c