ブログネタ
エクセルVBA に参加中!
こんにちは、ippan_seです。
タイトルの件ですが、レジストリの削除に少し手間取ったので紹介します。
 

VBSでレジストリを削除する方法の1つに、WshShellオブジェクトのRegDeleteメソッドがあります。
これは様々なサイトで紹介されているのですが、これには1つ問題があります。
サブキーが格納されているキーを削除できないのです。
どういうことかというと、こんな感じに、サブキーがあるとして
サブキー

この親のキーを削除しようとするとエラーがでます。
BlogPaint


こんなメッセージではサブキーが含まれていることが理由とは判断できにくいですよね。もー。


では、私がどのように削除したのかというと、DOSのREGコマンドをで削除しました。
以下サンプルコードです。
----------------------------------------------------------------------------
Dim objWshShell
Dim result
Set objWshShell = WScript.CreateObject("WScript.Shell")

'削除コマンド コマンドの/Fは強制削除。Runメソッドの0はウインドウ非表示、Trueは同期処理
result = objWshShell.Run("REG DELETE HKEY_CURRENT_USER\A_test /F", 0, True)

'結果判定
If result = 0 Then
  WScript.echo "成功"
Else
  WScript.echo "失敗"
End If

Set objWshShell = Nothing
----------------------------------------------------------------------------

とっても簡単です。

ちなみに、VBSだけでゴリゴリ消す方法もあるみたいです。
サブキーを先に全て削除してから、親キーを削除するという煩雑な方法ですが・・・興味ある方はここのサイトから確認してください。

Windows スクリプト ホストの RegDelete メソッドは、サブキーが格納されているキーを削除できません。 

(2016-03-13)