priorytet

Odpowiedz Nowy wątek
2004-10-06 21:08

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

Mam taki problem:
Nie moge zmienic priorytetu np svchost z poziomu mojego programu.
Wiem, ze sie da...

Jedyna rzecza, do ktorej sam doszedlem jest to, ze musze uzyc AdjustTokenPriliveges - tak to robi taskmgr.
Tylko jak tego uzyc [sciana]

Dzięki z góry.
Cimak.

Pozostało 580 znaków

none
2004-10-07 12:35
none
0

"Dzieki za pomoc" :-/

Sam znalazlem:

uses WinTypes;

function SetPrivilege(aPrivilegeName: string; aEnabled: boolean): boolean;
var
  TP : TTokenPrivileges;
  TPPrev : TTokenPrivileges;
  Token : THandle;
  dwRetLen : DWord;
begin
  Result := False;
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
  TP.PrivilegeCount := 1;
  if (LookupPrivilegeValue(nil, PChar(aPrivilegeName), TP.Privileges[0].LUID)) then begin
    if (aEnabled) then
      TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
    else
      TP.Privileges[0].Attributes := 0;
    dwRetLen := 0;
    Result := WinTypes.AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen);
  end;
  CloseHandle(Token);
end;

procedure SetNormalPriority(ProcessID:Integer);
var
 ProcessHandle: THandle;
begin
//STANDARD_RIGHTS_REQUIRED or PROCESS_TERMINATE
SetPrivilege('SeDebugPrivilege', True);
 ProcessHandle := OpenProcess(STANDARD_RIGHTS_REQUIRED or PROCESS_SET_INFORMATION, false, ProcessID);
 SetPriorityClass(ProcessHandle, NORMAL_PRIORITY_CLASS);
 CloseHandle(ProcessHandle);
SetPrivilege('SeDebugPrivilege', False);
end;

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0