Einfach und rekursiv Verzeichnisse / Registrykeys löschen

31/07/2010 - 19:56 von Peter Mairhofer | Report spam
Hi,

Ich habs befürchtet: Gibt es wirklich keine einfache Methode ganze
Verzeichnisse und Registrykeys zu löschen?

Die üblichen verdàchtigen wie RegDeleteKey, RemoveDirectory etc. löschen
nur leere Elemente.

SHDeleteKey würde notfalls gehen, geht aber erst ab WinXP (oder 2000 Prof.).

SHFileOperation geht erst ab WinXP. Das ist mir irgendwie schon eng.

In diesem Zusammenhang: Was passiert eigentlich wenn diese das Programm
auf einem àlteren System ausgeführt wird? Fehlermeldung? Nichts?

Mühevollst alle Elemente durchgehen und einzeln löschen kanns doch auch
nicht sein?

Hintergrund ist dass ich beim Upgrade auf ein neues Programm meine alten
(eigenen) Spuren löschen muss. Das Unterprogramm dass das löschen soll
soll so einfach wie möglich sein und auf so vielen Systemen wie möglich
(zumindest Windows 2000, alle Systeme) funktionieren.

LG
Peter
 

Lesen sie die antworten

#1 René König
31/07/2010 - 20:52 | Warnen spam
Hallo!

Am 31.07.2010 19:56, schrieb Peter Mairhofer:
SHDeleteKey würde notfalls gehen, geht aber erst ab WinXP (oder 2000
Prof.).



SHDeleteKey funktioniert ab Windows 2000. Und für àltere Systeme setzt
Du ganz einfach den Internet Explorer ab Version 4 voraus und gut ist's.

SHFileOperation geht erst ab WinXP. Das ist mir irgendwie schon eng.



Das habe ich gerade mal in der Online-Library nachgeschlagen und konnte
es dort ebenfalls lesen. Das ist aber glatt gelogen! Ich verwende diese
Funktion problemlos auf meinem 2000er. Und wenn ich in meiner alten
Library Oktober 2001 nachsehe, steht da noch dieses:

Windows NT/2000: Requires Windows NT 4.0 or later.
Windows 95/98/Me: Requires Windows 95 or later.

Und wenn ich in der MSDN Library zum Studio 2005 nachsehe, steht da dieses:

Minimum operating systems Windows NT 4.0, Windows 95

Und nein, die Funktion wurde nicht nachtràglich aus dem System entfernt. ;-)

In diesem Zusammenhang: Was passiert eigentlich wenn diese das Programm
auf einem àlteren System ausgeführt wird? Fehlermeldung? Nichts?



Du wirst beim Starten der Anwendung die Meldung bekommen, dass ein
Prozedur-Einstiegspunkt nicht gefunden werden konnte (oder so àhnlich),
die Anwendung làsst sich also nicht starten.

Du kannst aber auch etwas vorsichtiger an die Sache herangehen und mit
LoadLibrary/GetProcAddress arbeiten. Das ist für Dein Problem aber nicht
nötig, IMO.

Mühevollst alle Elemente durchgehen und einzeln löschen kanns doch auch
nicht sein?



Nö, deswegen würde ich ganz einfach die von Dir genannten Funktionen
verwenden. :-)


Gruß,
René

Ähnliche fragen