首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用VBScript枚举和删除注册表值

无法使用VBScript枚举和删除注册表值
EN

Stack Overflow用户
提问于 2016-02-15 17:06:17
回答 1查看 233关注 0票数 0

我需要遍历注册表中存在以下项的每个应用程序:

HKCU\Software\Microsoft\Office\15.0\应用程序名称\Resiliency\DisabledItems

这样我就可以删除存储在这里的任何值。

我编写了下面的脚本,但似乎所做的就是遍历键直到到达Outlook,此时它向我保证键不存在(尽管它确实存在),然后脚本停止运行。

代码语言:javascript
复制
'***********************************************'
'------------------------------------Add-In Keys'
'***********************************************'
Sub AddInKeys()
    On Error Resume Next

    strOfficePath = "Software\Microsoft\Office\15.0\"
    objReg.EnumKey conHKEY_CURRENT_USER, strOfficePath, arrOfficeSubKeys

    for Each key in arrOfficeSubKeys        
        ' Check if our DisabledItems key exists
        If regExists("HKCU\Software\Microsoft\Office\15.0\" & key & "\Resiliency\DisabledItems\") Then          
            ' If it does - enumerate the values under this key ...
            objReg.EnumValues conHKEY_CURRENT_USER, strOfficePath & key & "\Resiliency\DisabledItems\", arrKeyValues
            For Each value in arrKeyValues              
                ' Delete key VALUE, but only IF it is not blank (this will be the default value)
                If value <> "" Then
                    objShell.RegDelete "HKCU\Software\Microsoft\Office\15.0\" & key & "\Resiliency\DisabledItems\" & value
                End If
            Next
        End If
    Next    

    If Err <> 0 Then
        strMessage = "ERROR: Sub - Add-In Keys"
    End If
End Sub

'***********************************************'
'---Function to check existence of registry keys'
'***********************************************'
Function regExists(sKey)    
    ON ERROR RESUME NEXT

    regExists = objShell.RegRead(sKey)
    If Err.Number = 0 Then
        regExists = True
    Else
        regExists = False
        Err.Number = 0
    End If

    If Err <> 0 Then
        strMessage = "ERROR: Sub - regExists"
    End If
End Function

一些背景:当我在开发机器上运行脚本时,它似乎工作得很好。它枚举所有键和所有值,并删除我需要删除的那些。但是,当我从一个瘦客户机(这是部署脚本的地方--在登录脚本中)运行它时,我看到了上面描述的行为。

当我从测试用户(登录到瘦客户端)加载注册表单元时,我可以看到除了正在检查的键之外还有更多的键,但出于某种原因,它在Outlook之后停止检查。

我是否遗漏了某种错误,还是我误解了注册表的工作方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 16:34:20

这是由于我们的Citrix和Windows环境的设置方式。

通过Active User -> Properties -> Profile从服务器调用登录脚本

上面我遇到问题的脚本是在机器上本地执行的,因此没有出现应用程序的注册表项,因为这些应用程序都安装在服务器上。

在将我的代码添加到服务器托管的登录脚本后,它能够检测和删除所有所需的键值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35415069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档