Prozess auf PC im Netzwerk beenden

  • VB.NET
  • .NET 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

    Prozess auf PC im Netzwerk beenden

    Moin Leute,

    ich habe rund 50 PCs im Netzwerk. Bei einem Notfall muss ich per Knopfdruck ein gewisses Programm auf allen PCs schließen.

    Wie die Namen der PCs im Netzwerk auslese ist mir bewusst. Frage ist jedoch wie ich es schaffe, die Prozesse anderer Maschinen zu analysieren und zu beenden. Prozesse finden und beenden ist ja kein Thema. Nur der Zugriff auf einen anderen PC. Brauche dafür kein Remote wie Teamviewer sondern den direkten schnellen Datenzugriff.

    Hat jemand einen gescheiten Ansatz für sowas?
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Wir hatten vor ein paar Wochen das gleiche Problem beim reorganisieren unserer Datenbank. Das Problem war das es offenbar immer wieder ein paar experten gibt die meinen Das System benutzen zu müssen das auf die entsprechende DB zugreift wenn sie das nicht sollen ;)

    Ich habe dann ein kleines Tool gebaut das wir jetzt via Domainrichtlinie auf jeden Client gespielt haben und das immer im Hintergrund läuft. Das Tool holt sich über einen Webservice immer wieder Informationen ab welche Programme / Prozesse nicht benutzt werden dürfen.

    Dann werden diese mit den laufenden Prozessen abgeglichen und ggf. beendet und dann eine kleine Information ausgegeben.

    Das funktioniert bei uns ganz gut.
    Ohne weiteres sollte (hoffentlich) sowas nicht möglich sein, sonst gäbe es sehr schnell sehr viele ZombieBots im Internet und die Benutzer fragen sich, was denn der eigene Computer macht.
    @razzzer530i Meine Lösungsansatz wäre, dass Du einen kleinen TCP-Empfänger programmierst und auf jedem Client im Hintergrund laufen lässt, der von Deinem Arbeitsplatz-PC (IP-Filter, Zugangsfilterdaten, usw. sollten implementiert werden, sonst hast Du ggf. bald das o.g. Horroszenario) den Befehl erwartet, z.B. per Aufruf von SendMessage (Achtung, Thema pInvoke) das gewünschte Programm zu beenden. Natürlich braucht es dazu noch die Erfassung aller Client-Computer-IPs, damit Dein Kontrollprogramm weiß, an wen das Abschaltsignal gehen soll.
    meine wichtigste Programmiererkenntnis: Mühsam erhängt sich das Eichhörnchen.
    Grundsätzlich:
    Solch Abschießen muss es sehr wohl geben (können und dürfen), da z.B. bei Banken und Versicherungen per automatischer Wartung Updates aufgespielt werden, und dazu muss gesichert sein, dass der betreffende Prozess nicht aktiv ist.
    @Fakiz Jou. Das hatte ich auch gedacht.
    @razzzer530i Möglicherweise reichen die Rechte auf dem Server nicht aus, dass Du so einen Client-Process abschießen kannst, musst Du mal testen.
    Die Lösung von @VaporiZed klingt gut ist jedoch weniger kompliziert als dargelegt.
    Die Namen der Clients sind bekannt, da sollte ein foreach über alle Clients genügen, in der der Name des zu bgeendenden Prozesses übertragen wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter.
    VB-Fragen über PN / Konversation werden ignoriert!

    Also das hört sich alles ganz gut an. Möglich ist das auch sicherlich wie @RodFromGermany schon sagte.
    Ich werde das ganze jetzt so machen... Die PCs befinden sich alle im Netzwerk, d.h. Zugriff habe ich so oder so. Ich werde auf jedem Client eine Abfrage laufen lassen. Wie ich die Prozesse die gekillt werden sollen vorgebe, überlege ich mir noch. Ebenso die Verwendung von Sicherheitsdaten wie Logins oder Schlüssel zum aktivieren. Werde die Abfrage mit in den Autostart packen(Reicht das wohl für normale User die nicht wissen was der Autostart ist?...) Wird noch einige Zeit dauern bisi ch das in Angriff nehmen kann werde aber über das Ergebnis berichten. Danke vielmals!
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~