直接弄个简单的例子算了。一个床体,一个按钮,一个列表unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, registry, StdCtrls;type TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var reg: TRegistry; myList: TStringList; i: integer; curkey, SName: string;begin reg := TRegistry.Create; myList := TStringList.Create; reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKey('Software/Microsoft/Windows/CurrentVersion/uninstall', False) then Begin reg.GetKeyNames(myList); curkey := reg.CurrentPath; reg.CloseKey; for i := 0 to myList.Count - 1 do if reg.OpenKey(curkey + '/' + myList.Strings, False) then Begin if reg.ValueExists('DisplayName') then SName := reg.ReadString('DisplayName') else SName := myList.Strings; if reg.ValueExists('DisplayVersion') then SName := SName + ' 版本:' + reg.ReadString('DisplayVersion') else SName := myList.Strings; ListBox1.Items.Add(SName); reg.CloseKey; end; end;end;end.