如何设置注册表项的值

如何设置注册表项的值

问题描述:

我有一个Delphi XE2项目,要在注册表项中写一些东西.所以我定义了以下代码:

I am having one Delphi XE2 project to write something in registry key. So I have defined the following codes :

procedure TMainForm.BitBtn01Click(Sender: TObject);
var
  RegistryEntry: TRegistry;
begin
  RegistryEntry:= TRegistry.Create(KEY_READ);
  RegistryEntry.RootKey:= HKEY_LOCAL_MACHINE;
  if (not RegistryEntry.KeyExists('Software\MyCompanyName\MyName\')) then
  begin
    RegistryEntry.Access:= KEY_WRITE;
    RegistryEntry.OpenKey('Software\MyCompanyName\MyName\',True);
  end;
  RegistryEntry.CloseKey();
  RegistryEntry.Free;
end;

如果有任何字符串添加,我已经定义了以下代码:

If any string addition I have defined the following codes :

if (not RegistryEntry.KeyExists('Licenced To')) then
  begin
    RegistryEntry.WriteString('Licenced To', 'MySurname MyFirstName');
  end;

我的要求:

01.设置默认值,如下所示:

02.在Win64 OS中,该节点是在HKEY_LOCAL_MACHINE \ WOWSys64 \ Software下创建的,而不是在HKEY_LOCAL_MACHINE \ Software下创建的.

32位应用程序所需的行为.
如果需要写入64位根目录,则可以使用KEY_WOW64_64KEY;
无论如何,您都需要提升权限才能写入HKEY_LOCAL_MACHINE

that desired behavoir for 32-Bit applications.
If you need to write to 64-Bit root you can use KEY_WOW64_64KEY;
In any case you will need elevated rights for writung to HKEY_LOCAL_MACHINE

RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY;