Kann ich einen Gerätetreiber über einen INF-Abschnitt deinstallieren?

7088
coelhudo

Bei MSDN wird angegeben, dass es zwei Techniken zum Installieren von INF-Dateien unter Windows XP oder höher gibt:

  • Programmgesteuert über die SetupCopyOEMInf-Funktion.
  • Fügen Sie einen Eintrag namens CopyInf in einem INF-Abschnitt hinzu.

Gibt es in einem inf-Abschnitt einen entsprechenden Eintrag zum Deinstallieren von inf-Dateien, der der Funktion SetupUninstallOEMInf ähnelt ?

Ich habe diese Lösung mit SetupUninstallOEMInf gefunden, scheint mir aber nicht geeignet zu sein.

5

2 Antworten auf die Frage

1
Synetech

Well it depends on the .inf file (some may not have un-installation function at all), but you could always try one of the following:

rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 132 <driver.inf> rundll32 advpack.dll,LaunchINFSection <driver.inf>,UnInstall rundll32 syssetup.dll,SetupInfObjectInstallAction Uninstall.NT 4 <driver.inf> 

(Of course, replace the filename, including quotes as necessary.)

Richtig, aber ich habe keinen Eintrag gefunden, der die durch den CopyInf-Eintrag generierte Datei oemXX.inf explizit entfernt. Ich kann * .sys-Dateien entfernen, die mit dem CopyFiles-Eintrag in% SystemRoot% \ System32 \ drivers kopiert wurden. Es gibt Delfiles-Eintrag, funktioniert aber nur, wenn ich weiß, welche Dateien ich entfernen muss. coelhudo vor 11 Jahren 0
Fragen Sie nach "oem * .inf", das automatisch aus "\ Windows \ INF" entfernt wird? Ich habe das noch nie erlebt, vor allem bei Dingen, die über `.inf`-Dateien anstelle von` .exe`- oder `.msi'-Installationsprogrammen installiert werden. Sie könnten sie in einem Texteditor öffnen und die nicht mehr zutreffenden löschen. Synetech vor 11 Jahren 0
Ja, ich brauche dieses, um in ein NSIS-Skript (das Installationsprogramm von nullsoft) integriert zu werden. Es muss automatisch ausgeführt werden, wenn meine App deinstalliert wird. coelhudo vor 11 Jahren 0
Ah ich sehe. Wenn Sie ein eigenes (Un-) Installationsprogramm schreiben, fügen Sie einfach eine Zeile hinzu, um die `.inf`-Datei zu löschen. Sie können den `InfPath`-Wert des betreffenden Geräts unter dem Registrierungszweig` HKLM \ SYSTEM \ ControlSet001 \ Control \ Class` abfragen, um herauszufinden, wozu der Dateiname `oem * .inf` gehört. Synetech vor 11 Jahren 0
Ich habe nichts Ähnliches wie oem * .inf in diesem Registrierungszweig (Windows XP und Windows 7) gefunden, das während der Installation generiert wurde. Gibt es einen anderen Ort, an dem ich den entsprechenden OEM-Namen finden kann? coelhudo vor 11 Jahren 0
Sind Sie sicher, dass das Gerät installiert wurde? Sind Sie sicher, dass * eine * oem * .inf-Datei vorhanden ist? Suchen Sie in `\ Windows \ inf \` nach 'oem * .inf' -Dateien, die den Gerätenamen enthalten (oder überprüfen Sie sie einfach im Editor, wenn nur einige vorhanden sind). Synetech vor 11 Jahren 1
Ich habe noch keine Treiberinstallation `.inf` (im Gegensatz zu` .infs, die einige Systemkomponenten installieren) mit einem Deinstallationsabschnitt gesehen. Diese Befehle sind also völlig nutzlos. ivan_pozdeev vor 6 Jahren 0
0
ivan_pozdeev

Nein, Treiber-INF-Dateien enthalten normalerweise keinen Deinstallationsabschnitt. Per Wie Dateien aus dem System entfernen inf und So werden Geräte und Treiberpakete sind Uninstalled | Microsoft Docs, DiUninstallDeviceund SetupUninstallOEMInfsind die Möglichkeiten, eine Vorrichtung und ein Treiberpaket zu deinstallieren, entsprechend.

Von der Konsole aus können Sie die letztere devconVersion mit mindestens der Version aufrufen 6(von Windows 8.x DDK; bestätigt, dass sie in XP funktioniert):

devcon [-f] dp_delete oemXXX.inf 

( -ferzwingt die Deinstallation, auch wenn der Treiber verwendet wird)

Siehe Schnellmethode, um DevCon.exe zu installieren. So laden Sie das Dienstprogramm herunter, wenn Sie dies manuell tun müssen.

Von einem Installationspaket aus müssen Sie die vom Installations-Framework bereitgestellten Funktionen verwenden, die diese API für Sie aufrufen würden.