AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Für svchost.exe(Dienst) den richtigen anmeldenamen erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

Für svchost.exe(Dienst) den richtigen anmeldenamen erhalten

Ein Thema von Metal_Snake2 · begonnen am 8. Aug 2006 · letzter Beitrag vom 22. Mai 2007
 
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#1

Für svchost.exe(Dienst) den richtigen anmeldenamen erhalten

  Alt 8. Aug 2006, 15:08
Guten tag!

Ich erhalte mit dieser Funktion für alle Prozesse den Domain und Benutzer- namen:

Delphi-Quellcode:
function GetUserAndDomain(ProcessId: DWORD):String;
var
  cbBuf : Cardinal;
  ptiUser : PTOKEN_USER;
  snu : SID_NAME_USE;
  ProcessHandle,hToken: THandle;
  UserSize, DomainSize: DWORD;
  bSuccess : Boolean;
  s,User,Domain : String;
begin
  ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId);
  if ProcessHandle <> 0 then
  begin
    //EnableProcessPrivilege(ProcessHandle, 'SeSecurityPrivilege', True);
    if OpenProcessToken(ProcessHandle, TOKEN_QUERY, hToken) then
    begin
    
      bSuccess := GetTokenInformation(hToken, TokenUser, nil, 0, cbBuf);
      ptiUser := nil;

      while (not bSuccess) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) do
      begin
        ReallocMem(ptiUser, cbBuf);
        bSuccess := GetTokenInformation(hToken, TokenUser, ptiUser, cbBuf, cbBuf);
      end;

      CloseHandle(hToken);

      if not bSuccess then
        Exit;

      UserSize := 0;
      DomainSize := 0;
      LookupAccountSid(nil, ptiUser.User.Sid, nil, UserSize, nil, DomainSize, snu);

      if (UserSize <> 0) and (DomainSize <> 0) then
      begin
        SetLength(User, UserSize);
        SetLength(Domain, DomainSize);
        if LookupAccountSid(nil, ptiUser.User.Sid, PChar(User), UserSize, PChar(Domain), DomainSize, snu) then
        begin
          User := StrPas(PChar(User));
          Domain := StrPas(PChar(Domain));
        end;
      end;

      if bSuccess then
      begin
        FreeMem(ptiUser);
      end;

    end;
    CloseHandle(ProcessHandle);
  end;
  s := Domain +'\' + User;
  result:= s;
end;
Ich habe auch die Privilegien 'SeSecurityPrivilege' und 'SeDebugPrivilege' aktiviert, jedoch
erhalte ich nicht die richtigen Anmelde/Benutzer- namen für den Dienst svchost.exe, welcher ja
5-8 instanzen hat und unter anderen Benutzernamen startet. Für svchost.exe erhalte ich nur den "SYSTEM" Benutzernamen.

Wie kann ich auch die anderen Benutzernamen wie "Nezwerkdienst"oder "Lokalerdienst" erhalten??

Danke für antworten.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz