ich bekomme folgende Fehlermeldung beim Löschen von bestimmten Registryschlüsseln, was mich doch etwas wundert, weil ich 1) Adminrechte habe und 2) meine Funktion mir auch Schreibrechte gewährt (schließlich kann ich auch problemlos andere Schlüssel problemlos löschen).
DeleteKey ist meine Funktion, die einen bestimmten Schlüssel mit einem bestimmten Unterschlüssel löschen soll.
WriteRegFile ist eine selbstgeschriebene Funktion, die mir - bevor die Schlüssel samt aller Werte - die Schlüssel erstmal irgendwo speichert (in eine Datei), damit ich noch ein Backup für alle Fälle habe.
Ich kann dir eigentliche Frage nicht beantworten, vielleicht kann es M$, denn die liefern jedenfalls Windows 7 so aus. Ich habe auch, auch als Admin, lediglich Lesezugriff auf Unterschlüssel von HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\, und kann mir den Vollzugriff auch nicht holen, kriege nur ein lapidares "Access denied". Du kannst ja mal versuchsweise die UAC / Benutzerkontensteuerung runterregeln und dann versuchen, dir die Rechte zu holen: regedit, zum Schlüssel navigieren, Rechtsklick, Permissions, dann weiter wie bei Windowsrechten im Dateisystem.
Naja, ich arbeite aktuell in Windows XP, aber das Problem wird sicherlich dann auch wieder auftauchen, wenn ich es auf Windows Vista / 7 testen will.
Dann wäre ja noch folgende Frage zu beantworten: Angenommen, ich schaffe es alle Unterschlüssel von einem Interface zu löschen, nur den obersten Schlüssel (mit der ID) nicht, ist sowas problematisch?
Eine andere Vermutung die ich grad hatte, wäre, dass meine Interfaces ja auf TypeLibs zugreifen, dass ich erst die Einträge der TypeLibs lösche und dann die der Interfaces ... aber da fehlen mir noch Informationen.
+1 Berechtigung ist auch meine Vermutung: In diesem Bereich hat auch der Admin häufig nur Leserechte. Über Permission/Berechtigung auf den Schlüssel lässt dich das ändern.
@Jürgen Luhr: Aber wenn der Admin nur Leserechte bei den Interfaces hätte ... warum kann ich alle Unterschlüssel löschen, aber sobald ich alle Unterschlüssel gelöscht habe und den Vaterschlüssel [...]\Interface\{ID} löschen will, kommt eine Fehlermeldung.
Was passiert denn, wenn Du für einen solchen Key auf der Kommandoebende reg.exe delete ... eingibst? Wenn das auch nicht geht, liegt's jedenfalls nicht an Deinem Programm ;-) Hilfe über reg.exe delete /?
Mein Problem war folgendes: Im ersten Schritt habe ich die Registry nach Einträgen mit bestimmten Suchmustern gesucht und gesammelt. Im zweiten Schritt habe ich gewissen Teile nochmal durchsucht, die einen Verweis auf einen Eintrag im ersten Suchlauf hatten, die aber nicht den Suchmustern im ersten Durchlauf entsprechen (und deswegen auch im ersten Schritt nicht gefunden werden konnten). Es hat einfach an dem mitloggen der Schlüssel im zweiten Durchlauf gehapert.
Dann wäre ja noch folgende Frage zu beantworten: Angenommen, ich schaffe es alle Unterschlüssel von einem Interface zu löschen, nur den obersten Schlüssel (mit der ID) nicht, ist sowas problematisch?
Eine andere Vermutung die ich grad hatte, wäre, dass meine Interfaces ja auf TypeLibs zugreifen, dass ich erst die Einträge der TypeLibs lösche und dann die der Interfaces ... aber da fehlen mir noch Informationen.
Irgendwie schon komisch ...