我正在尝试使用
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
如何运作?如何使用它从注册表中读取值?
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;
这里有一个例子:
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;