'1, 注册表读,写,删,注意区分主键 ,键值的区别,若为主键(key),则在strName后边加上反斜杠,键值则不用
Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")
'写key,后边值类型可自动转换
WshShell.RegWrite "HKCU/Software/ACME/FortuneTeller/",0
'写value
WshShell.RegWrite "HKCU/Software/ACME/FortuneTeller/Sub",21312,"REG_DWORD"
'RegRead注意参数需要加括号
WScript.Echo WshShell.RegRead("HKCU/Software/ACME/FortuneTeller/Sub")
'如果想创建某一个没有数据和数据类型的key,可通过创建一子key,然后删除子key的方式来实现
'但还有一个问题,若是该key已经存在怎么办呢?这就需要咱先遍历保存
'所以比较好的方法是用下边wmi的CreateKey
WshShell.RegDelete ("HKCU/Software/ACME/FortuneTeller/Sub")
'2, 使用WMI方法
Const HKEY_CURRENT_USER = &H80000001
'Const HKEY_CURRENT_MACHINE = &H80000002
Set objRegistry = GetObject ("winmgmts://./root/default:StdRegProv")
strKeyPath = "Software/ACME/FortuneTeller/Sub"
'十进制数组
arrValues = Array(0,144,232,149,164,78,98,99,58,83)
'由于一开始没重新打开注册表去查值
'发现strKeyPATH不存在,且set不成功(其实已经成功,strKeyPATH也存在了),Return = 0 And Err.Number = 0
'所以比较稳妥的是先调用AddKey
'通过返回值再决定是否进行下一步操作
Return = objRegistry.CreateKey(HKEY_CURRENT_USER, strKeyPath)
If (Return = 0) And (Err.Number = 0) Then
Wscript.Echo "key added successfully"
Return = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, strKeyPath, "Cache", arrValues)
If (Return = 0) And (Err.Number = 0) Then
Wscript.Echo "value set successfully"
Else
Wscript.Echo "CreateKey failed. Error = " & Return
End If
Else
Wscript.Echo "CreateKey failed. Error = " & Err.Number
End If
'strValue = "个人文件夹"
'objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath,"_LabelFromReg", strValue
'
'写DWORD:
'objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
'删除键值:
'objRegistry.DeleteValue HKEY_CURRENT_USER, strKeyPath, strValueName
'
'删除主键:
'objRegistry.DeleteKey HKEY_CURRENT_USER, strKeyPath