AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kann keinen neuen Registryeintrag erstellen (access violation)
Thema durchsuchen
Ansicht
Themen-Optionen

Kann keinen neuen Registryeintrag erstellen (access violation)

Offene Frage von "hoika"
Ein Thema von idontknowagoodnameforthis · begonnen am 22. Dez 2016 · letzter Beitrag vom 23. Dez 2016
 
idontknowagoodnameforthis

Registriert seit: 22. Dez 2016
1 Beiträge
 
#1

Kann keinen neuen Registryeintrag erstellen (access violation)

  Alt 22. Dez 2016, 22:53
moin allerseits,

ich möchte einen DWORD-Wert in "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Policies\System" erstellen, ich habe lange gegoogelt, bin noch noch ziemlich neu dabei in sachen delphi programmierung.
die meldungen sind:

erster versuch: im projekt project1.exe ist eine exeption der klasse eregistryexception mit der meldung 'fehler beim setzen der daten für 'Wertname'' aufgetreten. (die zeile mit "reg.CloseKey;" ist markiert)

zweiter versuch: im projekt project1.exe ist eine exeption der klasse $C0000005 mit der meldung 'access violation at 0x004eaf03:read of address 0x0000001d' aufgetreten. (die zeile mit "Registry.WriteString('Schlüssel', 'Wert');" ist markiert)

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);

  private
    //nix
  public
    //nix
  end;

var
  Form1: TForm1;
  Vet : Array[0..3] of Byte = (01,00,00,00);

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
  var
    Registry,reg: TRegistry;
    FProcessEntry32: TProcessEntry32;
  begin
    //erster versuch
    reg := TRegistry.Create(KEY_ALL_ACCESS);
    try
      try
        reg.Lazywrite := false;
        reg.RootKey := HKEY_LOCAL_MACHINE;
        reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', false);
        reg.WriteBinaryData('Wertname',Vet,SizeOf(Vet));
        reg.CloseKey;
        except
        on E:Exception do
        begin
          ShowMessage(E.Message);
        end;
      end;
    finally
      reg.CloseKey;
    end;
   
    //zweiter versuch
    //nur zum testen ob string und integer denn funktionieren würden
    with TRegistry.Create do
    begin
    Rootkey:=HKEY_CURRENT_USER; //Hauptschlüssel
      try
        Registry.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',true);//bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
        Registry.WriteString('Schlüssel', 'Wert');
        Registry.WriteInteger('Zahl',123);
      finally
        Registry.free;
      end;
    end;
   
  end;

end.
ich hab tagelang nach einer lösung gesucht aber ohne erfolg, hoffentlich hat von euch jemand eine idee
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.
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