KIKI,
Code: Select all
Define.COMateObject oReg
strComputer.s = "."
HKEY_CURRENT_USER = $80000001
strKeyPath.s = "Console"
strValueName.s = "ColorTable00"
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetDWORDValue(" + Str(HKEY_CURRENT_USER) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
Debug dwValue
oReg\Release()
or, in a procedure:
Code: Select all
Procedure.s GetDWORDValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetDWORDValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
dw_dword_value$ = Str(dwValue)
oReg\Release()
ProcedureReturn dw_dword_value$
EndProcedure
HKEY_CURRENT_USER = $80000001
Debug GetDWORDValue(HKEY_CURRENT_USER, "Console", "ColorTable00")
"ColorTable00" is a DWORD value not a REG_SZ, only string values get the PeekS treatment
and for REG_SZ,
Code: Select all
Procedure.s GetStringValuex(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetStringValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
sValue$ = PeekS(dwValue, -1, #PB_Unicode)
SysFreeString_(dwValue)
oReg\Release()
ProcedureReturn sValue$
EndProcedure
and in case anyone wants them, here are some from testing I was doing, Have not checked them all yet, only used the GetStringValue and GetDWORDValue so far, did not need the rest really but put them together just in case :
Code: Select all
#HKEY_CLASSES_ROOT = $80000000
#HKEY_CURRENT_USER = $80000001
#HKEY_LOCAL_MACHINE = $80000002
#HKEY_USERS = $80000003
#HKEY_CURRENT_CONFIG = $80000005
#KEY_QUERY_VALUE = 1
#KEY_SET_VALUE = 2
#KEY_CREATE_SUB_KEY = 4
#KEY_ENUMERATE_SUB_KEYS = 8
#KEY_NOTIFY = 16
#KEY_CREATE = 32
#DELETE = 65536
#READ_CONTROL = 131072
#WRITE_DAC = 262144
#WRITE_OWNER = 524288
#REG_ALL_Permissions = #READ_CONTROL | #KEY_SET_VALUE | #KEY_CREATE_SUB_KEY | #KEY_CREATE | #DELETE | #WRITE_DAC | #WRITE_OWNER
; gets REG_SZ
Procedure.s GetStringValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetStringValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
sValue$ = PeekS(dwValue, -1, #PB_Unicode)
SysFreeString_(dwValue)
oReg\Release()
ProcedureReturn sValue$
EndProcedure
; gets REG_EXPAND_SZ
Procedure.s GetExpandedStringValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetExpandedStringValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
sValue$ = PeekS(dwValue, -1, #PB_Unicode)
SysFreeString_(dwValue)
oReg\Release()
ProcedureReturn sValue$
EndProcedure
; gets REG_MULTI_SZ
Procedure.s GetMultiStringValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetMultiStringValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
sValue$ = PeekS(dwValue, -1, #PB_Unicode)
SysFreeString_(dwValue)
oReg\Release()
ProcedureReturn sValue$
EndProcedure
; gets REG_DWORD
Procedure.s GetDWORDValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetDWORDValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
dw_dword_value$ = Str(dwValue)
oReg\Release()
ProcedureReturn dw_dword_value$
EndProcedure
; gets REG_QWORD
Procedure.s GetQWORDValue(hkey.i, strKeyPath.s, strValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("GetQWORDValue(" + Str(hkey) + ", '" + strKeyPath + "', '" + strValueName + "', " + Str(@dwValue) + " BYREF)")
sValue$ = PeekS(dwValue, -1, #PB_Unicode)
SysFreeString_(dwValue)
oReg\Release()
ProcedureReturn sValue$
EndProcedure
Procedure CheckAccess(hkey.i, sSubKeyName.s, lRequired.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
oReg\Invoke("CheckAccess(" + Str(hkey) + ", '" + sSubKeyName + "', '" + lRequired + "', " + Str(@dwValue) + " BYREF)")
If dwValue = #VARIANT_TRUE
dw_dword_value.i = #True
Else
dw_dword_value.i = #False
EndIf
oReg\Release()
ProcedureReturn dw_dword_value
EndProcedure
;Debug CheckAccess(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winsat", Str(#REG_ALL_Permissions))
Procedure CreateKey(hkey.i, strKeyPath.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("CreateKey(" + Str(hkey) + ", '" + strKeyPath + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
; KeyPath$ = "Software\MyKey\MySubKey"
; or....
; KeyPath$ = "Software\MyKey"
; Debug CreateKey(#HKEY_LOCAL_MACHINE, KeyPath$)
Procedure DeleteKey(hkey.i, sSubKeyName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("DeleteKey(" + Str(hkey) + ", '" + sSubKeyName + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
; SubKeyName$ = "Software\MyKey\MySubKey"
; or...
; SubKeyName$ = "Software\MyKey"
; Debug DeleteKey(#HKEY_LOCAL_MACHINE, SubKeyName$)
Procedure DeleteValue(hkey.i, sSubKeyName.s, sValueName.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("DeleteValue(" + Str(hkey) + ", '" + sSubKeyName + "','" + sValueName + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
; Debug DeleteValue(#HKEY_LOCAL_MACHINE, "Software\MyKey\MySubKey", "testvalue")
; creates a DWORD and sets value
; the value is fed to procedure in non-hex
Procedure SetDWORDValue(hkey.i, sSubKeyName.s, sValueName.s, uValue)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("SetDWORDValue(" + Str(hkey) + ", '" + sSubKeyName + "', '" + sValueName + "', '" + Str(uValue) + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
; Debug SetDWORDValue(#HKEY_LOCAL_MACHINE, "Software\MyKey\MySubKey", "MyValue", 250)
; creates a QWORD and sets value
Procedure SetQWORDValue(hkey.i, sSubKeyName.s, sValueName.s, uValue.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("SetQWORDValue(" + Str(hkey) + ", '" + sSubKeyName + "', '" + sValueName + "', '" + uValue + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
; Debug SetQWORDValue(#HKEY_LOCAL_MACHINE, "Software\MyKey\MySubKey", "MyValue", "129069160067291106")
; creates a REG_SZ and sets value
Procedure SetStringValue(hkey.i, sSubKeyName.s, sValueName.s, sValue.s)
Define.COMateObject oReg
strComputer.s = "."
oReg = COMate_GetObject("winmgmts:\\.\root\default:StdRegProv", "")
Ret.i = oReg\Invoke("SetStringValue(" + Str(hkey) + ", '" + sSubKeyName + "', '" + sValueName + "', '" + sValue + "')")
oReg\Release()
ProcedureReturn Ret
EndProcedure
;Debug SetStringValue(#HKEY_LOCAL_MACHINE, "Software\MyKey\MySubKey", "MyValue", "This is my value")