Board logo

标题: [讨论]如何根据注册表检测某个软件是否安装? [打印本页]

作者: HUNRYBECKY     时间: 2006-12-19 00:51    标题: [讨论]如何根据注册表检测某个软件是否安装?

由于本人制作绿色软件的需要,需要检测是否安装了某个版本的程序,如我要安装ACCESS2003绿色版,则就必须知道是否系统之前是否安装过OFFICE,如果安装过又是哪个版本?然后根据不同的情况处理:如果没有安装过则可以直接设置绿色软件,如果已经安装过,设置的话就回冲突,那么就先备份注册表的相关项.

这里就提出了一个问题?如何使用批处理根据注册表来检测是否安装了某个程序.检测?这里还是有点难度的,所以建议大家讨论下(本人以前都是使用一个国外的工具叫CHECKV的工具来检测是否安装了指定程序,不过不是命令行版的,所以使用起来很麻烦,要自己提取生成的HTML中的信息.)
作者: HUNRYBECKY     时间: 2006-12-19 05:28
好象没有人回答哟。自己顶一下。
是不是有难度呀。
我自己的思路是这样的,正在写程序,出来后再贴出来。
一般的软件安装后都会在注册表或者硬盘里写一些文件,一般有两种方法可以知道是否安装了某软件。一种方法是看是否改软件在磁盘里写了主程序文件等,但是这个只能判断是否安装了软件但不能判断安装的程序的版本,而且也不是很准确。另一种方法是通过注册表判断,除非是某些小的纯绿色软件,一般的软件安装后会在注册表中写入大量信息,那么可以通过注册表来判断程序是否安装以及其版本好。但是又怎样判断呢?不同程序在注册表中写的东西不同,所以难度还是很大。就OFFICE而言,可以通过HKLM下的OFFICE来判断或是提取HKCR中的INSTALLER中的字符来判断。
作者: electronixtar     时间: 2006-12-19 07:33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office
作者: vkill     时间: 2006-12-20 01:29
reg query 然后 if
作者: qpmgljf     时间: 2007-1-7 05:47
偶是个这方面的菜鸟,不过也做绿色软件。关于这个问题能不能说清楚一点啊。能不能给段示例啊。