51Testing软件测试论坛

标题: VBS:怎么判断某个注册表值是否存在? [打印本页]

作者: ELLKKLLE    时间: 2010-5-13 16:37
标题: VBS:怎么判断某个注册表值是否存在?
VBS:怎么判断某个注册表值是否存在?好像没有现成的函数。
作者: feiyunkai    时间: 2010-5-13 18:14
标题: 判断注册表项下是否存在指定KEY,代码如下
HKEY_LOCAL_MACHINE=&H80000002  
HKEY_CURRENT_USER=&H80000001  
'判断HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer下是否存在Build这个键
Allkey HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Internet Explorer","Build"

Function Allkey(intRoot,strKeyPath,checkkey)  

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")  
oReg.EnumValues intRoot,strKeyPath,arrValueNames
For i=0 To UBound(arrValueNames)  
                oReg.GetStringValue intRoot, strKeyPath,arrValueNames(i),strvalue  
                If arrValueNames(i)=checkkey Then
                                Msgbox checkkey&"存在"
                                Exit for
                End If
                If  i=UBound(arrValueNames) and arrValueNames(i)<>checkkey Then
                        Msgbox  checkkey&"不存在"
                End If
Next

End Function

[ 本帖最后由 feiyunkai 于 2010-5-13 18:15 编辑 ]
作者: ELLKKLLE    时间: 2010-5-14 08:52
我先试下,先谢谢了
作者: yahuu    时间: 2010-8-5 13:49
arrValueNames 从哪里来的?
作者: feiyunkai    时间: 2010-8-5 17:45
原帖由 yahuu 于 2010-8-5 13:49 发表
arrValueNames 从哪里来的?


oReg.EnumValues intRoot,strKeyPath,arrValueNames的作用:将intRoot_strKeyPath路径下所有键的名称存放在数组arrValueNames中
上面的代码中,arrValueNames 存放的是注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer下的所有键的名称
作者: yahuu    时间: 2010-8-14 11:25
再请教一下,这是查找已经存在的项下的值
那怎么查找某个项是否存在,比如Microsoft下是否存在Internet Explorer
替换到上一级报错




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