-
-
检测特定软件的思路
-
发表于:
2011-10-29 15:04
5978
-
例如检查聊天工具、P2P工具等。 因为每个软件都没有使用统一的规范, 所以如果要检测是否安装了这类软件, 必须去根据不同软件去使用不同的方式检测, 例如A软件去检查注册表的某个键值, B软件可能需要去检查某个目录下的文件的值。 如果每种软件都写一个函数去检测, 估计得累死人。 需求分析是这样的, 检测是否安装了特定软件, 并显示该软件的安装位置。 我的思路是这样的, 使用一个数据库, 这个数据库是自定义的文件结构, 保存要检测的软件列表, 例如聊天工具, 添加腾讯QQ、阿里旺旺等, 每个列表项都有检测位置的例如:
软件名称: 腾讯QQ
查找位置:
位置1: {变量名:regpath, 类型:注册表, 参数1:HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009, 参数2: Install}
位置2: {变量名:path, 类型: 文件, 参数1:%regpath%\Bin\QQ.exe, 参数2:NULL}
位置n: ....
先找出第一个位置的值,注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009下的Install值,并赋值一个名为regpath的变量(并不是代码中的变量, 这个是获取到的一个临时值,用regpath表示, 第二个位置把%regpath%替换为上面获取的值。
不知道我是否描述得不是很清楚, 如图:
因为我也是第一次做这种东西, 不知道有什么简便的方法, 有的人说添加删除软件里面是保存在注册表中的,去注册表找, 这个我知道, 但是并非所有的软件都会在添加删除软件里添加, 我要做的是一个尽可能通用的简洁高效的实现方法。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课