找回密码
 加入
搜索
查看: 17181|回复: 20

[AU3基础] 如何确认需要安装的软件是否已经安装过了?

 火.. [复制链接]
发表于 2010-3-4 14:42:03 | 显示全部楼层 |阅读模式
悬赏200金钱已解决
我的问题是:我想做一个自动安装软件的AU3脚本,但是如何检测软件是否已经安装了?
以上是我的主要问题,我要做的是不管用什么方法解决这个问题。下面的问题都是达到这个目的。

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

最佳答案

查看完整内容

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
发表于 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
发表于 2010-3-4 14:52:33 | 显示全部楼层
具体软件具体对待,有些并不在注册表的这个位置写入数据
 楼主| 发表于 2010-3-4 14:58:33 | 显示全部楼层
这也是我的担心所在也许我应该再想想清楚再发询问。
 楼主| 发表于 2010-3-4 15:02:23 | 显示全部楼层
我能自己回答吗?
发表于 2010-3-4 17:53:03 | 显示全部楼层
每个软件写注册表的位置都不同,甚至同一软件版本不同也会注册表位置不同,当然还有写文件名称和位置都可能不同,所以这个得具体软件具体分析
发表于 2010-3-5 00:31:38 | 显示全部楼层
5楼的靠普。。。。。。。。。。。。。。。。
发表于 2010-3-5 08:15:22 | 显示全部楼层
判断注册表相应键值,检测相应文件夹或文件是否存在等~!
发表于 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

拿分走人
发表于 2010-3-5 16:09:37 | 显示全部楼层
你先把你这个软件手工安装一遍。然后在注册表找找看他的共性的地方。比如记录安装路径的键值等等。。
然后你在写这个脚本的开头加个if判断一下就可以搞定了:
比如:
$test= RegRead("HKCU\Software\test","test")
If  $test<>""  then
msgbox(16,"","您已经安装过本软件了。")
exit
EndIf
发表于 2010-3-5 16:26:21 | 显示全部楼层
好主意,顶你哟。。
发表于 2010-3-5 18:31:34 | 显示全部楼层
自己定制软件安装也可以,自定义写入键值,然后可以读取该键值,能读取就是已经安装过了。。空的话就是没有安装。。
发表于 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已安装与否
 楼主| 发表于 2010-3-8 16:28:02 | 显示全部楼层
为什么在搜索两个不同的区域?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
我知道在这个区域里面写着软件的信息,和软件添加删除程序的位置。
HKEY_LOCAL_MACHINE\SOFTWARE
这个名叫软件的区域里面写的是什么呢?

还有现在注册表查找就是最好的方法吗?我还以为会有其他方法。
发表于 2010-3-9 11:11:57 | 显示全部楼层
再加上判断软件的版本就更加完美了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 03:37 , Processed in 0.081024 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表