function RegFinder(RootKey:HKEY;KeyToOpen:String):integer;
var
i,j: integer;
Reg: TRegistry;
SubKeyList: TStringlist; //用于存放子键的列表;
begin
Reg:= TRegistry.Create ;
try
Reg.RootKey := RootKey;
if Reg.OpenKeyReadOnly(KeyToOpen) then begin
if Reg.HasSubKeys then begin //如果有子键;
SubKeyList:= TStringlist.Create ;
try
Reg.GetKeyNames(SubKeyList); //取得子键列表;
for i:=0 to SubKeyList.Count - 1 do begin
RegFinder(RootKey,KeyToOpen + '\' + SubKeyList.Strings[i]); //递归调用本函数;
end;
finally SubKeyList.Free ; end;
end ;
end;
finally Reg.Free ; Result:= 1 ; end;
end;
这段代码只是递归暂没做任何事, 以HKEY_LOCAL_MACHINE为参数运行有内存冲突,换成除HKEY_LOCAL_MACHINE以外的任何一个根键就没有问题,这是为什么?调用代码是 if RegFinder(HKEY_LOCAL_MACHINE,'') then ...
var
i,j: integer;
Reg: TRegistry;
SubKeyList: TStringlist; //用于存放子键的列表;
begin
Reg:= TRegistry.Create ;
try
Reg.RootKey := RootKey;
if Reg.OpenKeyReadOnly(KeyToOpen) then begin
if Reg.HasSubKeys then begin //如果有子键;
SubKeyList:= TStringlist.Create ;
try
Reg.GetKeyNames(SubKeyList); //取得子键列表;
for i:=0 to SubKeyList.Count - 1 do begin
RegFinder(RootKey,KeyToOpen + '\' + SubKeyList.Strings[i]); //递归调用本函数;
end;
finally SubKeyList.Free ; end;
end ;
end;
finally Reg.Free ; Result:= 1 ; end;
end;
这段代码只是递归暂没做任何事, 以HKEY_LOCAL_MACHINE为参数运行有内存冲突,换成除HKEY_LOCAL_MACHINE以外的任何一个根键就没有问题,这是为什么?调用代码是 if RegFinder(HKEY_LOCAL_MACHINE,'') then ...
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货