Ist es möglich, mit dem Taskplaner unter Windows 7 einen sicheren USB-Autostart durchzuführen?

Ist es möglich, mit dem Taskplaner unter Windows 7 einen sicheren USB-Autostart durchzuführen?

Ich habe herausgefunden, dassWindows 7 erlaubt keinen Autorun auf USB-Laufwerken.

Ist es möglich, dies (auf sichere Weise) zu umgehen, indem man mit dem Taskplaner eine Aufgabe einrichtet, die ausgelöst wird, wenn das USB-Laufwerk eingesteckt wird? Auf den ersten Blick konnte ich mit der Ereignisanzeige keine zugehörigen Ereignisse finden.

Antwort1

Ich hatte die gleiche Frage wie Sie und habe etwas mit Powershell (integriertes Windows-Scripting) unter Verwendung von Techniken aus dem Scripting Guy Blog ausgearbeitet.HierUndHier. Das Skript läuft kontinuierlich als Hintergrundprozess, den Sie bei der Systemanmeldung mit dem Taskplaner starten können. Das Skript wird benachrichtigt, wenn ein neues Laufwerk angeschlossen wird, und führt dann etwas aus (hier konfigurieren Sie das Skript und nicht die Aufgabe). Da es grundsätzlich angehalten wird, während auf das nächste angeschlossene Laufwerk gewartet wird, sollte es nicht viele Ressourcen verbrauchen. Hier ist es:

1) Starten Sie Powershell ISE, das Sie in Ihrem Startmenü unter Zubehör/Windows Powershell finden.

2) Kopieren Sie Folgendes und fügen Sie es in Powershell ein.

#Erfordert -Version 2.0
Register-WmiEvent -Klasse win32_VolumeChangeEvent -SourceIdentifier volumeChange
write-host (get-date -format s) "Skript wird begonnen …"
Tun{
  $newEvent = Warteereignis -SourceIdentifier volumeChange
  $eventType = $newEvent.SourceEventArgs.NewEvent.EventType
  $eventTypeName = Schalter($eventType)
    {
    1 {"Konfiguration geändert"}
    2 {"Geräteankunft"}
    3 {"Geräteentfernung"}
    4 {"Andocken"}
    }
  write-host (get-date -format s) " Ereignis erkannt = " $eventTypeName
  wenn ($eventType -eq 2)
  {
    $Laufwerksbuchstabe = $newEvent.SourceEventArgs.NewEvent.Laufwerksname
    $driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").VolumeName
    write-host (get-date -format s) " Laufwerksname = " $Laufwerksbuchstabe
    write-host (get-date -format s) " Laufwerksbezeichnung = " $Laufwerksbezeichnung
    # Prozess ausführen, wenn das Laufwerk die angegebenen Bedingungen erfüllt
    wenn ($Laufwerksbuchstabe -eq 'Z:' -und $Laufwerksbezeichnung -eq 'Spiegel')
    {
        write-host (get-date -format s) "Aufgabe wird in 3 Sekunden gestartet …"
     Start-Schlaf -Sekunden 3
        Startprozess "Z:\sync.bat"
    }
  }
  Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Schleife bis zum nächsten Ereignis
Unregister-Event -SourceIdentifier volumeChange

3) Sie müssen das obige Skript ändern, um dem Skript mitzuteilen, nach welchem ​​Laufwerk es suchen und was es ausführen soll. Die beiden zu ändernden Zeilen sind:

  • if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')

    Meine USB-Festplatte mit dem Namen „Mirror“ ist als Laufwerk Z: eingestellt. Sie könnten einfach verwenden, if ($driveLabel -eq 'MyDiskLabel')wenn Ihnen der Laufwerksbuchstabe egal wäre.

  • start-process "Z:\sync.bat"

    Pfad der Aufgabe, die Sie ausführen möchten. In meinem Beispiel habe ich eine Batchdatei auf meinem USB-Laufwerk erstellt, die 3-4 Sicherungsaufgaben startet, aber es könnte alles Mögliche sein.

4) Wenn Sie fertig sind, speichern Sie Ihr Skript irgendwo (Erweiterung .ps1) und erstellen Sie dann eine Aufgabe im Taskplaner, damit Ihr Skript im Hintergrund ausgeführt wird. Meine sieht so aus:

  • Auslöser: Bei der Anmeldung
  • Aktion: Starten Sie ein Programm
  • Programm/Skript: Powershell
  • Argumente hinzufügen: -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"

5) Voilà!

6) Zusätzliche Dinge: Wenn Sie möchten, dass Ihr Skriptfenster ausgeblendet wird, verwenden Sie diese Argumente:

  • Argumente hinzufügen: -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"

Wenn Sie die Skriptmeldungen in einer Protokolldatei ausgeben möchten (die bei jedem Start des Skripts, also beim Anmelden, überschrieben wird), verwenden Sie die folgende Task-Aktion:

  • Programm/Skript: cmd
  • Argumente hinzufügen: /c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script log.txt"

Wenn Sie das laufende versteckte Skript jederzeit beenden möchten, können Sie den „Powershell“-Prozess im Task-Manager beenden.

Antwort2

Nein. Sie können den Taskplaner nicht verwenden.

Das einzige protokollierte Ereignis, das ausgelöst wird, wenn Sie Ihr USB-Gerät anschließen, ist der Start des Dienstes „Portable Device Enumeration“. Sie können es jedoch nicht im Task-Manager verwenden, da dasselbe Ereignis ausgelöst wird, wennbeliebigDienst wird gestartetUndgestoppt. (Außerdem wird das Ereignis nicht ausgelöst, wenn der Dienst bereits ausgeführt wird, wenn Sie Ihr Gerät anschließen.)

Antwort3

USB sicher entfernenverfügt über eine solche Funktion: Es kann ein Programm starten, wenn ein USB-Gerät eingesteckt wird.

Eine weitere Funktion von USB Safely Remove, die es von ähnlicher Software unterscheidet, besteht darin, dass Anwendungen nicht erst nach dem Anschließen eines Geräts, sondern auch vor dem Entfernen gestartet werden. Mit der Autorun-Funktion können Sie eine Datensicherung einrichten, bevor Sie eine entfernbare Festplatte trennen, Total Commander mit dem Inhalt des USB-Sticks ausführen, ein verschlüsseltes TrueCrypt-Laufwerk automatisch aushängen, bevor Sie das USB-Medium trennen usw.

Alt-Text

Antwort4

Ich glaube nicht, dass ein Taskplaner das richtige Tool dafür wäre. Sie brauchen etwas, das jedes Mal reagiert, wenn ein neues USB-Gerät hinzugefügt wird. Dazu wäre eine spezielle Anwendung erforderlich, die neue USB-Geräte erkennen kann und damit die Autorun-Funktion von Windows ersetzen würde.

Ja, eine solche Anwendung ist möglich. Allerdings wäre es eine Herausforderung, sie zu erstellen.

Wenn Sie den Taskplaner verwenden, werden Sie die Autostart-Funktion immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer und immer wieder (na ja, Sie verstehen schon) starten. Sie benötigen einen Mechanismus, der verhindert, dass die Autostart-Funktion zweimal verwendet wird. Und Sie benötigen einen Mechanismus, der erkennt, ob eine Autostart-Funktion verfügbar ist oder nicht, sonst erhalten Sie immer wieder Fehlermeldungen. Es ist, als würden Sie mit einem Hammer gegen die Wand schlagen und hoffen, dass dazwischen ein Nagel ist. Der Planer wüsste nicht, wann er starten und wann er aufhören soll.

verwandte Informationen