Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi an alle Leser,

Ich habe momentan das folgende Problem:

Ich möchste alle Child Prozesse eines Parent Prozesses beenden.

Oder einfach gesagt einen Prozessbaum terminieren.

Jedoch muss die Lösung dieses Problems ohne Windows APIs realisiert werden!

Ich sollte am besten nur das .Net Framework verwenden!!!

Momentan habe ich mich mit der System.Diagnostics.Process Klasse beschäftigt, jedoch noch keine Lösung erzielt.

Würde mich über eine Antwort zu diesem Thema freuen.

mfg affix

Wenn Du einzelne eigene Prozesse beenden möchtest, dann baue in sie einen Mechanismus ein, mit dem Du dies an sie kommunizieren kannst.

Hallo,

Dir steht im .Net Framework auch der Namensraum

System.ServiceProcess

zur Verfügung. Hier könntest Du einen ServiceController nutzen welcher Dir abhängige Dienste und Dienste von denen dieser Prozess abhängt anzeigt.

Ich habe im Code mal eine sehr simples Beispiel anhand eines TreeView erstellt. Dies ist wie gesagt nur ein Beispiel und legt keinen Wert auf Codequlität!


        private void Form1_Load(object sender, EventArgs e)

        {


            ServiceController[] controllers = ServiceController.GetServices("Dein Rechnername");

            foreach (ServiceController sc in controllers)

            {

                TreeNode tn = new TreeNode(sc.DisplayName);

                TreeNode parent = new TreeNode("Parents");


                    foreach (ServiceController p in sc.ServicesDependedOn)

                    {

                        parent.Nodes.Add(p.DisplayName);

                    }

                    tn.Nodes.Add(parent);

                TreeNode child = new TreeNode("Childs");

                    foreach (ServiceController c in sc.DependentServices)

                    {

                        child.Nodes.Add(c.DisplayName);

                    }

                tn.Nodes.Add(child);

                treeViewProzesse.Nodes.Add(tn);

            }


        }

Die TreeView wird mit allen "Dienste" gefüllt. In den Unterordnern werden Childs und Parents angezeigt.

Wenn Du hier etwas Fleiß reinsteckst wirst Du bald eine Möglichkeit finden diesen Tree nach Abhängigkeiten zu sortieren und damit dein Problem zu lösen.

Viele Grüße,

Thomas

Vielen Dank für eure Hilfe!

Jedoch muss ich jetzt noch mal eine Frage zu deinem Beispiel stellen.

Mit Hilfe des ServiceController erhalte ich doch nur Windows Dienste!

Ich benötige aber alle Prozesse bzw. alle Childs zu einem bestimmten Prozess X,

welche im Windows Taskmanager aufgelistet werden.

Ich werde mich jetzt mit euren Beispielen beschäftigen und anschließend ein Feedback schreiben.

cu

Zu welchem Zweck Du das tun willst, hast Du noch nicht gesagt. Möglicherweise gibt es für das eigentliche Problem ja eine deutlich elegantere Lösung, denn Prozesse einfach zu beenden ist keine besonders gute Variante.

Hallo,

ja genau. hier werden nur Windowsdienste angegeben.

Ich schließe mich der vorherigen frage nach der Art der Anwendung an. Einen Prozess zu terminieren sollte nicht die Regel sein sondern eher eine Notlösung.

Beim Beenden eines Prozesses über den Taskmanager erhält man ja schon eine Warnung welche auf Systeminstabilität hinweist.

Also was willst Du mit diesem Vorgang bezwecken? Windowsdienste zu starten, anzuhalten oder zu beenden ist manchmal ganz nützlich, aber wirklich alle Prozesse?

Und warum kein Win32?

Gruß,

Thomas

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.