Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Registry Key löschen (https://www.delphipraxis.net/150515-registry-key-loeschen.html)

DarkProtector 19. Apr 2010 17:15


Registry Key löschen
 
Hallo,

ich bin neu hier und wollte eben mal einen Registry Key löschen:
Delphi-Quellcode:
procedure TForm1.UnlockClick(Sender: TObject);

var reg:TRegistry;

begin
reg:=TRegistry.Create;
memo1.Lines.Text:=memo1.Lines.Text+'->Entferne Registry Schreibschutz';
try
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', false);
   reg.DeleteKey('DisableRegistryTools');
   reg.CloseKey;
finally
   reg.Free;
   memo1.Lines.Text:=memo1.Lines.Text+'...Done'#13;
end;
Das habe ich bis jetzt, passieren tut nichts. Wäre nett wenn ihr mir helfen könnt :).

SirThornberry 19. Apr 2010 17:25

Re: Registry Key löschen
 
OpenKey und DeleteKey sind sicher Funktionen. Bei OpenKey bin ich mir ganz sicher. Werte am besten aus ob die Funktionsaufrufe auch erfolgreich waren. Wenn OpenKey fehlschlägt ist es arg fahrlässig ein DeleteKey aufzurufen. Denn mit etwas Pech existiert ein key gleichen Namens auch in der Ebene in der du dich vor OpenKey befindest und dann würde dort gelöscht werden.
Zudem bin ich mir auch nicht ganz sicher ob ein OpenKey überhaupt notwendig ist oder ob man bei DeleteKey nicht gleich den vollständigen Pfad angeben kann.

DarkProtector 19. Apr 2010 17:40

Re: Registry Key löschen
 
Ok habe nun meinen Quelltext etwas angepasst, funktionieren tut es trotzdem noch nicht.

Delphi-Quellcode:
procedure TForm1.UnlockClick(Sender: TObject);

var reg:TRegistry;

begin
reg:=TRegistry.Create;
memo1.Lines.Text:=memo1.Lines.Text+'->Entferne Registry Schreibschutz';
try
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.DeleteKey('Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools');
   reg.CloseKey;
finally
   reg.Free;
   memo1.Lines.Text:=memo1.Lines.Text+'...Done'#13;
end;

SirThornberry 19. Apr 2010 17:42

Re: Registry Key löschen
 
Hast du denn in der Hilfe mal geschaut ob der absolute Pfad erlaubt ist? Den Rückgabewert der Funktionen prüfst du übrigens immer noch nicht. :wink: Wenn du deine ursprüngliche Variante mal probierst und dort die Rückgabewerte auswertest, findest du vielleicht auch raus ob der Pfad nicht gefunden wird oder wirklich nur das löschen fehl schlegt. Aber wie gesagt. Dafür sind Funktionen eben Funktionen - weil sie etwas zurück geben was man auswerten kann.

DarkProtector 19. Apr 2010 17:44

Re: Registry Key löschen
 
Danke schon mal schaue mir das ganze nochmal in eurer Datenbank an.

SirThornberry 19. Apr 2010 17:49

Re: Registry Key löschen
 
da gibt es eigentlich nicht viel anzusehen:
Delphi-Quellcode:
if openkey(...) then
begin
  [...]
end
else
  ShowMessage('Openkey ist fehlgeschlagen');

Rakshasa 19. Apr 2010 17:53

Re: Registry Key löschen
 
Du hast bei der Pfadangabe den Backslash "\" an erster Stelle vergessen:


Delphi-Quellcode:
// Müsste jetzt funktionieren...
reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', false);

DarkProtector 19. Apr 2010 17:58

Re: Registry Key löschen
 
Funktioniert leider immer noch nicht. Zur allgemeinen Information ich habe
Delphi-Quellcode:
Uses ...,Registry;
drin und alles mit Administrationsrechten ausgeführt.

Edit: So habe das ganze nun nochmal mit einer If-Struktur überarbeitet:
Delphi-Quellcode:
procedure TForm1.UnlockClick(Sender: TObject);

var reg:TRegistry;

begin
reg:=TRegistry.Create;
memo1.Lines.Text:=memo1.Lines.Text+'->Entferne Registry Schreibschutz';
try
   reg.RootKey:=HKEY_CURRENT_USER;
 if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', false)
   then
    begin
    reg.Deletekey('DisableRegistryTools');
    memo1.Lines.Text:=memo1.Lines.Text+'...Done'+#13;
    end
finally
   reg.CloseKey;
end;
Die If-Struktur ist mir noch nicht so ganz klar müsste ja noch irgendwas wie =true oder so hin aber komme damit noch nicht wirklich zurecht.

Rakshasa 19. Apr 2010 18:24

Re: Registry Key löschen
 
Welches Betriebssystem nutzt Du? Spätestens ab Vista dürften solche Eingriffe wie Du sie durchführst nicht möglich sein (Stichwort Benutzerrechte).

Teste das Ganze doch mal in einem Testschlüssel unter "\Software\Test" oder so. Wenn das Da mit dem gleichen Code klappt, weißt Du, dass es Rechteproblem ist.

//edit: Den führenden Backslash hast Du immer noch nicht drin ;)

DarkProtector 19. Apr 2010 18:28

Re: Registry Key löschen
 
Ok mit neuen Rechten gibt er ein Done aus. Machen tut er trotzdem nichts. (Pfad, Rechte und Backslash sind korrekt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Seite 1 von 3  1 23      

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