![]() |
Fehlermeldung beim Schreiben in der Registry
Moin,
nach einer langen und schweren Erkrankung, bin ich gerade dabei, meine Programme an Windows 10 x64 mit Delphi 7 Pro anzupassen. Ich stelle nun mehr fest, das ich viel vergessen habe. Nun zu meinnem Problem. Ich ver suche mit nachfolgenden Code
Delphi-Quellcode:
einen Wert in 'Software\Microsoft\Windows\CurrentVersion\Run' zu schreiben. Bei HKEY_CURRENT_USER funktioniert es einwandfrei. Bei HKEY_LOCAL_MASCHINE im Gegensatz nicht. Was ist Falsch? Ich bitte um Hilfe
Procedure SetRegistryRun(User: Integer);
Var Reg: TRegistry; Titel : String; Const KEY_WOW64_64KEY = $0100; KEY_WOW64_32KEY = $0200; Begin If IsWow64 = True Then Begin Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY); End Else Begin Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_32KEY); End; Try If User = 1 Then Reg.RootKey := HKEY_LOCAL_MACHINE Else Reg.RootKey := HKEY_CURRENT_USER; If Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True) then Begin Titel := Application.Title; Titel := strLeft(Titel, Pos('WINDOWS', Titel) + 6); Reg.WriteString(Titel, Application.ExeName); AlertBox('SetRegistryRun: ' + SysErrorMessage(GetLastError), 'Fehlermeldung', 0); Reg.CloseKey; End; Finally Reg.Free; End; End; -Amalkotey- |
AW: Fehlermeldung beim Schreiben in der Registry
Tippe mal darauf, dass Deine Anwendung nicht über die notwendigen Rechte zum Schreiben unter HKEY_LOCAL_MACHINE verfügt.
Was wird denn hier
Delphi-Quellcode:
konkret ausgegeben?
AlertBox('SetRegistryRun: ' + SysErrorMessage(GetLastError), 'Fehlermeldung', 0);
|
AW: Fehlermeldung beim Schreiben in der Registry
Zitat:
Wenn das Programm nicht als Administrator gestartet wurde, dann wird selbst eine Anwendung im AdminAccount erstmal Elevated gestartet und bekommt nicht sämtliche Rechte. Und ja, es wäre bestimmt hilfreich gewesen, wenn jemand gesagt hätte, wie diese ominöse "Fehlermeldung" den lautet. |
AW: Fehlermeldung beim Schreiben in der Registry
Zitat:
Ich kann ich dem Programm die Berechtigungen erteilen? Unter Windows7 wurden die Daten korrekt geschrieben. Danke für die Hilfe im Voraus. -Amalkotey- |
AW: Fehlermeldung beim Schreiben in der Registry
Zitat:
Oder du kannst aus dem Programm heraus das Programm selbst noch einmal starten und dabei Adminrechte anfordern. Dazu gibst du dann noch Parameter mit, damit die neue Instanz weiß, dass sie die Werte in die Registry schreiben und sich wieder beenden soll statt normal zu starten. Du kannst auch in den Projektoptionen unter Anwendung --> Manifest bei Aufruferebene den Eintrag Administrator erforderlich auswählen. Dann werden die Administratorrechte automatisch angefordert. Aber das ist für diesen Zweck nicht sinnvoll. Zitat:
|
AW: Fehlermeldung beim Schreiben in der Registry
Zitat:
Unter Delphi 7 Enterprise gibt es diese Möglichkeit nicht. -Amalkotey- |
AW: Fehlermeldung beim Schreiben in der Registry
SuFu benutzen und fertiges Manifest suchen, bzw, selbst eines Bauen und als RES einbinden.
|
AW: Fehlermeldung beim Schreiben in der Registry
Der richtige Weg wurde von jaenicke eigentlich bereits beschrieben: Eigenes Programm nochmals als Administrator starten und die zweite Instanz die Daten schreiben lassen. Alternativ kann man auch ein anderes Programm als Administrator starten, das diese Aufgabe übernimmt. In diesem simplen Fall wäre das sogar mit dem bei Windows mitgelieferten reg.exe möglich.
Ein Manifest einzubinden, das dazu führt, dass das Programm permanent als Administrator läuft, ist eigentlich nur für Programme gedacht, die gar nicht ohne diese Berechtigungen auskommen: alles mit Direktzugriff auf Datenträger oder andere Hardware, zum Installieren von Treibern und Bearbeiten von Diensten usw. [EDIT] Andere Programme mit Anforderung von Adminrechten starten geht z.B. bei ShellExecute(Ex) über das Verb 'runas' (statt dem standardmäßigen 'open'). Wichtig: Ist die UAC deaktiviert (und der Nutzer hat keine Adminrechte), bewirkt das Verb 'runas' gar nichts. D.h. man sollte dennoch entweder auf das Vorhandensein der nötigen Berechtigungen prüfen und/oder darauf vorbereitet sein, dass der Vorgang fehlschlagen kann. [/EDIT] Grüße Dalai |
AW: Fehlermeldung beim Schreiben in der Registry
Zitat:
Ich habe Dein Programm Manifest-Creator gefunden. Kann ich das Manifest über das Programm erstellen? -Amalkotey- |
AW: Fehlermeldung beim Schreiben in der Registry
@All:
Ich lege meine Anpassungren erstmal auf Eis. Aufgrund meiner Niereninsuffizienz - dialysepflichtigt - funktioniert mein Kopf noch nicht richtig, da ich einen Vergiftungsgrad von 21 habe. Vielen Dank für die bisherige Hilfe. Ich komme, wenn der Vergiftungsgrad weiter gesunken ist, auf den einen oder anderren Forumskollegen zu, um mit dem Manifest weiter zukommen. Bleibt Gesundt! -Amalkotey- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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