51Testing软件测试论坛

标题: QTP如何搜索注册表中特定键值? [打印本页]

作者: sonyhell    时间: 2008-1-9 15:27
标题: QTP如何搜索注册表中特定键值?
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的键值 ?
作者: walker1020    时间: 2008-1-10 01:15
建议楼主看看 QTP 是否有对 注册表进行操作的 API 再说
作者: walker1020    时间: 2008-1-10 01:17
请参考 http://bbs.51testing.com/viewthread.php?tid=92476
作者: jackymail    时间: 2008-1-10 12:16
给你写了个例子,你自己参考吧,直接读取一个根目录的函数估计是没有。只能导出来处理。
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
作者: walker1020    时间: 2008-1-10 12:47
非常感谢jackymail 的回复,学习了!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2