delphi 判断是否存在注册表项目

如题,判断是否存在某一个项目,而不是键值,如果存在这个项的话,列出这个项下所有的子项(不是键)。比如:HKEY_LOACL_MACHINE下,SOFT\A下有1,2,3子项,每个子项有几个键值。需要判断是否存在A项,然后列出1,2,3.谢谢了!

procedure TForm1.RegBtnClick(Sender: TObject);
var
  reg        : TRegistry;
  openResult : Boolean;
  vnames: TStrings;
  i: integer;
  aValue: String;
begin
  reg := TRegistry.Create(KEY_READ);
  reg.RootKey := HKEY_LOCAL_MACHINE;
 
  if (not reg.KeyExists('Software\A\')) then
    begin
      MessageDlg('Key not found!.', mtInformation, mbOK, 0);
       reg.free;
      exit;
    end;

vnames:=TStringList.Create;
try
  openResult := reg.OpenKey('Software\A\1',True);
  if openResult = True then
  begin
     reg.GetValueNames(vnames) 
    for i:=0 to vnames.count-1 do
    begin
        aValue:=reg.GetDataAsString(vnames[i]);
       // do something with aValue
    end; //for
        reg.closekey;
   end;
  openResult := reg.OpenKey('Software\A\2',True);
  if openResult = True then
  begin
     vname.clear;
     reg.GetValueNames(vnames) 
    for i:=0 to vnames.count-1 do
    begin
        aValue:=reg.GetDataAsString(vnames[i]);
       // do something with aValue
    end; //for
    reg.closekey;
    end;
openResult := reg.OpenKey('Software\A\3',True);
  if openResult = True then
  begin
     vname.clear;
     reg.GetValueNames(vnames) 
    for i:=0 to vnames.count-1 do
    begin
        aValue:=reg.GetDataAsString(vnames[i]);
       // do something with aValue
    end; //for  
    reg.closekey;
    end;
  finally
  vnames.free;
  reg.free;
  end;
  end;

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答