2010-05-24 16 views
9

Ich schreibe eine Anwendung, die einige Treiber aktualisiert. Die Treiber sind jedoch "in Verwendung" und können nicht gelöscht werden, wenn ich meinen Computer nicht neu starte.Löschen von gesperrten Dateien und Ordnern

Also wie kann ich eine Anwendung schreiben, um diese gesperrten Treiber zu löschen, ohne den PC neu zu starten. WENN der Neustart MUSS auftreten, dann wie kann ich meine Anwendung automatisch neu starten, wenn der Computer neu startet und diese Dateien löschen?

+3

Übrigens ist das Ersetzen von Treibern einer der Hauptgründe, warum Windows noch Neustarts benötigt. Jetzt scheinen einige Treiber sie nicht mehr zu benötigen (nVidia-Treiber fordern keinen Neustart auf, sie deaktivieren nur die Anzeige für einen Moment). – Powerlord

+2

@R. Bemrose: Wenn ich richtig verstehe, funktioniert das, indem ich den Fahrer in einen Kern aufteile, der geladen bleibt, und das eigentliche Fleisch des Fahrers, das entladen und ersetzt werden kann. Mit anderen Worten, OP hat möglicherweise keine Optionen. –

+0

Nun, sie sind Druckertreiber und Drucker sind nicht immer in Gebrauch. Ich habe gelernt, wie Spooler-Service. –

Antwort

5

Für Windows können Sie das Verschieben/Löschen von Dateien bei einem Neustart planen, indem Sie die MoveFileEx API (oder die Registrierung wie beschrieben) pinnen.

0

Wenn Sie die Hardware deaktivieren können, die die Treiber verwendet, kann der Treiber möglicherweise entladen und ersetzt werden.

+0

Wie deaktivierst du es mit Code? –

+0

http://stackoverflow.com/questions/1438371/win32-api-function-to-programatically-able-disable-device –

Verwandte Themen