Das ist ziemlich nützlich, wenn man Aktionen beim Start bestimmter Programme automatisieren möchte. Beispielsweise könnte man ein Skript ausführen lassen, sobald jemand Notepad oder eine andere Anwendung öffnet. Die Einrichtung ist allerdings etwas umständlich – vor allem, wenn man sich mit Gruppenrichtlinien oder der Ereignisanzeige nicht so gut auskennt. Sobald es aber funktioniert, ist es ziemlich praktisch, da man benachrichtigt wird oder bei jedem Prozessstart eine Aktion automatisieren kann.
Da Windows keine einfache Funktion zum Benachrichtigen beim Öffnen von Notepad bietet, müssen Sie die Überwachungsrichtlinien anpassen und diese mit der Aufgabenplanung oder PowerShell verknüpfen. Nicht ganz einfach, aber durchaus machbar, wenn Sie die Schritte befolgen. Beachten Sie, dass Sie im Prinzip die Ereignis-ID 4688 auf neue Prozesse überwachen und anschließend nach Notepad oder dem gewünschten Programm filtern.
Wie man in Windows verfolgt, wann ein Programm gestartet wird und eine Aktion auslöst
Wirklich? Sie möchten App-Starts protokollieren und Aktionen automatisch ausführen? So geht’s.
Aktivieren der Prozessverfolgung in lokalen oder Domänengruppenrichtlinien
- Zuerst müssen Sie Überwachungsrichtlinien aktivieren, um die Prozesserstellung zu protokollieren. Gehen Sie zu Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Lokale Richtlinien > Überwachungsrichtlinie. Wenn Sie auf einem Domänencomputer arbeiten, verwenden Sie die Gruppenrichtlinien-Verwaltungskonsole (GPMC) mit gpmc.msc.
- Suchen Sie nach der Option „Prozessverfolgung“. Doppelklicken Sie darauf und stellen Sie sie auf „Erfolgreich“. Dadurch protokolliert Windows jeden erstellten Prozess.
- Nicht vergessen: Ein wichtiger Schritt – führen Sie den
gpupdate /forceBefehl in der Eingabeaufforderung oder PowerShell aus, um das Richtlinienupdate sofort zu übertragen. Das ist hilfreich, wenn Sie ungeduldig sind und schnell testen möchten.
Sobald dies abgeschlossen ist, beginnt Windows, Einträge mit der Ereignis-ID 4688 im Sicherheitsprotokoll zu protokollieren – Sie wissen schon: „Ein neuer Prozess wurde erstellt“.Die Ereignisse zeigen an, wer ihn gestartet hat, worum es sich handelte und welcher Prozess ihn aufgerufen hat (übergeordneter Prozess).
In manchen Fällen kann es bei bestimmten Konfigurationen erforderlich sein, den Rechner neu zu starten oder sich ab- und wieder anzumelden, damit die Richtlinienänderung wirksam wird.
Diese Prozessereignisse mit PowerShell filtern
- Als Nächstes möchten Sie nur die Startvorgänge von beispielsweise Notepad anzeigen. Hier ist ein praktischer PowerShell-Codeausschnitt:
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; ID = 4688 } | Select-Object TimeCreated, @{name='NewProcessName';expression={ $_. Properties[5].Value }}, @{name='User';expression={ $_. Properties[1].Value }} | Where-Object { $_. NewProcessName -like "*notepad.exe*" }
Äußerst nützlich, denn jetzt haben Sie ein Protokoll darüber, wann Notepad geöffnet wird, und das ist Ihr Auslöser für die Automatisierung.
Erstellen Sie im Aufgabenplaner eine Aufgabe, die beim Start der App ausgeführt werden soll.
- Öffnen Sie den Aufgabenplaner (
taskschd.msc) und erstellen Sie eine neue Aufgabe – entweder „Einfache Aufgabe erstellen“ oder einfach „Aufgabe erstellen“, um die volle Kontrolle zu behalten. - Benennen Sie es aussagekräftig, z. B.„Notepad-Trigger starten“.Legen Sie fest, dass es für alle Benutzer ausgeführt wird (wahrscheinlich unter „Beim Ausführen der Aufgabe folgendes Benutzerkonto verwenden“ – wählen Sie BUILTIN\Users ).Wenn Sie die Anwendung über Gruppenrichtlinien durchführen, verwenden Sie `%LogonDomain%\%LogonUser%`.
- Im Tab „Aktionen“ legen Sie fest, was Sie tun möchten – beispielsweise ein Skript oder einen Befehl ausführen. Führen Sie beispielsweise einen
powershell.exeBefehl mit Parametern wie „“ aus-ExecutionPolicy Bypass -File "C:\PS\ProcessRunEvent.ps1". Stellen Sie sicher, dass Ihr Skript die gewünschte Funktion erfüllt – beispielsweise eine Meldung anzeigt, eine E-Mail versendet oder eine Sicherungskopie der Datei erstellt. - Gehen Sie nun zu Trigger, klicken Sie auf Neu, wählen Sie Bei einem Ereignis und dann Benutzerdefiniert. Klicken Sie auf Neuer Ereignisfilter.
- Wählen Sie in den Filtereinstellungen als Protokoll „Sicherheit“, als Ereignis-ID 4688 und als Schlüsselwörter „ Audit Success“ aus.
- Wechseln Sie zum XML- Tab, aktivieren Sie „Abfrage manuell bearbeiten“ und fügen Sie diese Zeile direkt vor dem schließenden Tag ein:
and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\\Windows\\System32\\notepad.exe')]]
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security"> *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4688]] and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\\Windows\\System32\\notepad.exe')]] </Select> </Query> </QueryList>
Und ehrlich gesagt, das ist etwas ungewöhnlich, funktioniert aber. Sobald Sie dieses Ereignis abfangen, können Sie allerlei Dinge tun: eine Benachrichtigung anzeigen, eine E-Mail senden oder sogar Dateien sichern. Wenn Sie nachverfolgen möchten, wann Apps beendet werden, suchen Sie nach der Ereignis-ID 4689 – „Ein Prozess wurde beendet“.