如何扫描PC里都安装了什么软件?请给示例,可通过的200分(200)

  • 主题发起人 主题发起人 babalamari
  • 开始时间 开始时间
B

babalamari

Unregistered / Unconfirmed
GUEST, unregistred user!
要求:Button1_Click事件触发 扫描PC内安装的软件在Memo中List
 
现在没有人了吗?
 
没了,结贴吧。
 
通过读取注册表信息可以扫描,在这个位置'Software/Microsoft/Windows/CurrentVersion/uninstall'里面每一个子项都是一个安装的软件,子项的键值:DisplayName是软件名称,其他的自己看就行了
 
直接弄个简单的例子算了。一个床体,一个按钮,一个列表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.
 
通过,结帖放分
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
986
import
I
后退
顶部