好的,我在这里的第一篇文章,所以希望我不要搞得太糟糕,把整个互联网放在我身上......
我有一个简单的函数来检查是否存在注册表项。它按照我的预期工作,直到我设置“选项显式”。然后它没有。没有错误,它只是没有返回正确的值,我无法弄清楚为什么。毫无疑问,这是一个愚蠢的错误,当你们都指出它是多么愚蠢时,我很可能会羞愧地离开,但是只要你告诉我我先做错了什么,那就值得了。
以下是代码:
'option explicit
if keyExists("HKEY_CURRENT_USER\Software\WritingInCode\Company\CreateCabinetDB\") then
wscript.echo "Key exists"
else
wscript.echo "Key doesn't exist"
end if
function keyExists(key)
dim objShell : set objShell = createObject("WScript.Shell")
on error resume next
entry = objShell.regRead(key)
select case err.number
case 0: keyExists = true
case else: keyExists = false
end select
err.clear
set objShell = nothing
end function
答案 0 :(得分:1)
好的,这是正在发生的事情。
option explicit
以便在遇到非声明变量时,解释器会引发错误。entry
之前,您可以使用on error resume next
关闭错误处理。entry
并引发错误,但未报告。select case
语句解释。因此keyExists
始终返回false
。在尝试使用entry
之前声明dim entry : entry = objShell.regRead(key)
来解决问题:
{{1}}