Create or Modify Registry Value - Delphi
DarkCoderSc
Jean-Pierre LESUEUR
// ...
procedure SetRegistryValue(const AHive : HKEY; const AKeyPath, AValueName : String; const AValueType : DWORD;
const pData : Pointer; const ADataSize : UInt64);
begin
var AKeyHandle : HKEY;
var AResult := RegOpenKeyExW(AHive, PWideChar(AKeyPath), 0, KEY_SET_VALUE, AKeyHandle);
if AResult <> ERROR_SUCCESS then
raise EWindowsException.Create('RegOpenKeyW', AResult);
try
AResult := RegSetValueExW(
AKeyHandle,
PWideChar(AValueName),
0,
AValueType,
pData,
ADataSize
);
if AResult <> ERROR_SUCCESS then
raise EWindowsException.Create('RegSetValueExW', AResult);
finally
RegCloseKey(AKeyHandle);
end;
end;
// ...
begin
try
var ATargetHive := HKEY_CURRENT_USER;
var ATargetKey := 'Software';
var ADword : DWORD := 2801;
SetRegistryValue(ATargetHive, ATargetKey, 'My DWORD', REG_DWORD, @ADword, SizeOf(DWORD));
var AQword : UInt64 := 1403201414032014;
SetRegistryValue(ATargetHive, ATargetKey, 'My QWORD', REG_QWORD, @AQword, SizeOf(UInt64));
var AString := 'Hello, World';
SetRegistryValue(ATargetHive, ATargetKey, 'My String', REG_SZ, PWideChar(AString), Length(AString) * SizeOf(WideChar));
var pData := nil;
var ADataSize := High(Byte) +1;
try
GetMem(pData, ADataSize);
for var I := 0 to ADataSize -1 do
PByte(NativeUInt(pData) + I)^ := I;
///
SetRegistryValue(ATargetHive, ATargetKey, 'My Binary', REG_BINARY, pData, ADataSize);
finally
FreeMem(pData, ADataSize);
end;
except
on e : Exception do
WriteLn(e.Message);
end;
// ...
Depends On
Implemented By Technique
Featured Windows APIs
Created
December 2, 2025
Last Revised
December 2, 2025
Windows Registry Actions