Erzwingen Sie das Einhängen des USB-Sticks, bevor Sie fortfahren

Ich schreibe ein Updater-Programm in C # mit Visual Studio 2008 unter Windows 7. Ich möchte, dass der Benutzer ein USB-Stick einfügt. Wenn das Programm das Laufwerk und die Updates auf dem Laufwerk findet, kopiert es sie automatisch. Ich möchte nur einmal beim Start prüfen und dann ein Programm ausführen, das die Aktualisierungen nicht kennt (Aktualisierungen müssen wirklich beim Herunterfahren des Programms erfolgen).

Mein Problem ist, dass das Update-Programm ausgeführt wird, bevor das USB-Stick gemountet wird, sodass der Computer kein USB-Stick und keine Updates erkennt und vorzeitig fortfährt. Ich möchte, dass alles so schnell wie möglich läuft, aber ich muss alle USB-Sticks zwingen, vor der Erkennung aktiviert zu werden. Alles muss automatisch sein, ohne dass der Benutzer etwas eingibt.

Ist das in c # möglich?

Mit mehr Details bearbeiten:

Momentan führe ich beim Start eine Batch-Datei aus (eigentlich als Windows 7-Shell, aber ich bin mir nicht sicher, ob das einen Unterschied macht). Die Batch-Datei führt die Update-Prüfung und dann das eigentliche Programm aus. Wenn der Benutzer das USB-Laufwerk beim Booten stecken hatte, möchte ich, dass der Updater das Laufwerk ansieht und alle neuen Dateien kopiert.

Der aktuelle Code sieht folgendermaßen aus:

 DriveInfo[] ListDrives = DriveInfo.GetDrives();
 foreach (DriveInfo Drive in ListDrives)
 {
      if(Drive.DriveType == DriveType.Removable)
      {
           // double check it's valid and copy over stuff
      }
 }

Derzeit werden jedoch keine Laufwerke beim Booten gefunden. Wenn ich es später starte, ist alles in Ordnung. Ich gehe davon aus, dass ich, da ich den Updater so früh ausgeführt habe, keine Chance hatte, ihn zu laden, aber ich möchte nicht nur N Sekunden warten, wenn ich nicht muss, da dies unter normalen Umständen nur eine tote Zeit ist.

Wenn ich dies tun kann, ist die einfache Überprüfung viel einfacher, als ständig nach einem Ereignis suchen zu müssen und dann alles herunterzufahren und ein Update durchzuführen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage