Tool welches festgelegte Programme mit einem Klick beendet und startet

Daniel Albert

Lt. Commander
Registriert
Okt. 2007
Beiträge
1.188
Hallo, ich habe immer wieder das Problem mit meinem Laptop, wenn ich zum Kunden fahre das im Hintergrund viele Programme laufen die ich im Büro benötige aber nicht beim Kunden. Daher ist der Akku immer recht schnell leer.

Kennt jemand ein Programm über welches ich von mir festgelegte Programme mit einem Klick beenden kann und auch wieder starten nachdem ich wieder im Büro bin.

Was natürlich richtig cool wäre, wenn das Programm vom Stromanschluss gesteuert werden kann, sprich ist kein Kabel angeschlossen Programme beenden, wenn am Strom dann starten :)

Kennt jemand ein Tool?
 
Daniel Albert schrieb:
Kennt jemand ein Tool?
Nennt sich Batch Script und ist bei Windows immer verfügbar.
Zum Beenden von Programmen die Befehlszeile "Taskkill /im Programmname /f" verwenden. Und neu starten kann man einen ganzen Satz an Programmen ebenfalls mit einem Batchscript, in dem jeder Programmstart mit der Zeile "Start "" "Laufwerk\Pfad\Programmdatei.exe" hinterlegt ist.
 
  • Gefällt mir
Reaktionen: M-X, c9hris, autopilot und 2 andere
Ich würde es ebenfalls genau so machen wie @areiland beschrieben hat.

Es muss nicht immer direkt ein Tool sein ;)

€dit: Ich weiß nicht ob man beim Script sogar evtl. noch eine Abfrage einbauen kann bzgl. Strom angeschlossen oder Akku. Müsste man mal googlen. Evtl. ließe sich dann ein geplanter Task bauen der bei einem gewissen Akkustand auch die Programme beendet. Allerdings sollte man hier eine Abfrage einbauen ob die Programme auch wirklich beendet werden sollen. Sprich Akkustand hat Level 40% erreicht, folgende Programme werden ausgeführt "123; XYZ; asdf" Sollen diese wirklich beendet werden? Nicht das dir was abgeschossen wird, was aktuell verwendet wird :D
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Jurial
Hier findest Du eine Beschreibung wie Du mit Bordmitteln Prozesse starten und beenden kannst. Zusammen mit der Beschreibung von @areiland solltest Du das meiste damit einstellen koennen.
Alternativ, falls Du Adminrechte hast (und es die Firmenpolicy zulaesst) kannst Du einen weiteren Useraccount fuer Mobile erstellen der nur das noetigste laedt. Dann je nach Arbeitsort entsprechend einloggen. Solange der Zugriff auf die Daten bei beiden Accounts entsprechend eingestellt ist sollte es fuer das arbeiten keine grossen Komforteinbussen haben.
 
Wie @areiland sagt über ein Batch Script.

Mache ich bei mir zum Starten immer so.
Code:
@echo off
ECHO "Start default programms."
ECHO "(0) yes"
ECHO Any other key - cancel

set /p user_input=Your choice [0/c]?:

if "%user_input%"=="0" (

    ECHO Starting Teams...
    start C:\Users\username\AppData\Local\Microsoft\Teams\Update.exe --processStart "Teams.exe"
    ECHO Starting Outlook...
    start Outlook
   
    ping proxy.example.com -n 1 -4 | find /i "TTL=">nul
    if errorlevel 1 (
        ECHO Starting VPN...
        start /b cmd /c "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Barracuda Network Access Client\Barracuda VPN Client.lnk"
        ECHO Please connect VPN. Other applications will start as soon as proxy server is reachable.
        :waitonvpn
        ping proxy.example.com -n 1 -4 | find /i "TTL=">nul
        if errorlevel 1 (
            goto :waitonvpn
        )
    )
   
    ECHO Starting Spotify...
    start /b cmd /c "C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Chrome-Apps\Spotify.lnk"
    ECHO Starting Firefox...
    start Firefox https://intranet.example.com
)

exit 0

Das Skript liegt im Autostart, und testet durch das Pingen des Proxy-Servers sogar, ob ich vor Ort bin oder außerhalb - wenn außerhalb startet es direkt noch den VPN Client, wartet, bis der verbunden ist, und startet erst danach die Programme, die sich verschlucken, wenn sie beim Start nicht sofort Internet haben.

Alles, was davor gestartet wird, kommt damit klar erstmal kein Internet zu haben und erkennt die Verbindung sobald sie da ist.
 
  • Gefällt mir
Reaktionen: c9hris
Daniel Albert schrieb:
Was natürlich richtig cool wäre, wenn das Programm vom Stromanschluss gesteuert werden kann, sprich ist kein Kabel angeschlossen Programme beenden, wenn am Strom dann starten :)
Mit AutoHotkey sollte das umsetzbar sein, da müsstest du dich aber einlesen (relevantes Beispiel, das ich nach kurzer Suche finden konnte). Und ob das überhaupt so sinnvoll ist? Schließlich könnte es ja auch mal vorkommen, dass du nicht möchtest, das die Programme beendet werden, wenn das Netzkabel entfernt wird (oder eben der umgekehrte Fall).
 
Daniel Albert schrieb:
Was natürlich richtig cool wäre, wenn das Programm vom Stromanschluss gesteuert werden kann,
Selbst das ginge, wenn man solche Script von der Aufgabenplanung ausführen lässt, die mit diesen Aufgaben dann beim Wechsel in den Akkubetrieb und zurück reagiert.
 
kann man das auch mit der Windows Aufgabenplanung verbinden ... wenn die Netzbetrieb und Akku Betrieb erkennt ?
 
WMI zeichnet es auf jeden Fall auf - lässt sich auch in der Powershell mit:
(gwmi -Class BatteryStatus -Namespace root\wmi).PowerOnLine
einfach abfragen.

Screenshot-28.04.21.jpg

Hier hab ich den Status einfach nur bei meinem Tablet einmal ohne und dann mit angestecktem Ladestecker abgefragt. Damit könnte man mit einer If/Else Bedingung direkt ein Script füttern, das auf die Ausgabe "False" oder "True" entsprechend reagiert.

Wenn die Systemprotokolle den Wechsel zwischen Netz- und Akkubetrieb nicht loggen, kann man also auch auf die von WMI registrierten Wechsel zwischen Netz- und Akkubetrieb reagieren, indem man mit einem Hintergrundscript diesen Status abfragt und auf Wechsel reagieren lässt. Sowas kann man durchaus unsichtbar im Hintergrund ablaufen lassen, so dass wirklich nur die geänderte Systemumgebung mit den geschlossenen oder wieder gestarteten Programmen sichtbar wird.
 
Zuletzt bearbeitet:
Sowas ähnliches hab ich damals bei der Bitlocker-Verschlüsselung mit AutoIt gebastelt. Die Bitlocker-Vorbereitungen liefen erst an, sobald ein Netzteil angeschlossen wurde.

Habe es mal angepasst, daß im Akku-Betrieb Notepad geschlossen wird. Sobald das Netzteil angeschlossen wird, startet Notepad:
Code:
#include <file.au3>

While 1
Global $sWMIService, $objWMIService, $colItems, $sName, $oItem
$sWMIService = "winmgmts:\\" & @ComputerName & "\root\CIMV2"
$objWMIService = ObjGet($sWMIService)
IF IsObj($objWMIService) Then

   ;Hier die Klasse ändern. Im Augenblick Win32_BIOS
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Battery")
	If IsObj($colItems) Then
        For $oItem In $colItems
		   $sName = $oItem.BatteryStatus

			Next
			if $sName = 2 Then
			   ;Netzteil dran
			          if ProcessExists("notepad.exe") Then
						 ;nix machen
					  else
						 run("notepad.exe")
					  EndIf
			   ;Msgbox(0,"", "dran")
			   ;Exit
			Else
			   ProcessClose("notepad.exe")
			   ;MsgBox($MB_ICONERROR, "Bitte Netzteil prüfen", "Nicht angeschlossen." & @LF & "Bitte anschließen")
			   EndIf
		 EndIf

	 EndIf
	 WEnd

