ac5474012 发表于 2010-3-4 14:42:03

如何确认需要安装的软件是否已经安装过了?

我的问题是:我想做一个自动安装软件的AU3脚本,但是如何检测软件是否已经安装了?
以上是我的主要问题,我要做的是不管用什么方法解决这个问题。下面的问题都是达到这个目的。

这是我的一个想法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
这是‘添加删除程序’中的程序列表在注册表的位置,但是要从这里查找就要先知道如何搜索注册表一个区域的数据,这是我现在不知的。请问有什么方法吗?

ddx13 发表于 2010-3-4 14:42:04

本帖最后由 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

afan 发表于 2010-3-4 14:52:33

具体软件具体对待,有些并不在注册表的这个位置写入数据

ac5474012 发表于 2010-3-4 14:58:33

这也是我的担心所在也许我应该再想想清楚再发询问。

ac5474012 发表于 2010-3-4 15:02:23

我能自己回答吗?

llztt 发表于 2010-3-4 17:53:03

每个软件写注册表的位置都不同,甚至同一软件版本不同也会注册表位置不同,当然还有写文件名称和位置都可能不同,所以这个得具体软件具体分析

131738 发表于 2010-3-5 00:31:38

5楼的靠普。。。。。。。。。。。。。。。。

maxkingmax 发表于 2010-3-5 08:15:22

判断注册表相应键值,检测相应文件夹或文件是否存在等~!

qqgghh1 发表于 2010-3-5 15:49:52

我一般用这个:
$i = 0
While 1
                        $i+=1
                        $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $i)
                        If @error <> 0 then ExitLoop
                        ...........       
                WEnd

拿分走人

boyhong 发表于 2010-3-5 16:09:37

你先把你这个软件手工安装一遍。然后在注册表找找看他的共性的地方。比如记录安装路径的键值等等。。
然后你在写这个脚本的开头加个if判断一下就可以搞定了:
比如:
$test= RegRead("HKCU\Software\test","test")
If$test<>""then
msgbox(16,"","您已经安装过本软件了。")
exit
EndIf

lubb 发表于 2010-3-5 16:26:21

好主意,顶你哟。。

KgtFaith 发表于 2010-3-5 18:31:34

自己定制软件安装也可以,自定义写入键值,然后可以读取该键值,能读取就是已经安装过了。。空的话就是没有安装。。

lanfengc 发表于 2010-3-5 20:51:57

$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已安装与否

ac5474012 发表于 2010-3-8 16:28:02

为什么在搜索两个不同的区域?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
我知道在这个区域里面写着软件的信息,和软件添加删除程序的位置。
HKEY_LOCAL_MACHINE\SOFTWARE
这个名叫软件的区域里面写的是什么呢?

还有现在注册表查找就是最好的方法吗?我还以为会有其他方法。

tjlzh 发表于 2010-3-9 11:11:57

再加上判断软件的版本就更加完美了
页: [1] 2
查看完整版本: 如何确认需要安装的软件是否已经安装过了?