2

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

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 (not RegistryEntry.KeyExists('Licenced To')) then
  begin
    RegistryEntry.WriteString('Licenced To', 'MySurname MyFirstName');
  end;

我的要求:

01.设置默认值如图:图片

02. 在 Win64 操作系统中,节点创建在 HKEY_LOCAL_MACHINE\WOWSys64\Software 下,但不在 HKEY_LOCAL_MACHINE\Software 下。

4

1 回答 1

6

32 位应用程序所需的行为。
如果您需要写入 64 位根目录,您可以使用 KEY_WOW64_64KEY;
在任何情况下,您都需要提升写入 HKEY_LOCAL_MACHINE 的权限

RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY;
于 2013-04-22T09:55:04.777 回答