Мне нужно перебрать реестр для каждого приложения, для которого существует следующий ключ:
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.
Я пропустил какую-то ошибку или я неправильно понимаю, как работает реестр?