51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3493|回复: 4
打印 上一主题 下一主题

[求助] QTP如何搜索注册表中特定键值?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-1-9 15:27:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QTP如何搜索注册表中特定键值?

例如,具体遇到这样一个问题:
注册表中 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{abcd}\"项下 的
DisplayName键值是"Picasa".
DisplayVersion键值是"2.0".

我想得到的是这个picasa的版本值"2.0",用以下语句即可以得到Version=2.0
-----------------------------------------------------------------------------------------------------
Set WshShell  =  CreateObject("Wscript.Shell")      
Version  =  WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{abcd}\\DisplayVersion")
-----------------------------------------------------------------------------------------------------

但是问题是,一般随着picasa版本的变化,这个注册表的路径也会发生变化,比如,由
"HKEY_LOCAL_MACHINE\...\Uninstall\{abcd}\"
变成
"HKEY_LOCAL_MACHINE\...\Uninstall\{efgh}\" .

此时,"HKEY_LOCAL_MACHINE\...\Uninstall\{efgh}\" 项下的
DisplayVersion键值变成是"3.0".
而DisplayName键值依然是固定的"Picasa".

现在问各位QTP高手达人,如何实现在"HKEY_LOCAL_MACHINE\...\Uninstall\"下搜索到
包含键名=DisplayName,键值="Picasa"的 注册表项
"HKEY_LOCAL_MACHINE\...\Uninstall\{abcd}\"
或者
"HKEY_LOCAL_MACHINE\...\Uninstall\{efgh}\" ?

从而不管"HKEY_LOCAL_MACHINE\...\Uninstall\{abcd}\"中的{abcd}怎么变化,
都能获取到 Version = DisplayVersion的键值 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2008-1-10 01:15:23 | 只看该作者
    建议楼主看看 QTP 是否有对 注册表进行操作的 API 再说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2008-1-10 01:17:00 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-1-10 12:16:41 | 只看该作者
    给你写了个例子,你自己参考吧,直接读取一个根目录的函数估计是没有。只能导出来处理。
    Set wShell=CreateObject("WScript.Shell")
    wShell.run "cmd /c reg export"&" HKLM\SAM\SAM c:\liang.txt"
    Wait 2

    Set fso=CreateObject("Scripting.FileSystemObject")
    Set tobj=fso.getFile("c:\liang.txt")
    Set tobj=tobj.OpenAsTextStream(1,-2)

    Set RegEx=New RegExp
    RegEx.Pattern=".*liang.*"
    RegEx.IgnoreCase=True
    RegEx.Global=True

    tString=tobj.ReadAll
    Set Match=RegEx.Execute(tString)


    For Each Mac in Match
            Call FoundKey(Mac)
    Next

    Public Function FoundKey(keyvalue)
            '.........剩下的就不麻烦了吧?自己写吧
    End Function
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2008-1-10 12:47:00 | 只看该作者
    非常感谢jackymail 的回复,学习了!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 01:42 , Processed in 0.074643 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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