如何确认需要安装的软件是否已经安装过了?
我的问题是:我想做一个自动安装软件的AU3脚本,但是如何检测软件是否已经安装了?以上是我的主要问题,我要做的是不管用什么方法解决这个问题。下面的问题都是达到这个目的。
这是我的一个想法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
这是‘添加删除程序’中的程序列表在注册表的位置,但是要从这里查找就要先知道如何搜索注册表一个区域的数据,这是我现在不知的。请问有什么方法吗? 本帖最后由 ddx13 于 2010-3-4 16:17 编辑
For $i= 1 to 1000
$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $i)
If @error <> 0 then ExitLoop
MsgBox(4096, "SubKey #" & $i & " under HKLM\Software: ", $var)
Next 具体软件具体对待,有些并不在注册表的这个位置写入数据 这也是我的担心所在也许我应该再想想清楚再发询问。 我能自己回答吗? 每个软件写注册表的位置都不同,甚至同一软件版本不同也会注册表位置不同,当然还有写文件名称和位置都可能不同,所以这个得具体软件具体分析 5楼的靠普。。。。。。。。。。。。。。。。 判断注册表相应键值,检测相应文件夹或文件是否存在等~! 我一般用这个:
$i = 0
While 1
$i+=1
$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $i)
If @error <> 0 then ExitLoop
...........
WEnd
拿分走人 你先把你这个软件手工安装一遍。然后在注册表找找看他的共性的地方。比如记录安装路径的键值等等。。
然后你在写这个脚本的开头加个if判断一下就可以搞定了:
比如:
$test= RegRead("HKCU\Software\test","test")
If$test<>""then
msgbox(16,"","您已经安装过本软件了。")
exit
EndIf 好主意,顶你哟。。 自己定制软件安装也可以,自定义写入键值,然后可以读取该键值,能读取就是已经安装过了。。空的话就是没有安装。。 $i=1
$Regkey="HKEY_LOCAL_MACHINE\SOFTWARE"
While 1
$i=$i+1
$var = RegEnumKey($Regkey, $i)
If @error <> 0 then ExitLoop
If $var="Tencent" Then
MsgBox(0,"","QQ已安装!")
ExitLoop
EndIf
WEnd如上。 检测QQ已安装与否 为什么在搜索两个不同的区域?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
我知道在这个区域里面写着软件的信息,和软件添加删除程序的位置。
HKEY_LOCAL_MACHINE\SOFTWARE
这个名叫软件的区域里面写的是什么呢?
还有现在注册表查找就是最好的方法吗?我还以为会有其他方法。 再加上判断软件的版本就更加完美了
页:
[1]
2