注册表项为何删除不了啊?

一切若然 2010-06-16 03:35:56
function AutoRunInReg(RW: Boolean; FileName, FilePath: string): Boolean;
var
Reg: Tregistry;
begin
FileName := ExtractFileName(application.ExeName); //开机启动的执行程序名
FilePath := application.ExeName; //完整路径
Reg := Tregistry.Create;
try
Reg.Rootkey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', true);
if RW then
Reg.WriteString(FileName, FilePath) //添加注册表项和键值
else
Reg.DeleteKey(FileName);
Reg.CloseKey; //关闭注册表
finally
Reg.Free;
end;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
AutoRunInReg(True,'regTest.exe','U:\MyDelphiPro\Reg\regTest.exe');
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
AutoRunInReg(False,'regTest.exe','');
end;

点击了 Btn2,键值还在啊,请问错在哪里啦?
...全文
363 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一切若然 2010-06-16
  • 打赏
  • 举报
回复
没分了,有分再给你吧
不好意思
一切若然 2010-06-16
  • 打赏
  • 举报
回复
哦我知道了,谢谢你啊
一切若然 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dinoalex 的回复:]
Reg.DeleteValue(FileName); 而不是 Reg.DeleteKey(FileName);
[/Quote]

我改了,可以啦,但是还有一个问题:

AutoRunInReg(True,'MyRun','U:\MyDelphiPro\Reg\regTest.exe');

生成的键在注册表里怎么显示是RegTest.exe,而不是MyRun呢,
不过用
AutoRunInReg(False,'MyRun','');
还是可以删除啦,有点弄不明白啦~
dinoalex 2010-06-16
  • 打赏
  • 举报
回复
Reg.DeleteValue(FileName); 而不是 Reg.DeleteKey(FileName);

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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