![]() |
registry
wieso funktioniert das nicht:
Delphi-Quellcode:
uses registry...
procedure TForm1.FormCreate(Sender: TObject); var Reg : TRegistry; begin Reg := TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey ('Software\Microsoft\Internet Explorer\TypedURLs', FALSE); Reg.WriteString ('url1', ''); Reg.WriteString ('url2', ''); Reg.WriteString ('url3', ''); Reg.WriteString ('url4', ''); Reg.WriteString ('url5', ''); Reg.WriteString ('url6', ''); Reg.WriteString ('url7', ''); Reg.WriteString ('url8', ''); Reg.WriteString ('url9', ''); Reg.WriteString ('url10', ''); Reg.WriteString ('url11', ''); Reg.WriteString ('url12', ''); Reg.WriteString ('url13', ''); Reg.WriteString ('url14', ''); Reg.WriteString ('url15', ''); Reg.WriteString ('url16', ''); Reg.WriteString ('url17', ''); Reg.WriteString ('url18', ''); Reg.WriteString ('url19', ''); Reg.WriteString ('url20', ''); Reg.WriteString ('url21', ''); Reg.WriteString ('url22', ''); Reg.WriteString ('url23', ''); Reg.WriteString ('url24', ''); Reg.WriteString ('url25', ''); Reg.Destroy; Form1.Close; end; |
Hallo,
CloseKey nicht vergessen, ausserdem try..except benutzen. ;) Könnte schief gehen. :) Grüsse, Daniel :hi: |
funktioniert auch nicht!
|
hmm,
vielleicht ein Rechteproblem ? Darf dein User denn überhaupt in der Registry rumfuchteln ?
PS: SpinEdit Problem gelöst ? |
Re: hmm,
Hallo,
Zitat:
Grüsse, Daniel :hi: |
Ich glaube nicht, dass es an den User-Rechten mangelt! Sind Administratorrechte nicht ausreichend??? Naja in anderen Delphiprogrammen klappt es (der gleiche source) nur bei mir nicht :-(!!
@joelH: Ja das Problem ist gelöst und abgehackt! |
Habt den Source mal in einen Button gepackt: Dort klappt alles Prima!
Wie krieg ich das aber hin, wenn das Programm startet, das die Registryeinträge gelöscht werden und anschließend das Programm geschlossen wird, und wenn es geht ohne eine Programmoberfläche zu sehen! EDIT: Mit ShowMessage('gelöscht')!! Form1.onClose?? |
Indem du den Code im DPR-Quelltext unterbringst und auf alle externen Units verzichtest. Also auch auf alle Formulare. Eine MessageBox kannst du auch mit gleichnamigen Befehl aus der Windows-Unit anzeigen lassen.
Mit Registry-Unit dürfte das Programm, das ja wohl nur die URLs des IE löschen soll, dann etwa 60k groß sein. btw:
Delphi-Quellcode:
sollte besser
Reg.Destroy;
Delphi-Quellcode:
heißen. Den Tipp mit try/finally/end solltest du auch nicht in den Wind schlagen, denn u.U. kann es auf einem anderen Rechner (an dem du evtl. arbeitest, bzw. jemand, der dein Programm benutzt) Rechteprobleme geben. Zwar bei HKEY_CURRENT_USER eher unwahrscheinlich, aber warum die Möglichkeit riskieren wenn man es vermeiden kann?
Reg.Free;
Zu guter Letzt: würde es nicht reichen, einfache alle "url"-Einträge in dem Schlüssel zu entfernen? Die Registry-Unit bietet passende Funktionen zum Lesen aller Werte und Unterschlüssel in einem Schlüssel. Aber selbst wenn du bei deiner Methode bleiben willst, wäre eine for-Schleife wohl günstiger, kürzer und eleganter:
Delphi-Quellcode:
for i := 1 to 25 do
Reg.WriteString('url' + inttostr(i),''); |
Hallo,
Zitat:
Delphi-Quellcode:
Grüsse, Daniel :hi:
for i := 1 to 25 do
Reg.WriteString('url1' + inttostr(i),''); |
Moin DDE,
die Struktur sollte besser so aussehen:
Delphi-Quellcode:
Warum das bei Dir im OnCreate nicht funktioniert ist mir allerdings auch nicht klar. Prüf' doch mal nach dem OpenKey, bzw. WriteString, ob das System nicht einen Fehler gemeldet hat (z.B. mit ShowErrorMessage(SysErrorMessage(GetLastError)); )
Reg := TRegistry.Create;
try // Mach was mit dem Objekt if Reg.OpenKey(...) then begin try // Mach was mit dem geöffneten Key finally Reg.CloseKey; end; end; finally FreeAndNil(Reg); // oder Reg.Free; // Nicht Destroy end; Es kann übrigens durchaus sein, dass Administratorrechte nicht genügen. Manche Keys sind auch für den Admin gesperrt. Ein Admin hat dann zwar das Recht sich die Berechtigungen zu geben, dies ist dann aber nicht die Standardeinstellung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz