Einzelnen Beitrag anzeigen

Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#6

Re: String in Unicode wandeln und als Hexwert in Registry

  Alt 28. Mai 2009, 13:28
Falls es jemanden interessiert:
Delphi-Quellcode:
function GetStringValueFromRegistry(RootKey : HKEY; KeyName, ValueName : WideString;
  var RequestedValue : WideString) : boolean;
var
  Handle : HKEY;
  Buffer : Pointer;
  BufSize : Integer;
  DataType : Integer;
  ReturnValue : Integer;
begin
  Result := false;
  if RegOpenKeyExW(RootKey, PWideChar(KeyName), 0, KEY_QUERY_VALUE, Handle) = ERROR_SUCCESS then
    begin
      Buffer := nil;
      BufSize := 0;
      DataType := REG_SZ;

      repeat
        Inc(BufSize, 1024);
        ReallocMem(Buffer, BufSize);
        ReturnValue := RegQueryValueExW(Handle, PWideChar(ValueName), nil, @DataType, Buffer, @BufSize);
      until ReturnValue <> ERROR_MORE_DATA;

      if ReturnValue = ERROR_SUCCESS then
        begin
          Result := true;
          RequestedValue := WideString(PWideChar(Buffer));
        end;

      FreeMem(Buffer);
      RegCloseKey(Handle);
    end;
end;

function SetStringValueInRegistry(RootKey : HKEY; KeyName, ValueName, Value : WideString) : boolean;
var
  Handle : HKEY;
  ReturnValue : Integer;
begin
  Result := false;
  if RegCreateKeyExW(RootKey, PWideChar(KeyName), 0, nil, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE or KEY_WRITE, nil, Handle, nil) = ERROR_SUCCESS
    then
      begin
        ReturnValue := RegSetValueExW(Handle, PWideChar(ValueName), 0, REG_SZ, PWideChar(Value), (Length(Value) + 1) * 2);
        result := ReturnValue = ERROR_SUCCESS;
        RegCloseKey(Handle);
      end;
end;
Ich fand TRegistry ohnehin schon immer totalen Overkill . Ich benutz übrigens die JEDI API Header. Kann gut sein, daß mit der "normalen" Windows Unit die ein oder andere Definition abweicht.
Fridolin Walther
  Mit Zitat antworten Zitat