I want to write the following binary data to a key in my registry: [40 18 00 00 00 c0 46 c4] The first two bytes write, but when I reach the first "00", everything after that fails to write.
Here is my code:
'===========================
'Write binary data: [40 18 00 00 00 c0 46 c4] to registry @ HKLM\SYSTEM\Setup\test
#COMPILE EXE
$INCLUDE "WIN32API.INC"
FUNCTION SetReg(BYVAL hLocation AS DWORD, BYVAL sSubKeys AS STRING, BYVAL sValueName AS STRING, BYVAL sData AS STRING) AS LONG
LOCAL hKey AS DWORD, zRegName AS ASCIIZ * 20, zRegVal AS ASCIIZ * 20, dwType AS DWORD, dwSize AS DWORD
zRegVal = sData
zRegName = sValueName
IF RegCreateKeyEx(hLocation, TRIM$(sSubKeys, "\"), 0, "", 0, %KEY_WRITE, BYVAL %Null, hKey, BYVAL %Null) = %ERROR_SUCCESS THEN
' Set length of data...
dwSize = LEN(zRegVal)
'dwType = %REG_SZ
dwType = %REG_BINARY
IF RegSetValueEx(hKey, zRegName, 0, dwType, zRegVal, dwSize) = %ERROR_SUCCESS THEN FUNCTION = %True
RegCloseKey hKey
END IF
END FUNCTION
FUNCTION PBMAIN () AS LONG
hData$=CHR$(&H40)& CHR$(&H18)& CHR$(0)& CHR$(0)& CHR$(0)& CHR$(&H46)& CHR$(&HC4)
IF SetReg(%HKEY_LOCAL_MACHINE, "SYSTEM\Setup", "test", hData$) THEN
STDOUT "Success"
ELSE
STDOUT "Error"
END IF
END FUNCTION
Here is my code:
'===========================
'Write binary data: [40 18 00 00 00 c0 46 c4] to registry @ HKLM\SYSTEM\Setup\test
#COMPILE EXE
$INCLUDE "WIN32API.INC"
FUNCTION SetReg(BYVAL hLocation AS DWORD, BYVAL sSubKeys AS STRING, BYVAL sValueName AS STRING, BYVAL sData AS STRING) AS LONG
LOCAL hKey AS DWORD, zRegName AS ASCIIZ * 20, zRegVal AS ASCIIZ * 20, dwType AS DWORD, dwSize AS DWORD
zRegVal = sData
zRegName = sValueName
IF RegCreateKeyEx(hLocation, TRIM$(sSubKeys, "\"), 0, "", 0, %KEY_WRITE, BYVAL %Null, hKey, BYVAL %Null) = %ERROR_SUCCESS THEN
' Set length of data...
dwSize = LEN(zRegVal)
'dwType = %REG_SZ
dwType = %REG_BINARY
IF RegSetValueEx(hKey, zRegName, 0, dwType, zRegVal, dwSize) = %ERROR_SUCCESS THEN FUNCTION = %True
RegCloseKey hKey
END IF
END FUNCTION
FUNCTION PBMAIN () AS LONG
hData$=CHR$(&H40)& CHR$(&H18)& CHR$(0)& CHR$(0)& CHR$(0)& CHR$(&H46)& CHR$(&HC4)
IF SetReg(%HKEY_LOCAL_MACHINE, "SYSTEM\Setup", "test", hData$) THEN
STDOUT "Success"
ELSE
STDOUT "Error"
END IF
END FUNCTION
Comment