HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_PMAP\5B85060013A9&0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Multi&Prod_Flash_Reader&Rev_1.00\058F0O1111B&0
路径相同,我用reg.OpenKey只能读到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\的下级目录位置
后面的内容不同,我想把后面那些内容一起读出一个listview去,
还能怎么操作?
请高手指点,谢谢

解决方案 »

  1.   

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_PMAP\5B85060013A9&0
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Multi&Prod_Flash_Reader&Rev_1.00\058F0O1111B&0var
      Myreg:TRegistry;
    begin
      Myreg:=TRegistry.create;
      Myreg.rootkey:=HKEY_LOCAL_MACHINE;
      Myreg.openkey('\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_PMAP\5B85060013A9&0',false);
    ...
    Myreg.openkey('\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Multi&Prod_Flash_Reader&Rev_1.00\058F0O1111B&0',false);
    ...
      ...
      Myreg.free;
    end; 
      

  2.   

    大致是這個意思,希望你能懂了。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,registry;type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      Key : TRegistry;
      subKeyName : TStringList;
    begin
      key := TRegistry.Create;
      subKeyName := TStringList.Create;
      Key.RootKey := HKEY_LOCAL_MACHINE;
      if Key.OpenKey('\SOFTWARE\Microsoft\AudioCompressionManager\DriverCache',false) then
      begin
        Key.GetKeyNames(subKeyName);
        Memo1.Lines.Text := subKeyName.Text;
      end;
      FreeAndNil(Key);
      FreeAndNil(subKeyName);
    end;end.
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    const SUB = '\hardware';
    var
      r: TRegistry;
      sl: TStringList;
      i: Integer;
    begin
      try
        r := TRegistry.Create;
        sl := TStringList.Create;
        r.RootKey := HKEY_LOCAL_MACHINE;
        if r.OpenKey(SUB, False) then
        begin
          r.GetKeyNames(sl);
          for i := 0 to sl.Count -1 do
            memo1.Lines.Append(sl[i]);
        end;
      finally
        r.Free;
      end;
    end;
      

  4.   

    谢谢大家的指点,但是我想了解的问题是
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_PMAP\5B85060013A9&0
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Multi&Prod_Flash_Reader&Rev_1.00\058F0O1111B&0
    注册表里面有很多这样的记录
    我拿这两条记录做个比喻
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\此前的内容是相同的
    但是此后的内容是不同的,我的问题是想取到所有记录中\058F0O1111B&0目录下的子键的值
    因为他上级目录已经不相同,
    我只想取注册表中所有记录最后一级目录下的值,应该怎么操作?
    上面的高手可能因为我说得不清楚,解释有所偏差.
    再次谢谢高手指点下