Aaaalso ich bräuchte von einem Windows Dienst die ProzessID.
Mit dieser kann ich dann GetExtendedTcpTable prüfen, ob die TCP Connection verbunden ist. Das aber nur am Rande.
Also mit
scServices = ServiceController.GetServices().Where(d => d.ServiceName.Contains("test1", StringComparison.OrdinalIgnoreCase)).ToArray();
Bekomme ich den passenden Prozess, aber keine ID dazu.
Mit
var localAll = Process.GetProcesses().Where(d => d.ProcessName.Contains("PCoSvcHost", StringComparison.OrdinalIgnoreCase));
Bekomme ich alle passenden Prozesse, aber nicht den untergeordneten Thread, den ich eigentlich benötige.
Zu Anschauung das Bild im Anhang.
PCoSvcHost ist wohl der übergeordnete Prozess, den ich auch bekomme.
Was ich aber benötige ist der "Test", siehe Bild.
Dieser ist im Taskmanager von Windows sichtbar, aber sonst bekomme ich den irgendwie nicht raus.
Anybody eine Idee dazu?
Hallo,
so ganz verstehe ich deine Frage nicht. Ein Prozess hat nur genau eine Process.Id. Die untergeordneten Process.Threads haben jedoch wiederum jeweils eine eigene ProcessThread.Id.
Edit:
Du möchtest wohl die Prozess-Id des abhängigen Prozesses?! Dann mußt du auch nach dessen Namen (also "SAP Plant Connectivity (Test1)") suchen.
Falls du über die Process
-Liste nicht an dessen Id kommst, dann hilft dir evtl. der Zugriff per WMI: How to determine Windows.Diagnostics.Process from ServiceController bzw. How to get running windows service process id?
Jo, vielen Dank, das hat auf jeden Fall geholfen!