Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   USB Gerät völlig aus Registry löschen (https://www.delphipraxis.net/49976-usb-geraet-voellig-aus-registry-loeschen.html)

Osse 19. Jul 2005 08:40


USB Gerät völlig aus Registry löschen
 
Moin, Moin

meine Abreit neigt sich dem ersehnten Ende, :hello:
aber jetzt gibt es mal wieder einrichtig großes Problem für mich.

Für meine Anwendung benutze ich ein exterens USB Gerät.
Die Firma, welche die Hardware herstellt, bietet auch eine .inf Datei zur Installation an.
Der Treiber wird installiert und funktioniert auch, läuft ganz hervorragend und alles ist so wie es sein soll.

Ich arbeitet zwar mit Inno Setup,lasse die Treiberinstallation vom Benutzer ausführen, da es recht kopliziert sein soll, Plug and Play geräte zu installieren.
Irgendwie wegen Windows, da man bei einem Plug and play Gerät die Werte nicht einfach statisch in die Registry eintragen kann (hab ich mir sagen lassen).

Dies soll aber nicht mein Problem sein, sondern Probleme macht mir die Deinsatllation der USB Hardware.

Wenn mein Tool deinstalliert wird, sollen auch alle Systemeinträge gelöscht werden, so dass keine Spuren mehr von dem Programm übrig bleiben. Da diese Vorgabe auch für die Registry gilt, versuche ich alles zu löschen, was von der .inf Datei angelegt wurde.

Ich habe in den Verzeichnissen

HKEY_Lokal_Machine\System\CurrentControllSet\Servi ces\blabla
Diesen Eintrag kann ich Problemlos löschen, das hab ich schon versucht.

Hab mal nach der ClassGuid Nummer gesucht, und da hab ich auch noch son Haufen einträge gefunden.
Diese Nummer gibt Windows doch an, um welches Gerät es sich handelt, oder???

HKEY_Lokal_Machine\ControllSet001\Controll\Class\{ FF64...}
HKEY_Lokal_Machine\ControllSet002\Controll\Class\{ FF64...}
HKEY_Lokal_Machine\CurrentControllSet\Class\{FF64. ..}

Nachdem ich eben nur einen Teil der Einträge deinstalliert hatte, kam auch promt ne Fehlermeldung beim erneuten Treiber regestrieren.
Ich möchte zunächst hier fragen bevor ich stundenlang mit der Systemwiederherstellung arbeite. :coder2:
Ich will mein System soweit sauber haben, dass nach der deinstallation beim erneuten "einstecken" des USB-Adapters wieder das
Windos Hardware Installationsscript erscheint. Dann müssten doch alle Einträge gelöscht sein, oder??

Gibt es denn überhaupt gute Tutorials über die Registry. Bei google finde ich irgendwie nicht so spannende Sachen.
Kann natürlich auch an meinen Eingaben liegen.

Danke

Robert Marquardt 19. Jul 2005 09:49

Re: USB Gerät völlig aus Registry löschen
 
Der einfachste Weg geht darueber das Geraet im Geraetemanager zu loeschen waehrend es eingesteckt ist.
Nicht in der Registry rumpfuschen!
Es gibt noch eine Menge andere Eintraege fuer das Geraet.

Programmatisch geht es ueber das Setup API und damit ueber das INF File.
Es koennen dort CoInstaller eingetragen sein, die beliebige Hilfsprogramme installiert haben koennen.

Osse 19. Jul 2005 14:01

Re: USB Gerät völlig aus Registry löschen
 
Hab mich mal versucht in das Thema einzulesen, aber irgendwie scheint das so ja recht kompliziert zu sein. :wall:
Zumindest für einen ahnungslosen Elektrotechniker..

Bei windows steht, dass man eine .dll mit installieren sollte, die den löschvorgang dann vornimmt. Kann ich nicht einfach die .inf Datei invertieren, so auf ganz doof und Sie dann "irgendwie" (wäre dann gut zu wissen wie) auszuführen??

Danke

DGL-luke 19. Jul 2005 14:18

Re: USB Gerät völlig aus Registry löschen
 
Zitat:

Zitat von Robert Marquardt
Der einfachste Weg geht darueber das Geraet im Geraetemanager zu loeschen waehrend es eingesteckt ist.

;)

