Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

XP: OpenProcessToken bei NETZWERKDIENST: Zugriff verweigert

  Alt 25. Sep 2009, 20:48
Hey,

ich habe ein seltsames Problem. Ich versuche anhand der Prozess Token den Benutzernamen herauszufinden. Für SYSTEM Prozesse und Prozesse, die von lokalen Benutzern gestartet wurden, funktioniert dies wunderbar.
Bei allen Prozessen von NETZWERKDIENST oder LOKALER DIENST schlägt OpenProcessToken() allerdings mit Fehlercode 5 (Zugriff verweigert) fehl.

Debug Privilegien habe ich mir mit folgendem Code geholt:
Delphi-Quellcode:
function EnableDebugPrivilege: Boolean;
var
  hToken: THandle;
  TP: TTokenPrivileges;
begin
  if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then
  begin
    try
      TP.PrivilegeCount := 1;
      if LookupPrivilegeValue(nil, 'SeDebugPrivilege',
        TP.Privileges[0].Luid) then
      begin
        TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
        Result := AdjustTokenPrivileges(hToken, false, TP, SizeOf(TP), nil,
          DWord(nil^));
      end;
    finally
      CloseHandle(hToken);
    end;
  end;
end;
Den Prozess öffne ich mit:
Delphi-Quellcode:
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
  PROCESS_VM_READ, false, Process32.th32ProcessID);
Das Token öffne ich mit:
if OpenProcessToken(hProcess, TOKEN_QUERY, hToken) then Hoffe jemand weiß Rat. Unter Win7 können übrigens alle Benutzernamen wunderbar abgefragt werden.

Viele Grüße
Zacherl
  Mit Zitat antworten Zitat