Laufendes Programm nur, wenn PC mit WOL gestartet wird

491
Inferno IV

Ist es möglich, ein Ereignis oder Skript zu erstellen, das gestartet wird, wenn der Computer mit Wake-On-Lan gestartet wird?

Ich möchte das Programm nicht (automatisch) starten, wenn der Computer normal gestartet wird.

3
Es gibt kein separates Windows-Ereignis, wenn der Computer mit WOL oder auf andere Weise (Netzschalter) eingeschaltet wird. Ramhound vor 5 Jahren 1

2 Antworten auf die Frage

3
harrymc

Hier ist meine Idee, einen solchen Auslöser zu erstellen (ich kann jedoch keinen Erfolg garantieren). Da ich nicht die richtige Umgebung zum Testen der Idee habe, sind einige Experimente von Ihrer Seite erforderlich.

Der folgende Befehl kann zur Identifizierung der Weckquelle verwendet werden:

powercfg -lastwake 

Im Falle von Wake-On-Lan (WOL) ist das gemeldete Weckgerät Ihr Ethernet-Controller.

Sobald Sie wissen, dass ein solches Ereignis aufgetreten ist, und den genauen Namen der Wake-Quelle haben, ist dies meine Idee, wie Sie ein Auslöseskript hinzufügen:

  1. Öffnen Sie die Ereignisanzeige und suchen Sie das WOL-Ereignis (wobei die Weckquelle der Ethernet-Controller ist).
  2. Klicken Sie mit der rechten Maustaste auf das Ereignis und wählen Sie "Aufgabe an dieses Ereignis anhängen ...".
  3. Wählen Sie als Aktion "Start A Program"
  4. Fügen Sie Powershell.exeund den Pfad zu Ihrem Skript hinzu
  5. Um mehr Kontrolle zu erhalten, aktivieren Sie im Schritt "Beenden" das Kontrollkästchen "Öffnen Sie die Eigenschaften ..."
  6. Bearbeiten Sie auf der Registerkarte Auslöser den Ereignisauslöser, um detailliertere Auslöser hinzuzufügen

Einige Referenzen und Beispiele, um Ihnen den Einstieg zu erleichtern:

Dies funktioniert nur, wenn der Computer im Ruhezustand war und nicht, wenn der Computer tatsächlich gestartet wird (beim Einschalten). Es wurde keine Lösung gefunden ... Inferno IV vor 5 Jahren 0
Haben Sie alle Ereignisse gesucht, deren Quelle der Ethernet-Controller ist? harrymc vor 5 Jahren 0
Es gibt keine Quelle mit dem Namen Ethernet-Controller. Ich habe gesucht, als der Computer gestartet wurde, dieses Ereignis wird angezeigt: "Das Betriebssystem wurde zur Systemzeit 2018 - 07 - 27T06: 28: 13.494838200Z gestartet." (Kernel-General). Es gibt jedoch keine Ereignisse vor oder nach dem Start des WoL. Das einzige, was gefunden werden kann, ist: "Der Boot-Typ war 0x0.", Was bedeutet: Kaltstart nach dem vollständigen Herunterfahren. Also leider keine Hinweise, ob der Computer von WoL gestartet wurde .. Inferno IV vor 5 Jahren 0
Die Quelle wird nicht "Ethernet Controller" genannt, sondern der Name des Netzwerkadapters. Hast du auch Events mit Source Kernel-Power? harrymc vor 5 Jahren 0
Ich habe Ereignisse mit der Quelle Kernel-Power, jedoch sind sie für WoL-Boot und Normal-Boot identisch. Es gibt keine Ereignisse auf einem Netzwerkadapter um den Zeitpunkt des Startvorgangs. Inferno IV vor 5 Jahren 0
Dies bedeutet anscheinend, dass der WOL-Prozess nach dem vollständigen Herunterfahren zu hardwarebasiert ist, um von Windows protokolliert zu werden. Die Lösung funktioniert daher möglicherweise nur für den Ruhezustand, in dem sich Windows noch im Speicher befindet und die Hardware steuert. harrymc vor 5 Jahren 0
2
Tonny

Wie Ramhound bereits in den Kommentaren erwähnt hat, weiß Windows nicht, wie der Computer eingeschaltet wurde. (WOL, Bios-Timer-Ereignis, manuell eingeschaltet usw.)

Das einzige, was Sie von Windows bekommen können, ist, ob der Computer nach einem normalen Neustart oder Herunterfahren gestartet wurde oder ob der Computer nach einem unerwarteten Stromausfall oder erzwungenem Herunterfahren gestartet wurde.
Diese Informationen finden Sie im Ereignisprotokoll.

Das Beste, was Sie tun können, gilt, wenn Sie sicher sind, dass das WOL-Ereignis nur in einem Zeitrahmen stattfindet, in dem Sie Ihren Computer niemals selbst verwenden würden. Sie können einen geplanten Task so einrichten, dass er etwa alle 5 Minuten während des Zeitraums ausgeführt wird, in dem ein Skript zum Starten der Anwendung ausgeführt wird.
Die Task muss so konfiguriert sein, dass sie den Computer NICHT aufweckt, sodass sie nur ausgeführt werden kann, wenn der Computer von WOL geweckt wird. Das Skript sollte grundsätzlich zuerst prüfen, ob die Anwendung bereits ausgeführt wird (wenn sie beendet ist), und die Anwendung starten, falls sie nicht ausgeführt wurde.

Darüber hinaus: Wenn das WOL-Ereignis zu zufälligen Zeitpunkten eintritt, können Sie den Ansatz für geplante Aufgaben verwenden, wenn Sie Ihren Computer so konfigurieren, dass er die automatische Anmeldung NICHT verwendet. Wenn Sie sicherstellen, dass Sie sich abmelden, bevor Sie den Computer verlassen, um in den Ruhezustand zu wechseln, wird der Computer aufgrund des WOL-Ereignisses aus dem Ruhezustand, ohne dass sich jemand angemeldet hat.
Sie können dies in der geplanten Task testen und die Anwendung nur ausführen, wenn nein Einer ist angemeldet. Dies ist jedoch etwas schwierig, da Windows dies nicht einfach überprüfen kann. Mein gewöhnlicher Ansatz dazu ist zu verwenden tasklist | findstr explorer. Wenn Benutzer angemeldet sind, wird für jeden Benutzer 1 Zeile angezeigt, da jeder seine eigene Kopie von explorer.exe ausführt. Wenn jedoch niemand angemeldet ist, wird auch keine explorer.exe ausgeführt.