Ansonsten auf zwei Skripte aufteilen (batch, autoit, whatever):
AUS: entsprechende Programme per taskkill, processclose, whatever killen
AN: Programm per run-befehl, whatever starten
 
  • Gefällt mir
Reaktionen: c9hris und areiland
Bei mir meldet sich gerade die Fantasie…

Ausprobiert habe ich so was nicht, daher werfe ich die Frage ein den Raum was passiert wenn ich mich mit einem anderen User anmelde. Wie still werden alle Prozesse des «anderen», nicht abgemeldeten, Users gelegt? Ziehen sie Strom oder verhalten sie sich weitgehend ruhig?

Dahinter steckt auch die Idee, dass ich die Anwendungen nicht schließen muss, und danach wieder öffnen, was ja offene Dokument gefährdet wenn ich per Batch abschieße.

CN8.
 
Guten Morgen, Danke für eure schnellen Antworten. Muss ich mir in Ruhe anschauen. Wenn mir natürlich jemand unterstützt ein Script zu erstellen dann gerne. Wäre dann ja individueller ....
Ich melde mich am WE

Danke an euch
 
Gute Nachricht im nächsten Windows 10 kann man solche Programme in einen Ruhezustand versetzen.
 
IRONIE=AN
@ minimii
Habe Deine Lösung in verschiedenen Konstellationen probiert und funktioniert einfach nicht:
Powershell.
Powershell .
Einfach Schlagwort +Satzzeichenende hat leider 0 Nährwert. Bitte nachbessern :-)

@ cumulonimbus8
Um die Frage zu beantworten : Nein, sie bleiben nicht still und laufen weiter.
Dennoch stellt sich diese Frage eigentlich gar nicht:

zum einen:
es gibt genau drei Computer-Konten, welche man besitzen sollte:
1) lokaler Administrator: lokales PC-Konto um Installationen händisch vorzunehmen. Nur zum Installieren und nicht zum Arbeiten
2) Domänen-User: Konto mit Benutzerrechten (ohne Adminrechte); zum täglichen Arbeiten
3) Domänen-Admin: Konto um RSAT-Tools verwenden zu könnnen. Unter dem Domänen-User mit 'Ausführen als'+Kennung des Domänen-Admins starten.

Nur der Domänen-User ist notwendig. Andere Konten haben schlichtweg nicht zu laufen. Alles andere ist Hobby-Administration. Und dann der Zeitaufwand des ständigen Hin-und-Her-Wechselns... :-)

Der Domänen-User kann keinen Admin-Task abschießen. Zugriff verweigert.

zum anderen:
die Eingabe des /? hinter einem Befehl, stellt ein Füllhorn an Wissen und Informationen bereit:
PID (Process ID), USERNAME etc.
Mit diesen Mechanismen kann bis auf einen einzelnen Prozess bzw. Prozesse eines bestimmten User gezielt runtergebrochen werden. Sollte bekannt sein.

@ Daniel Albert
Erlaube mir bitte noch ein einzelnes Wort geistreich und phantasievoll als die ultimative Lösung vorzuschlagen (und habe viel Zeit zum Erstellen dieser Lösung investiert) : Prokrastination
Die Programme nicht öffnen & man hat nicht das Problem sie schließen zu müssen :-)
 
  • Gefällt mir
Reaktionen: Daniel Albert
ryan_blackdrago schrieb:
Sowas ähnliches hab ich damals bei der Bitlocker-Verschlüsselung mit AutoIt gebastelt. Die Bitlocker-Vorbereitungen liefen erst an, sobald ein Netzteil angeschlossen wurde.

