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

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
Antwort Antwort
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, 16: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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 8. Aug 2006, 16:23
SYSTEM ist ja auch richtig, denn das sind die Host-Anwendungen für die Dienste und diese laufen nun mal, wenn nicht anders angegeben unter dem Systemkonto.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Metal_Snake2

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

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 8. Aug 2006, 17:17
villeicht wird es an hand eines screenshots vom Process Explorer deutlicher:

Bild

naja wie gesagt ich erhalte halt nicht die benutzernamen welche mit einem Pfeil markiert sind.
Wie kann ich die erhalten, muß ich erst in der Registry durchstöbern?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 8. Aug 2006, 20:12
Bitte sei so gut und füge das Bild als Anhang an. Dafür gibt es dieses Feature.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Metal_Snake2

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

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 9. Aug 2006, 15:31
Hat keiner ne idee?
Mir gehts einfach darum warum ich nicht die richtigen dienst-anmeldenamen erhalte.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 20. Mai 2007, 13:49
Hallo zusammen,

ich stehe jetzt vor dem gleichen Problem. Hat jemand dafür eine Lösung ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
20. Mai 2007, 17:09
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
Das passt hier wohl besser hin.
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: Für svchost.exe(Dienst) den richtigen anmeldenamen erhal

  Alt 22. Mai 2007, 20:47
Gibt es denn wirklich keine Möglichkeit den Prozessen svchost.exe und den anderen die Usernamen Lokaler Dienst oder Netzwerkdienst zuzuordnen ?

Edit: Ich weiß, das Lokaler Dienst und Netzwerkdienst keine Usernamen sind.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz