次のキーが存在する各アプリケーションのレジストリを反復処理する必要があります。
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 の後にチェックが停止します。
なんらかのエラーを見落としているのでしょうか、それともレジストリの仕組みを誤解していますか?