「VBScript」レジストリの操作

VBScript 使ってレジストリの操作を行なってみたので、その時のメモ。
以下の操作を行なってみました。

1. 読み出し、書き込み、削除
2. 存在のチェック

以下、使用した VBScript です。
Java 関連のレジストリで動作確認してますが、特に意味はないです。

1. 取得

Set WshShell = CreateObject("WScript.Shell")
reg1 = "HKCU\Software\JavaSoft\Java Update\Policy\LastUpdateBeginTime"
WScript.Echo WshShell.RegRead(reg1)

reg2 = "HKCU\Software\JavaSoft\Java Update\Policy\Hoge"
rtn2 = WshShell.RegWrite(reg2, 0, "REG_DWORD")

reg3 = "HKCU\Software\JavaSoft\Java Update\Policy\Uga"
rtn3 = WshShell.RegWrite(reg3, 0, "REG_BINARY")

reg4 = "HKCU\Software\JavaSoft\Java Update\Policy\Oro"
rtn4 = WshShell.RegWrite(reg4, "Oro", "REG_SZ")

'上記で追加したレジストリの削除する
'WshShell.RegDelete(reg2)
'WshShell.RegDelete(reg3)
'WshShell.RegDelete(reg4)

ドキュメントは以下になる。
・RegRead
http://msdn.microsoft.com/ja-jp/library/cc364416.aspx
・RegWrite
http://msdn.microsoft.com/ja-jp/library/cc364417.aspx
・RegDelete
http://msdn.microsoft.com/ja-jp/library/cc364415.aspx


2. 存在のチェック

'Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
'Const HKEY_LOCAL_MACHINE = &H80000002
'Const HKEY_USERS = &H80000003
'Const HKEY_CURRENT_CONFIG = &H80000005
 
strComputer = "." 
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 
  
strKeyPath = "Software\JavaSoft\Java Update\Policy" 
strValueName = "LastUpdateBeginTime" 
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue 
 
If IsNull(strValue) Then 
    Wscript.Echo "The registry key does not exist." 
Else 
    Wscript.Echo "The registry key exists." 
End If 

GetStringValue の辺りは、チェックするレジストリの型にあわせて変更する必要があるっぽい。

以下を参考にさせていただきました。
http://gallery.technet.microsoft.com/scriptcenter/e9dcec76-cc6b-46b7-95b1-39ba7e81765e

ドキュメントは以下になる。
・GetStringValue
http://msdn.microsoft.com/en-us/library/windows/desktop/aa390788(v=vs.85).aspx
・GetDWORDValue
http://msdn.microsoft.com/en-us/library/windows/desktop/aa390445(v=vs.85).aspx
・GetBinaryValue
http://msdn.microsoft.com/en-us/library/windows/desktop/aa390440(v=vs.85).aspx


以上です。