无法使用VBScript

时间:2016-02-15 17:06:18

标签: vbscript outlook registry thin-client

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

HKCU\Software\Microsoft\Office\15.0\ [申请名称] \Resiliency\DisabledItems

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

我编写了下面的脚本,但所有这些似乎都是通过密钥迭代直到它到达Outlook,此时它确保密钥不存在(即使它确实存在),然后脚本停止运行。

'***********************************************'
'------------------------------------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之后停止检查。 / p>

我是否错过了某种错误,或者我误解了注册表的工作原理?

1 个答案:

答案 0 :(得分:0)

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

通过Active Directory User -> Properties -> Profile

从服务器调用登录脚本

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

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