unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
REGKEYAPPS = 'SOFTWAREMicrosoftWindowsCurrentVersionUninstall';
var
reg : TRegistry;
List1 : TStringList;
List2 : TStringList;
i, n : integer;
begin
reg := TRegistry.Create;
List1 := TStringList.Create;
// 모든 설치된 프로그램 이름을 읽어온다
with reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(REGKEYAPPS, false);
GetKeyNames(List1);
end;
for i := 0 to List1.Count -1 do
begin
List2 := TStringList.Create;
try
// 각 프로그램의 하위 '값이름'들을 List2에 읽는다
reg.OpenKey(REGKEYAPPS + ''+ List1.Strings[i], false);
reg.GetValueNames(List2);
// '값이름' 이 'DisplayName' 인것을 찾아 '값데이터'를 출력한다
n := List2.IndexOf('DisplayName');
if (n <> -1) and
(List2.IndexOf('UninstallString') <> -1) then // 실행파일명
begin
ListBox1.Items.Add((reg.ReadString(List2.Strings[n])));
end;
finally
List2.Free;
end;
end;
List1.Free;
reg.CloseKey;
reg.Destroy;
end;
end.
카테고리 없음