AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi PID eines 64Bit-Services unter 32Bit-Programm?
Thema durchsuchen
Ansicht
Themen-Optionen

PID eines 64Bit-Services unter 32Bit-Programm?

Ein Thema von Mattze · begonnen am 21. Nov 2016 · letzter Beitrag vom 27. Nov 2016
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 18:02
Für manche (wenige) Services kriege ich die PID ohne Probleme
(mittels EnumServicesStatusEx)
Bei vielen Services kriege ich aber keine PID.
Ich nehme an, dass das 64Bit-Dienste sind.
Wie bekomme ich da aus einem 32Bit-Programm die PID? Geht das überhaupt?
Die PID ist eine Prozeß -ID. Dienste sind jedoch m.E. nicht mit dieser gleichzusetzen. Auf meinem Windows XP z.B. ist fünfmal die svchost.exe gestartet worden, also gibt es sie unter fünf verschiedenen IDs. Es sind jedoch wesentlich mehr Dienste, die auf diese Datei zurückgehen, gestartet worden.

Geändert von Delphi-Laie (21. Nov 2016 um 20:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.508 Beiträge
 
Delphi 12 Athens
 
#2

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 19:06
Ja, man könnte in einem Prozess mehrere Dienste oder den Selben mehrmals starten (wenn ich das richtig verstanden hatte und natürlich alle unter unterschiedlichen "Dienst-Namen").
Nie ausprobiert, aber ich hätte vermutet, dass sie dann alle die selbe PID des Prozesses anzeigen.

[edit]
Jupp, die gleiche PID.

UserMode-Treiber und KernelMode-Treiber?
Werden die im KernelMode da auch aufgelistet? [edit2] SERVICE_KERNEL_DRIVER sagt ja.
Die werden ja außerhalb des UserMode-Systems ausgeführt und dort gibt es "diese" PID eventuell nicht.
Angehängte Grafiken
Dateityp: png ServicePID.png (28,1 KB, 16x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Nov 2016 um 19:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 19:12
MSDN-Library durchsuchenEnumServicesStatusEx enumeriert ja alle Dienste. Darunter sind aber auch welche, die zur Zeit nicht gestartet sind und somit keine PID haben.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#4

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 19:22
Hallo und, nun ja,
alles richtig.
Manche nennen die Dinger auch SID.
Andere noch andersch...
Bleibt die Frage, warum die Spalte im Taskmanager eigentlich "PID" heißt...
(Unter WMI - W32_Service - heißt das sogar ausgeschrieben "ProcessID"!)

Aber, darüber will ich nicht diskutieren,
Es geht nicht um den Namen, man kann auch "Apfel" dazu sagen, sondern darum, wozu und wie man es nutzen kann. Und besonders, wie man es kriegt.

Und da sind PID und SID doch ziemlich ähnlich.
Genau weiß ich keinen Unterschied.

Gruß
Mattze

PS:
>>EnumServicesStatusEx enumeriert ja alle Dienste. Darunter sind aber auch welche, die zur Zeit nicht gestartet sind und somit keine PID haben.<<
Oder bereits beendet sind. Richtig. Die meine ich natürlich nicht!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.508 Beiträge
 
Delphi 12 Athens
 
#5

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 19:29
Zitat von Mattze:
Also Service-Status: "wird ausgeführt", PID wird mit -1.


Es steht zwar nichts im MSDN, aber ich hätte das jetzt auch nach "bekanntem" Muster eingestufft.
0 = nicht vorhanden (inaktiv)
-1 = Fehler (z.B. keine Rechte)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#6

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 21. Nov 2016, 20:06
Hallo himitsu,

das wäre ja nun schon wieder recht interessant.
Die -1 steht nämlich tatsächlich nur bei (einigen) Geräte- oder Dateitreibern.
(Jedenfalls sehe ich im Moment nix anderes.)

Mal sehen, ob zu ermitteln ist, was da als Rechte vielleicht fehlt und wie man sich die zuschustern kann...

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 22. Nov 2016, 00:27
Ach als Administrator ist man nicht all mächtig. Der Benutzer System hat noch höhere Rechte.

Aber wo für brauchst du die PIDs von den ganzen Diensten? Schreibst du ein System-Tool?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 22. Nov 2016, 07:42
Hallo Luckie,

"Systemtool" ist vielleicht etwas hoch gegriffen.
Ich schreibe ein "SysInfo" und das aus reinem Interesse.
Ich will einfach mal gucken, wie weit ich komme.
(Mit Eurer und Netzhilfe usw.
Macht schon verdammt viel...)

Und da gehören eben auch die PIDs dazu.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 22. Nov 2016, 09:11
Schau dir mal himitsus Edit an:
UserMode-Treiber und KernelMode-Treiber?
Werden die im KernelMode da auch aufgelistet? [edit2] SERVICE_KERNEL_DRIVER sagt ja.
Die werden ja außerhalb des UserMode-Systems ausgeführt und dort gibt es "diese" PID eventuell nicht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#10

AW: PID eines 64Bit-Services unter 32Bit-Programm?

  Alt 27. Nov 2016, 22:30
Die PID ist eine Prozeß -ID. Dienste sind jedoch m.E. nicht mit dieser gleichzusetzen. Auf meinem Windows XP z.B. ist fünfmal die svchost.exe gestartet worden, also gibt es sie unter fünf verschiedenen IDs. Es sind jedoch wesentlich mehr Dienste, die auf diese Datei zurückgehen, gestartet worden.
Dienste können seit Windows 2000 als DLLs implementiert werden und werden dann in der Tat "gehostet". Denn bekanntlich wird eine DLL normalerweise in einen existierenden Prozeß geladen.

MSDN-Library durchsuchenEnumServicesStatusEx enumeriert ja alle Dienste. Darunter sind aber auch welche, die zur Zeit nicht gestartet sind und somit keine PID haben.
Bingo!

UserMode-Treiber und KernelMode-Treiber?
Werden die im KernelMode da auch aufgelistet? [edit2] SERVICE_KERNEL_DRIVER sagt ja.
Die werden ja außerhalb des UserMode-Systems ausgeführt und dort gibt es "diese" PID eventuell nicht.
Treiber werden über die gleichen APIs wie Dienste installiert und gewartet. Das ist also theoretisch eine sehr sinnvolle Annahme.

Es gibt zwar PIDs auch kernelseitig, aber die sind von der Sache her irrelevant. Außerdem ist der Windows-(NT-)Kernel monolithisch und (Kernel-)Treiber werden ähnlich wie DLLs in den gleichen Adreßraum geladen. Daher könnten Treiber maximal mit der PID vom Pseudoprozeß "System" gezeigt werden.

Und ja, es gibt da noch ein relevantes Privileg: TCB.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:21 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