AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dienste und PID?

Ein Thema von Mattze · begonnen am 31. Jul 2015 · letzter Beitrag vom 4. Aug 2015
Antwort Antwort
Seite 1 von 3  1 23      
Mattze

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

Dienste und PID?

  Alt 31. Jul 2015, 16:42
Hallo,

ich lasse mir die Dienste mit EnumServicesStatusEx auflisten.
Dabei habe ich festgestellt, dass einige Dienste den Status "wird ausgeführt" haben, aber keine PID zu ermitteln ist.
Weder die, die mit EnumServicesStatusEx kommt, noch mit Queryservicestatusex. Als PID wird 0 zurückgeliefert (z. B. beim Dienst ACPI).

Wie ist sowas überhaupt möglich?

Wie kriege ich raus, ob ein Dienst 32Bit oder 64Bit ist?

Mit IsWow64Process kriegt man das nur über die PID.
Wenn nun aus welchen Gründen auch immer keine PID existiert, wie mach ich das dann?
(Siehe oben oder Dienste mit dem Status "beendet".)

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Dienste und PID?

  Alt 31. Jul 2015, 20:33
Kann es sein, dass dir die Rechte fehlen? Einen Prozess ohne PID kann es nicht geben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mattze

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 07:04
Hallo Michael,

eben! Der Meinung bin ich eigentlich auch.
SeDebugPrivilege habe ich mir natürlich gleich zu Anfang des Programmes gegeben.
Wenn die nicht irgendwo wieder kassiert werden, habe ich also eigentlich die entsprechenden Rechte.
(Zumindestens funktioniert für Prozesse mit alles - in TProcessEntry32 über CreateToolhelp32Snapshot, Processfirst, Processnext...).
Bei Diensten kriege ich fastnimmer die PID 0 (in einem array von TEnumServiceStatusEx(-es) über EnumServicesStatusEx.)
Bei Diensten, deren Status "beendet" oder "deaktiviert" ist, würde ich das ja noch verstehen - obwohl ich von denen natürlich auch gerne die Bit-Breite wüsste. (Wie?)
Aber, da sind auch Dienste wie ACPI, AFD...

Ob das schon damit zusammenhängt, dass das ein 32Bit-Programm in einer 64-Bit-Umgebung ist?

Also, ich weiß da nicht weiter...
(Ich habe es z. Bsp. auch mal über die Prozessliste versucht (siehe oben). Aber da tauchen die Dienste (auch wenn sie eine PID haben) nicht auf.)
Ich finde von 490 Diensten gerade 7 64er und 3 32er.
(Allerdings sind über die Hälfte "beendet". Trotzdem,der Rest "wird ausgeführt", es wird aber trotzdem keine PID ermittelt.)

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 11:16
Zitat:
Ob das schon damit zusammenhängt, dass das ein 32Bit-Programm in einer 64-Bit-Umgebung ist?
Das wird es sein, denke ich mal. aber ich glaube, es gibt einen Möglichkeit. Nur bin ich, was 64-Bit angeht nicht ganz Firm.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mattze

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 11:46
Hallo,

na-ja, ganz sicher bin ich mir da nicht.
Ich habe das für Prozesse gemacht und kriege auch mit meinem 32Bit-Programm (Delphi 7 pro) unter Win 7 pro 64 alle möglichen Daten für 32Bit- und 64Bit-Prozesse, die PID eingesschlossen.
(Siehe meine Anfrage zu VirtualQueryEx, gleich hier.)

Mich wundert auch, dass die Dienste nicht in der Prozessliste erscheinen (bis auf ganz wenige Ausnahmen).
Für mich ist der Prozess der übergeordnete Begriff und umfasst alles, was zurzeit auf dem Computer läuft. (Also auch Programme und Dienste. Zumindestens für Programme gilt das auch - siehe Taskmanager.)

Na ja, und die Frage bleibt: Wie kriege ich die Breite (32 oder 64) für einen Dienst, für den ich keine PID habe, der aber in der Serviceliste - mit EnumServicesStatusEx - aufgezählt wird?
Das müsste dem System ja dann durchaus bekannt sein!

Gruß
Mattze
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Dienste und PID?

  Alt 1. Aug 2015, 12:10
Das ist ziemlich sicher ein Rechte-Problem. Dienste laufen nicht unter deinem Benutzer sondern unter dem privilegierten SYSTEM-User. Deswegen hat dein Programm als normaler User-Prozess keinen Zugriff darauf. Starte dein Programm mal als Administrator, dann könnte es gehen.

Der Task-Manager zeigt die Prozesse von anderen Benutzern ja auch erst an, wenn du ihn im Administrator-Modus startest.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 12:17
Aber teilweise bekommt er ja die PID, wenn ich ihn richtig verstanden habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mattze

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 13:21
Hallo Namenloser,

1. Ich bin Administrator.
2. Das Programm wird (sowieso) immer als Administrator ausgeführt. (Es zeigt noch eine riesige Menge Infos vom System mehr an. Alles was ich so in den letzten Jahren irgendwo im Netz oder meinem Kopp gefunden habe. Reine Spielerei und Bastelei! Da ist es durchaus wahrscheinlich, dass für das Eine oder Andere Admin-Rechte gebraucht werden.)
3. Siehe Luckie. Für EvtEng kriege ich eine PID und, da es auch in der Prozessliste ist, eine Breite von 64Bit.
Für VMNetDHCP das gleiche, nur 32Bit.
Ein paar, ganz wenige, gibt es schon, bei denen es klappt!
Und, wenigstens die genannten dürften System-Prozesse sein. Also,soooo einfach scheint es leider nicht zu sein.

Gruß
Mattze
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Dienste und PID?

  Alt 1. Aug 2015, 13:33
Ich tippe trotzdem auf ein Rechteproblem. Vielleicht haben die Dienste, bei denen es geht, irgendein Flag aktiviert, das die anderen nicht haben, oder umgekehrt (UiAccess oder sonstwas). Hast du auch mal die UAC komplett deaktiviert? Nur um diese Fehlerquelle auszuschließen. Die UAC führt nämlich auch manchmal zu komischem Verhalten, das einen ganz schön in die Irre führen kann.

Auch interessant wäre, was passiert, wenn dein Programm (bzw. die entsprechende Routine) ebenfalls als Dienst läuft.

Geändert von Namenloser ( 1. Aug 2015 um 13:38 Uhr)
  Mit Zitat antworten Zitat
Mattze

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

AW: Dienste und PID?

  Alt 1. Aug 2015, 13:42
Hallo Namenloser,

auch die UAC usw.ist deaktiviert.
Sicher, ein Flag kann man nie ganz ausschließen.
Das wäre aber komisch, wenn es ausgerechnet ein paar System-Dienste nicht gesetzt hätten!

Es bleibt natürlich trotzdem die Frage, wie ich ohne PID an die Breite eines Dienstes rankomme.

Gruß
Mattze
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:30 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