Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi DWORD in Registry schreiben (https://www.delphipraxis.net/204984-dword-registry-schreiben.html)

lukdelphias 20. Jul 2020 16:04

DWORD in Registry schreiben
 
Hallo liebesForum,

ich habe voreinen Wert der Registry zu ändern. Nach stundenlanger Probiererei gebe ich nun auf.
Ich weiß nicht mehr weiter. Ich bekomme es einfach nicht hin das der Registryeintrag geändert wird. Debuggen lässt sich das Programm ohne Probleme, spuckt keine Fehlermeldungen aus usw.
Hier der Code dazu:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Registry;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  reg : TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System',true) then
    try
      reg.WriteInteger('DisableTaskMgr',1);
    finally
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;

end.
Hat jemand eine Idee warum es nicht schreibt?

MfG

Uwe Raabe 20. Jul 2020 16:12

AW: DWORD in Registry schreiben
 
Vermutlich hast du keine Schreibrechte in dem Zweig (Policies). Prüf das doch einfach mal mit RegEdit nach.

himitsu 20. Jul 2020 16:24

AW: DWORD in Registry schreiben
 
Zitat:

Vermutlich hast du keine Schreibrechte in dem Zweig.
Versuch mal mit deiner Funktion den geschriebenen Wert wieder auszulesen.

Bei fehlenden rechten kommt eingentlich eine Fehlermeldung,
aber eventuell landet dein Wert im VirtualStore, welchen es hier auch gibt, ebenso wie im Dateisystem.

https://docs.microsoft.com/en-us/win...virtualization
http://blog.m-ri.de/index.php/2007/0...chattenseiten/

Dalai 20. Jul 2020 17:09

AW: DWORD in Registry schreiben
 
Auch wenn der Policies-Zweig im HKCU steht, haben Nutzer dort - aus gutem Grund - keine Schreibrechte. In diesem Zweig dürfen nur Administratoren und SYSTEM schreiben. Willst du das mit deinem Delphi-Programm machen, musst du (bei aktivierter UAC) höhere Rechte bzw. Adminrechte anfordern.

Grüße
Dalai

lukdelphias 21. Jul 2020 06:16

AW: DWORD in Registry schreiben
 
Guten Morgen,

Danke für die Antworten.
Rechte dort zu schreiben habe ich. Über regedit und andere Möglichkeiten geprüft.
Das Problem hat sich aber jetzt sowieso geklärt löse das ganze jetzt anders.

Danke trotzdem für die Hilfe.
Gruß

Dalai 21. Jul 2020 08:18

AW: DWORD in Registry schreiben
 
Zitat:

Zitat von lukdelphias (Beitrag 1469950)
Rechte dort zu schreiben habe ich. Über regedit und andere Möglichkeiten geprüft.

Regedit fordert standardmäßig höhere Rechte an (wegen requestedExecutionLevel=highestAvailable im Manifest). Dadurch kann man damit logischerweise in diesem Zweig schreiben. Dein Delphi-Programm wird aber wahrscheinlich nicht höhere Rechte haben oder anfordern - und hat daher die Rechte nicht. Wenn du dein Programm per Rechtsklick als Administrator ausführst, bekommt es die gleichen Rechte wie Regedit und wird dann dort schreiben können.

Mit welchen "anderen Möglichkeiten" hast du denn geprüft, ob Schreibrechte vorhanden sind?

Zitat:

Das Problem hat sich aber jetzt sowieso geklärt löse das ganze jetzt anders.
Nur interessehalber: Wie hast du es jetzt gelöst?

Grüße
Dalai

Uwe Raabe 21. Jul 2020 08:22

AW: DWORD in Registry schreiben
 
Zitat:

Zitat von Dalai (Beitrag 1469957)
Mit welchen "anderen Möglichkeiten" hast du denn geprüft, ob Schreibrechte vorhanden sind?

Würde mich auch interessieren. Der reguläre Weg wäre, im RegEdit das Kontext-Menü des Policies-Eintrag aufzurufen und dort unter Berechtigungen nachzusehen.

lukdelphias 21. Jul 2020 09:02

AW: DWORD in Registry schreiben
 
Die Anwendung hat die Rechte dort zu schreiben.
Gelöst habe ich es jetzt über eine andere Funktion für das schreiben der Registry hier aus dem Forum. Diese Methode funktionierte komischerweise ohne Probleme.

Grüße

Dalai 21. Jul 2020 09:09

AW: DWORD in Registry schreiben
 
Zitat:

Zitat von lukdelphias (Beitrag 1469960)
Die Anwendung hat die Rechte dort zu schreiben.

Das heißt, dein Programm fordert (z.B. per Manifest) höhere Rechte an, der Benutzer muss also die UAC bestätigen?

Nur um das nochmal klarzumachen: Ohne Manifest mit Abschnitt trustInfo/requestedExecutionLevel (mit passendem Wert) fordert kein Programm höhere Rechte an, mal von Ausnahmen wie Dateinamen und/oder Versionsinformationen mit bestimmten Schlüsselwörtern abgesehen. Höhere Rechte sind aber zum Schreiben in diesem Zweig erforderlich.

Zitat:

Gelöst habe ich es jetzt über eine andere Funktion für das schreiben der Registry hier aus dem Forum.
Welche Funktion wäre das?

Grüße
Dalai

lukdelphias 21. Jul 2020 09:12

AW: DWORD in Registry schreiben
 
https://www.delphipraxis.net/79110-r...erstellen.html

diese Funktion von ArmyMan funktioniert bei meinem Programm sehr gut:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 Uhr.
Seite 1 von 2  1 2      

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