Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DWORD wert lesen ? (https://www.delphipraxis.net/53684-dword-wert-lesen.html)

spacewolf 21. Sep 2005 12:15


DWORD wert lesen ?
 
Moin,

ich versuche krampfhaft ein DWord Wert zu lesen

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Cdrom]
"AutoRun"=dword:00000001


Folgenden Source benutze ich:

Delphi-Quellcode:
procedure ReadFromRegistry;
var
 reg : TRegistry;
begin
 reg := TRegistry.Create;
 reg.RootKey := HKEY_LOCAL_MACHINE;
 reg.OpenKey('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom',true);
 try reg.ReadInteger('AutoRun');

     //bAutoRunCD := Boolean();
 except
   ShowMessage(SysErrorMessage(GetLastError));
   bAutoRunCD := false;
 end;
 reg.CloseKey;
 reg.Free;
end;
Als Boolean bekomme ich ebenfalls eine Exception.
Als String einen leeren Wert.
Dabei will ich doch nur 0 oder 1 lesen und 0 oder 1 schreiben.

Weiß jemand wie man hier mit DWORD werte umgeht ?


danke euer Andreas

PS: ich möchte mit dieser Funktion den Autostart an und abstellen können.

spacewolf 21. Sep 2005 12:22

Meta hats gefunden...
 
HKEY_LOCAL_MACHINE musste als Rootkey aus dem OpenKey raus.
Win2000 meckert da schon früher. Mein XP ist halt XP :-)

Für alle die es brauchen der funktionierende Source:

Delphi-Quellcode:
procedure ReadFromRegistry;
var
 reg : TRegistry;
begin
 reg := TRegistry.Create;
 reg.RootKey := HKEY_LOCAL_MACHINE;
 reg.OpenKey('SYSTEM\CurrentControlSet\Services\Cdrom',true);
 try bAutoRunCD := reg.ReadBool('AutoRun');
 except
   ShowMessage(SysErrorMessage(GetLastError));
   bAutoRunCD := false;
 end;
 reg.CloseKey;
 reg.Free;
end;

procedure WriteToRegistry;
var
 reg : TRegistry;
begin
 reg := TRegistry.Create;
 reg.RootKey := HKEY_LOCAL_MACHINE;
 reg.OpenKey('SYSTEM\CurrentControlSet\Services\Cdrom',true);
 try reg.WriteBool('AutoRun',bAutoRunCD); except end;
 reg.CloseKey;
 reg.Free;
end;

Gott Segne euch

euer Andreas

shmia 21. Sep 2005 13:01

Re: DWORD wert lesen ?
 
Vorsicht beim Arbeiten mit HKEY_LOCAL_MACHINE!!
Wenn du kein Administrator bist, darfst du nur lesen.
Deshalb:
Delphi-Quellcode:
reg := TRegistry.Create(KEY_READ);
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Services\Cdrom');

Olli 23. Sep 2005 12:56

Re: DWORD wert lesen ?
 
Zitat:

Zitat von shmia
Vorsicht beim Arbeiten mit HKEY_LOCAL_MACHINE!!
Wenn du kein Administrator bist, darfst du nur lesen.
Deshalb:
Delphi-Quellcode:
reg := TRegistry.Create(KEY_READ);
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Services\Cdrom');

... was auf Delphi 4 noch garnicht geht (nur so als Hinweis).

NicoDE 23. Sep 2005 13:01

Re: Meta hats gefunden...
 
Zitat:

Zitat von spacewolf
funktionierende Source

Die OpenKey-Funktionen geben nicht umsonst einen Boolean zurück...

spacewolf 26. Sep 2005 06:42

Re: DWORD wert lesen ?
 
danke euch... :P

jetzt brauch ich nen anderen weg - für systemweite variablen... :wall:

mach mal nen neuen Thread auf (wegem neuen Thema)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 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