var
frmreg: Tfrmreg;
Getregname: array[0..30] of string;
Getregdata: array[0..30] of string;
program_amount: integer;
....................
function Tfrmreg.RegReadString(const Root: HWND; key: string; name: string): string; //读注册表
var
reg: TRegistry;
ts: TStrings;
i: integer;
begin
reg := TRegistry.Create;
reg.RootKey := Root;
reg.LazyWrite := false;
reg.OpenKey(key, false);
ts := TStringList.Create;
reg.GetValueNames(ts);
program_amount := ts.Count;
for i := 0 to ts.Count - 1 do
begin
Getregname[i] := ts.Strings[i]; //取程序名
if (reg.GetDataType(Getregname[i]) = rdString) or (reg.GetDataType(Getregname[i]) = rdExpandString) then //判断键值类型
Getregdata[i] := reg.ReadString(ts.Strings[i]); //取程序地址
if trim(Getregname[i]) = trim(name) then result := Getregdata[i];
if (reg.GetDataType(Getregname[i]) = rdInteger) then
Getregdata[i] := inttostr(reg.Readinteger(ts.Strings[i]));
if trim(Getregname[i]) = trim(name) then result := Getregdata[i];