如何在Delphi中使用TRegistry读取注册表值?

问题描述 投票:0回答:2

我正在尝试使用

TRegistry
类读取 Windows 中的注册表值。

有人给我发送了一个如何使用它的示例,但代码不起作用。

uses Windows, Registry;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  Registry: TRegistry;
  ProductName: string;
begin
  Registry := TRegistry.Create(KEY_READ); // or KEY_WRITE if you want to modify the value
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    ProductName := Registry.GetValue('SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName', '');
    ShowMessage('The product name is: ' + ProductName);
  finally
    Registry.Free;
  end;
end;

没有找到

GetValue
。所以也许这不是
TRegistry
的工作方式,或者它的工作方式可能在新版本的 Delphi 中发生了变化。我不确定,而且 Embarcadero docwiki 已关闭,所以我也无法在那里检查。

TRegistry
如何运作?如何使用它从注册表中读取值?

delphi registry delphi-12-athens
2个回答
0
投票

TRegistry 上没有 GetValue 方法,因此他们发送给您的代码是错误的,或者他们使用了他们未提供的帮助程序类。一种方法是这样做:

procedure TForm1.Button1Click(Sender: TObject);
var
  Registry: TRegistry;
  ProductName: string;
begin
  Registry := TRegistry.Create(KEY_READ); // or KEY_WRITE if you want to modify the value
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    ProductName := '';
    if Registry.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', False) then
    try
      ProductName := Registry.ReadString('ProductName');
    finally
      Registry.CloseKey;
    end;
    ShowMessage('The product name is: ' + ProductName);
  finally
    Registry.Free;
  end;
end;

0
投票

这里有一个例子:

procedure TForm1.Button1Click(Sender: TObject);
var
   reg: TRegistry;
begin
   reg:= TRegistry.Create(KEY_READ);
   reg.RootKey:=  HKEY_LOCAL_MACHINE;
   reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', false);
   ShowMessage(reg.ReadString('ProductName'));
   reg.Free;
end;
© www.soinside.com 2019 - 2024. All rights reserved.