Osse 19. Jul 2005 14:41

Re: USB Gerät völlig aus Registry löschen
 
Ok, das wäre die erste Möglichkeit. :spin2:

Die zweite wäre über Software.

Das kann doch gar nicht so schwierig sein, man muss nur wissen wie es geht :wall:

Zitat:

Es gibt noch eine Menge andere Eintraege fuer das Geraet
Wo kann das Nachlesen, welche Einträge noch gemacht werden??

DGL-luke 19. Jul 2005 15:37

Re: USB Gerät völlig aus Registry löschen
 
es gibt API-funktionen, um auf den gerätemanager zuzugreifen. für weiteres musst du wohl Luckie oder Olli fragen.

Union 19. Jul 2005 17:33

Re: USB Gerät völlig aus Registry löschen
 
Zitat:

Zitat von DGL-luke
es gibt API-funktionen, um auf den gerätemanager zuzugreifen. für weiteres musst du wohl Luckie oder Olli fragen.

Es gibt auch einen einfacheren Weg:
Code:
set devmgr_show_nonpresent_devices=1
start devmgmt.msc
So zeigt der Gerätemanager auch die halb/bzw. nicht richtig installieren Treiber und Geräte an.

Alter Mann 19. Jul 2005 17:45

Re: USB Gerät völlig aus Registry löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich ganz einfach, du musst nur festhalten welche USB-Geräte vor der Installation
Vorhanden sind und welche anschließend. Somit weist Du was gelöscht werden muss.
In der Regel befindet sich das gesuchte Gerät unterhalb von HKLM\System\CurrentControlSet\Enum

Je nach dem in USB oder USBSTOR oder …, musst halt die Unterschlüssel durchsehen.
Hast du das betreffende Gerät gefunden, sind auch alle Werte zum löschen vorhanden (siehe Bild).
Um das Gerät so zu entfernen, dass Windows es neu erkennt und den, ja noch vorhandenen Treiber,
erneut einbindet reicht es aus den Wert oberhalb des im Bild selektierten zu löschen.

Das war die einfache Art und Weise(und nicht unbedingt die Korrekte).

Über das API geht es natürlich auch, such innerhalb der DP nach USB oder fang hier von unten anUSB Speicher sicher entfernen

Gruß

Robert Marquardt 19. Jul 2005 17:51

Re: USB Gerät völlig aus Registry löschen
 
Das laeuft alles ueber das Setup API. Ich habe aber noch nicht mit diesem Teil des APIs gespielt.
Es gibt erst mal zwei Arten von Class die das Setup API kennt.
Setup Class: das sind die Klassen die von den INF Files gebildet werden und im Geraetemanager vorkommen.
Device Class: das sind die Geraete wie USB-Geraete usw.
Zusaetzlich erschwert wird die Sache das ein Geraet in Wirklichkeit aus mehreren Geraeten bestehen kann und deshalb in mehreren Klassen auftauchen kann.
Ein USB Stick ist ein USB-Geraet, ein USBSTOR-Geraet und ein Volume-Geraet.
Insgesamt sind die Geraete in einem Baum untergebracht. Das ist worauf das Config Manager API arbeitet.
Das Setup API stuelpt sich darueber und verbindet den ganzen Wust.

Bei der Installation wird das INF File ausgefuehrt. dort koennen (muesen aber nicht) CoInstaller deklariert sein.
Die duerfen Hilfsapplikationen installieren und auch sonst fast alles.

Am besten sich durch die MSDN Doku arbeiten ausgehend von beispielsweise SetupDiCallClassInstaller.
Es empfiehlt sich das Programm/DLL zu finden das den Device Manager antreibt und dann mal zu schauen welche SetupDi-Funktionen importiert werden.

Robert Marquardt 19. Jul 2005 17:54

Re: USB Gerät völlig aus Registry löschen
 
Alter Mann, hoer auf mit deinen unsinnigen Vorschlaegen.
Es gibt sehr viele Registry-Eintraege und die meisten sind auch noch mit Zugriffsbeschraenkungen belegt.
Ist ein CoInstaller beteiligt, so kann es beliebig kompliziert werden.
Da ist der Weg ueber den Device Manager viel sicherer und gruendlicher.

Safe Removal hat uebrigens garnichts damit zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz