Реестр: Как добавить строковой параметр?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Реестр: Как добавить строковой параметр?

Eugie » 23 фев 2005, 20:33

Код: Выделить всё

function MyReg_SetString(pRoot: HKEY; pKey, pValue, pStr: String): Boolean;
var hk: HKEY;
    dispos: Dword;
begin
  Result := False;
  try
    if Win32Check(ERROR_SUCCESS = RegCreateKeyEx(pRoot, PChar(pKey), 0, nil,
      REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil, hk, @dispos)) then
      Win32Check(ERROR_SUCCESS = RegSetValueEx(hk, pChar(pValue), 0, REG_SZ,
        PChar(pStr), Length(pStr)+1));
    Result := True;
  finally
    RegCloseKey(hk);
  end;
end;
...
...

MyReg_SetString(HKEY_LOCAL_MACHINE, 'SOFTWARE\Mirabilis\ICQ\ICQLite', 'megautil', 'stro4ka'); 

drmist » 22 фев 2005, 22:25

RegSetValueExW(reg,L"megautil",0, REG_SZ,'stro4ka',7);
Ну это не совсем на дельфи, я перевел это так:

s:='stro4ka';
RegSetValueExW(reg,'megautil',0,REG_SZ,@s,7);

и не зароботало. =((

Hawk » 22 фев 2005, 11:24

Пользуйтесь RegSetValueEx
RegSetValueExW(reg,L"megautil",0, REG_SZ,'stro4ka',7);

drmist » 19 фев 2005, 16:39

TRegistry не устраивает. нужно именно с помощью АПИ.

Eugie » 19 янв 2005, 18:48

В Delphi есть спец.класс TRegistry, можно воспользоваться его методами:

Код: Выделить всё

uses Registry;
...
procedure MyReg_SetStringValue(pRoot: HKEY; pKey, pParam, pValue: String)
begin
  with TRegistry.Create do begin
    try
      RootKey := pRoot;
      Access := KEY_ALL_ACCESS;
      { открыть ключ, если есть, но не создавать, если нет }
      if OpenKey(pKey, False) then begin
        WriteString(pParam, pValue);
        CloseKey();
      end;
    finally
      Free;
  end;
end;
...

// использование
MyReg_SetStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Mirabilis\ICQ\ICQLite', 'megautil', 'stro4ka'); 
PS. Текущий юзер должен обладать достаточными привилегиями, чтобы писать в HKEY_LOCAL_MACHINE. Например, под гостевым аккаунтом не получится.

drmist » 19 янв 2005, 17:19

на дельфи я это перевел так:
RegSetValueW(reg,'megautil',REG_SZ,'stro4ka',7);
В результате был создан новый ключ
HKLM\SOFTWARE\Mirabilis\ICQ\ICQLite\megautil с параметром по умолчанию stro4ka, а мне хотелось бы создать новый параметр в ключе ...\ICQLite ...

Absurd » 19 янв 2005, 11:45

В С это так выглядит

const wchar_t string[] = L"stro4ka";
RegSetValueW(reg,L"megautil",REG_SZ,string,lstrlen(string) );

Реестр: Как добавить строковой параметр?

drmist » 18 янв 2005, 18:38

Допустим, я обратился к ключу так:

Код: Выделить всё

var reg:hkey;
begin
RegOpenKeyEx(HKEY_LOCAL_MACHINE,'SOFTWARE\Mirabilis\ICQ\ICQLite',0,KEY_QUERY_VALUE,reg);
Как теперь добавить в него строковой параметром с именем 'megautil' и значением 'stro4ka'?

RegCloseKey(Reg); :)

Вернуться к началу