如何用Delphi访问注册表,然后把启动项显示出来?

wdrdjx11 2011-01-05 12:16:12
如何用Delphi访问注册表,然后把启动项显示出来?
...全文
137 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CassiaBlossom 2011-01-07
  • 打赏
  • 举报
回复


uses
Registry;


procedure TForm1.Button1Click(Sender: TObject);
const
sKey_MACHINE: array[0..7] of string =
('SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit',
'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run',
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce',
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices',
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup',
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx',
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
);

sKey_USER: array[0..6] of string =
('Software\Microsoft\WindowsNT\CurrentVersion\Windows\load',
'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run',
'Software\Microsoft\Windows\CurrentVersion\RunServicesOnce',
'Software\Microsoft\Windows\CurrentVersion\RunServices',
'Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup',
'Software\Microsoft\Windows\CurrentVersion\RunOnce',
'Software\Microsoft\Windows\CurrentVersion\Run'
);

var
regTemp: TRegistry;
slTemp, slResult: TStringList;
iNum: Integer;
begin
//清空Memo
mmoResult.Clear;
slTemp := TStringList.Create;
slResult := TStringList.Create;
regTemp := TRegistry.Create;
//循环查找启动项
regTemp.RootKey := HKEY_CURRENT_USER;
for iNum := 0 to 6 do
begin
regTemp.OpenKey(sKey_USER[iNum], False);
regTemp.GetValueNames(slTemp);
slResult.AddStrings(slTemp);
regTemp.CloseKey;
end;
//循环查找启动项
regTemp.RootKey := HKEY_LOCAL_MACHINE;
for iNum := 0 to 7 do
begin
regTemp.OpenKey(sKey_MACHINE[iNum], False);
regTemp.GetValueNames(slTemp);
slResult.AddStrings(slTemp);
regTemp.CloseKey;
end;

//在Memo控件显示结果
mmoResult.Lines.AddStrings(slResult);
//释放regTemp
regTemp.Free;
end;


Delphi7,WindowsXp下通过.
mihi1978 2011-01-07
  • 打赏
  • 举报
回复
主要还是在 服务这块。。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
这里应该是主力。。
JeffChung 2011-01-07
  • 打赏
  • 举报
回复
注册表里有好几个地方的,都得去找找
keeley20 2011-01-05
  • 打赏
  • 举报
回复
SOFTWARE\Microsoft\Windows\CurrentVersion\Run 是比较常见的启动键值

还有一些其他的键值
如 RunOnce 键 RunServicesOnce 键 WinLogon 键等。
bdmh 2011-01-05
  • 打赏
  • 举报
回复

uses
Registry;

var
reg:TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False);
reg.GetValueNames(ListBox1.Items);
reg.CloseKey;
reg.Free;
end;
changsn 2011-01-05
  • 打赏
  • 举报
回复
以服务启动不是更好?
hongqi162 2011-01-05
  • 打赏
  • 举报
回复
还有HKEY_LOCAL_MACHINE下的

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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