如何获得注册表指定项中的所有键址名字和信息
如获得HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中的每一个键值的名字

解决方案 »

  1.   

    Software\Microsoft\Windows\CurrentVersion\Run
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      t:TRegistry;
    begin
      t:=tregistry.Create ;
      t.RootKey:=HKEY_CURRENT_USER;
      if t.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false) then showmessage('open ok!');
      t.GetValueNames(memo1.Lines);
      t.CloseKey;
      t.Free;
    end;
      

  3.   

    我是用TStrings
    var
      MyStrings         : TStrings;
      i                 : integer;
    ...
    begin
      MyReg := TRegistry.Create;
      with MyReg do
        begin
          RootKey := HKEY_CURRENT_USER;
          OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
          GetKeyNames(MyStrings);
          CloseKey;
       end;
       if MyStrings.Count > 0 then
         for i := 0 to MyStrings.Count - 1 do
           begin
             ComboBox1.Items[i] := MyStrings[i];
             ......
           end;
    end;
      

  4.   

    晕死,用你们的方法和好,可是在程序关闭时会报错,如果把t.Free;在程序运行到这句话时他就报错了,纳闷中。
      

  5.   

    procedure TForm1.WMEndSession(var Message: TWMEndSession);
    var
      MyStrings         : TStrings;
      i                 : integer;
      Reg: TRegistry;
    begin
      Reg := TRegistry.Create;
      try
        Reg.RootKey := HKEY_CURRENT_USER;
        if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
          Reg.GetKeyNames(MyStrings);
      finally
        Reg.CloseKey;
        Reg.Free;
        inherited;
      end;
      ...........
    end;
      

  6.   

    问题解决了,感谢 dickeybird888(于伟刚)  热情帮助