Habe es mal angepasst, daß im Akku-Betrieb Notepad geschlossen wird. Sobald das Netzteil angeschlossen wird, startet Notepad:
Code:
#include <file.au3>

While 1
Global $sWMIService, $objWMIService, $colItems, $sName, $oItem
$sWMIService = "winmgmts:\\" & @ComputerName & "\root\CIMV2"
$objWMIService = ObjGet($sWMIService)
IF IsObj($objWMIService) Then

   ;Hier die Klasse ändern. Im Augenblick Win32_BIOS
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Battery")
    If IsObj($colItems) Then
        For $oItem In $colItems
           $sName = $oItem.BatteryStatus

            Next
            if $sName = 2 Then
               ;Netzteil dran
                      if ProcessExists("notepad.exe") Then
                         ;nix machen
                      else
                         run("notepad.exe")
                      EndIf
               ;Msgbox(0,"", "dran")
               ;Exit
            Else
               ProcessClose("notepad.exe")
               ;MsgBox($MB_ICONERROR, "Bitte Netzteil prüfen", "Nicht angeschlossen." & @LF & "Bitte anschließen")
               EndIf
         EndIf

     EndIf
     WEnd

Ansonsten auf zwei Skripte aufteilen (batch, autoit, whatever):
AUS: entsprechende Programme per taskkill, processclose, whatever killen
AN: Programm per run-befehl, whatever starten
Guten Morgen, ich würde mich am WE mal daran wagen ein Script zu erstellen. Geschlossen werden soll Outlook, Lookeen und Goodsync. Wie bringe ich die dort ein wo du Notepad eingetragen hast ?
 
ryan_blackdrago schrieb:
Nein, sie bleiben nicht still und laufen weiter.
Wie gesagt, ausprobieren konnte ich das nicht.
Nur… Was frisst ein offenes Word das einfach so da ist? Was wiederum brächte ein Video das im Hintergrund liefe und das ich nicht sehe - oder angehalten ist? Was an Soft böte sich an aktiv im Hntergrund zu werkeln? Rendering von mir aus, komplexe Makros. Dnge ich ich anstieße oder eben anhielte.
Futtern solche Schlafmützen wirklich so viel? Die Idee etwas gewaltsam abzuschließen behagt mir nicht da es Datenverlust heißt. Und Eine Offene Datei XY muss ich ja mühsam erst wieder öffne wenn die Anwendung an sich wieder startet (außer ich verließe mich auf Wiederherstellungen wie unter Word).

ryan_blackdrago schrieb:
PID (Process ID), USERNAME etc.
Gewiss.
Aber dann muss das schon eine Programm auswerten und gezielt abschießen. Also eine White-List nicht zu Schließendens? Oder eben eine Black-List was zu soll? Beides?
Da rumort mein Faulheitsgen :D

Welche Systemuser immer ich habe, habe sollte, wenn SW läuft und Strom frisst macht das vom Grundsastz keinen Unterschied, die Futterverwerter müssen ruhen :D
 
ryan_blackdrago schrieb:
@ Daniel Albert
Erlaube mir bitte noch ein einzelnes Wort geistreich und phantasievoll als die ultimative Lösung vorzuschlagen (und habe viel Zeit zum Erstellen dieser Lösung investiert) : Prokrastination
Die Programme nicht öffnen & man hat nicht das Problem sie schließen zu müssen :-)
Jein, passiert meistens dann wenn ich im Büro einen Kunden vorbereite, dabei laufen alle Programme die ich oben genannt habe. Wenn ich zum Kunden fahre starte ich den Laptop und unterhalte mich parallel mit dem Kunden, was schon mal 30 Minuten dauern kann. In der Zwischenzeit laufen die Stromfresser alle weiter. Hatte es schon das noch den 30 Minuten der Akku fast leer war. Laufen diese nicht laufen kann ich lange reden :)
Ich bekomme es einfach manchmal nicht mit das die noch laufen und wenn ist es dann zu spät
Ergänzung ()

