ELLKKLLE 发表于 2010-5-13 16:37:20

VBS:怎么判断某个注册表值是否存在?

VBS:怎么判断某个注册表值是否存在?好像没有现成的函数。

feiyunkai 发表于 2010-5-13 18:14:00

判断注册表项下是否存在指定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
                Ifi=UBound(arrValueNames) and arrValueNames(i)<>checkkey Then
                        Msgboxcheckkey&"不存在"
                End If
Next

End Function

[ 本帖最后由 feiyunkai 于 2010-5-13 18:15 编辑 ]

ELLKKLLE 发表于 2010-5-14 08:52:05

我先试下,先谢谢了

yahuu 发表于 2010-8-5 13:49:11

arrValueNames 从哪里来的?

feiyunkai 发表于 2010-8-5 17:45:52

原帖由 yahuu 于 2010-8-5 13:49 发表 http://bbs.51testing.com/images/common/back.gif
arrValueNames 从哪里来的?

oReg.EnumValues intRoot,strKeyPath,arrValueNames的作用:将intRoot_strKeyPath路径下所有键的名称存放在数组arrValueNames中
上面的代码中,arrValueNames 存放的是注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer下的所有键的名称

yahuu 发表于 2010-8-14 11:25:17

再请教一下,这是查找已经存在的项下的值
那怎么查找某个项是否存在,比如Microsoft下是否存在Internet Explorer
替换到上一级报错
页: [1]
查看完整版本: VBS:怎么判断某个注册表值是否存在?