DELPHi:删除注册表项及子项问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 16:11:31
手动去掉启动项下的勾后,可在注册表的路径下SOFTWARE\Microsoft\Shared Tools\MSConfig\startupregKey\找到它
下面的代码是 如果该路径下存在则删除该项及其子项,怎么实现不了啊,郁闷。
if Registry.OpenKey('SOFTWARE\Microsoft\Shared Tools\MSConfig\startupregKey\',false) then Exit;
try
// 删除键
Registry.Deletekey('pc_client');
if registry.deletekey('pc_client') then
showmessage('ok');
finally
Registry.CloseKey;
end;
finally
Registry.Free;
end;
问题解决,完整代码如下:
Registry := TRegistry.Create;
try
keystr:='SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PC_CLIENT';
Registry.RootKey := HKEY_LOCAL_MACHINE;
if not Registry.OpenKey(keystr,false) then
Exit;
if registry.deletekey(keystr) then
showmessage('ok');
finally
Registry.Free;
end;

// 删除键
Registry.Deletekey('pc_client');
if registry.deletekey('pc_client') then
showmessage('ok');
其中Registry.Deletekey('pc_client')相当于执行了两次,到你IF 语句里执行结果肯定是FALSE,就肯定不出提示对话框了,把IF语句上面那句删除吧

还有就是ROOTKEY指定,不知道是不是你没贴出来
KEYSTR:='\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupregKey\pc_client';

Registry.RootKey := HKEY_LOCAL_MACHINE;
if not Registry.OpenKey(KEYSTR,false) then Exit;
try
// 删除键
if registry.deletekey(KEYSTR) then
showmessage('ok');
finally
Registry.CloseKey;
end;
finally
Registry.Free;
end;

你的语句里少个\ 你还少个not