ryan_blackdrago schrieb:
Sowas ähnliches hab ich damals bei der Bitlocker-Verschlüsselung mit AutoIt gebastelt. Die Bitlocker-Vorbereitungen liefen erst an, sobald ein Netzteil angeschlossen wurde.

Habe es mal angepasst, daß im Akku-Betrieb Notepad geschlossen wird. Sobald das Netzteil angeschlossen wird, startet Notepad:
Code:
#include <file.au3>

While 1
Global $sWMIService, $objWMIService, $colItems, $sName, $oItem
$sWMIService = "winmgmts:\\" & @ComputerName & "\root\CIMV2"
$objWMIService = ObjGet($sWMIService)
IF IsObj($objWMIService) Then

   ;Hier die Klasse ändern. Im Augenblick Win32_BIOS
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Battery")
    If IsObj($colItems) Then
        For $oItem In $colItems
           $sName = $oItem.BatteryStatus

            Next
            if $sName = 2 Then
               ;Netzteil dran
                      if ProcessExists("notepad.exe") Then
                         ;nix machen
                      else
                         run("notepad.exe")
                      EndIf
               ;Msgbox(0,"", "dran")
               ;Exit
            Else
               ProcessClose("notepad.exe")
               ;MsgBox($MB_ICONERROR, "Bitte Netzteil prüfen", "Nicht angeschlossen." & @LF & "Bitte anschließen")
               EndIf
         EndIf

     EndIf
     WEnd

Ansonsten auf zwei Skripte aufteilen (batch, autoit, whatever):
AUS: entsprechende Programme per taskkill, processclose, whatever killen
AN: Programm per run-befehl, whatever starten
Guten Morgen, so wollte nun beginnen. Wie kann ich denn nun mehrere Programme auf einmal starten und beenden in folgenden Code bereich

Code:
Next
            if $sName = 2 Then
               ;Netzteil dran
                      if ProcessExists("notepad.exe") Then
                         ;nix machen
                      else
                         run("notepad.exe")
                      EndIf
               ;Msgbox(0,"", "dran")
               ;Exit
            Else
               ProcessClose("notepad.exe")
               ;MsgBox($MB_ICONERROR, "Bitte Netzteil prüfen", "Nicht angeschlossen." & @LF & "Bitte anschließen")
               EndIf
Ergänzung ()

Achso, in welchen Format muss ich das Script denn speichern ? . bat ????
Ergänzung ()

Nachtrag: Ich starte den Laptop nur aus dem Ruhezustand und nicht neu. Läuft dann trotzdem das Script ständig im Hintergrund und prüft diese Punkte ab oder muss ich es dann zumindest einmal starten wenn der Laptop aus dem Ruhezustand hochgefahren ist ?
 
Zuletzt bearbeitet:
Der code von @ryan_blackdrago ist Autoit, das musst du installiert haben, dann kannst du es als au3 script starten, oder du machst dir eine exe Datei daraus, die dann auch ohne Autoit Installation laufen könnte.
Aber Achtung, gefährliches Halbwissen hier, ich habe schon seit Jahren nicht mehr mit Autoit gearbeitet.

Wenn du in der Aufgabenplanung eine neue Aufgabe definierst, kannst du unterschiedliche Trigger auswählen, die den Start deines Scripts auslösen. Siehe Anhang.
Dein Beenden aus dem Ruhezustand könnte zb der Trigger "Beim Aufheben der Arbeitsstationssperre" sein.
 

Anhänge

  • Screenshot 2021-05-04 222824.png
    Screenshot 2021-05-04 222824.png
    127,4 KB · Aufrufe: 226
  • Gefällt mir
Reaktionen: areiland
Zurück
Oben