![]() |
Fehler bei in Registry schreiben
Ich bin grad dabei ne Konsolenanwendung zu schreiben, die sich auch in den Autostart der Registry schreiben soll, doch dabei erhalte ich eine Fehlermeldung bei der Deklinierung des Rootkeys (Undefinierter Bezeichner: HKEY_CURRENT_USER).
Doch eigentlich sollte das ja funktionieren, ohne die Zeile mit dem Rootkeyzeugs funktioniert das schreiben in die Registry. Hier mal mein gesamter Delphicode:
Delphi-Quellcode:
Tja, woran liegt das, hat da jemand vielleicht einen Tipp?
program Project1;
uses Registry, Forms; var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True); Reg.WriteString(Application.Exename, ParamStr(0)); Reg.CloseKey; finally Reg.Free; end; end. |
Re: Fehler bei in Registry schreiben
Irgendwie sieht das ganze nicht nach einer Konsolenanwendung aus. Bei mir sieht die so aus :
Delphi-Quellcode:
Probiere es mal so. Nur so runtergetippt.
program StringMove;
{$APPTYPE CONSOLE} uses SysUtils, Windows, Forms, Registry; var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); Reg.WriteString(Application.Exename, ParamStr(0)); Reg.CloseKey; finally Reg.Free; end; end. Edit 1: SysUtils nachgetragen Edit 2: Windows und Forms nachgetragen. |
Re: Fehler bei in Registry schreiben
Moin Hadschi,
diese Konstante ist in der Unit Windows deklariert. Diese müsstest Du noch mit einbinden. Dafür kannst Du auf die Unit Forms verzichten. Application.ExeName enthält das gleiche, wie ParamStr(0). Wenn Du nur den Dateinamen haben willst, schau Dir mal ExtractFilename an (Unit Sysutils) |
Re: Fehler bei in Registry schreiben
Eher so:
Delphi-Quellcode:
// Edit: Ach menno Christian... hättest du auch vor meinem Cacheupdate schreiben können. ;)
program KonsoleXYZ;
uses Windows, SysUtils, Registry; // <--<< HKEY_CURRENT_USER in Windows.pas ! var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); // Application.Exename <--<< das selbe nur ohne Forms.pas // >>--> ExtractFileName(ParamStr(0)) Reg.WriteString(ExtractFileName(ParamStr(0)), ParamStr(0)); Reg.CloseKey; finally Reg.Free; end; end. |
Re: Fehler bei in Registry schreiben
Ich habs jetzt so gemacht, danke für die Windowsunit, genau an der lags:
Delphi-Quellcode:
Mir hat ParamStr(0) gereicht, ExtractFileName brauch ich nicht, oder?
program Project1;
uses Registry, Windows; var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True); Reg.WriteString('Start', ParamStr(0){<-außerdem ist das hier der Wert für den Registryeintrag;)}); Reg.CloseKey; finally Reg.Free; end; end. |
Re: Fehler bei in Registry schreiben
Moin Hadschi,
der Name 'Start' ist natürlich nicht ungefährlich. Wenn der schon existiert, überschreibst Du den bestehenden Wert. Ein eindeutiger Name wäre schon ganz sinnvoll. |
Re: Fehler bei in Registry schreiben
Ja, das passt schon, der Name war nur provisorisch.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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