David Regev
asked on
Write Binary Value on vbscript
Hi
i need to write vb script that enter value in binary but i got error
(13, 1) Microsoft VBScript runtime error: Type mismatch
is there any way to to fix this problem
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Netw ork")
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
Set wshShell = Nothing
i need to write vb script that enter value in binary but i got error
(13, 1) Microsoft VBScript runtime error: Type mismatch
is there any way to to fix this problem
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Netw
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
Set wshShell = Nothing
If you need a binary array in the VBScript environment, you will need to use ADODB.Stream
I have stored 'binary' data in registries as a string of hex characters.
I have seen other instances where binary data was Base64 encoded and the encoded string was stored.
I have stored 'binary' data in registries as a string of hex characters.
I have seen other instances where binary data was Base64 encoded and the encoded string was stored.
ASKER
Hi aikimark
How do i use ADODB.Stream in my VB Script ?
Thx
David
How do i use ADODB.Stream in my VB Script ?
Thx
David
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I'm sorry , I'm new in this this issue i don't under stand how can i mix the vb script with this function
i want to use the computer name ( strComputer ) on the password section or the computer name ( strComputer & "_For" ) also in password section with binary value
but istill got this error message
Thx
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Netw ork")
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
Set wshShell = Nothing
Function StringToByteArray(parmStri ng)
Dim OStream
Set OStream = CreateObject("ADODB.Stream ")
oStream.Open
oStream.Type = 1 '=adTypeBinary
oStream.WriteText parmString
StringToByteArray = oStream.Read
End Function
i want to use the computer name ( strComputer ) on the password section or the computer name ( strComputer & "_For" ) also in password section with binary value
but istill got this error message
Thx
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Netw
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
Set wshShell = Nothing
Function StringToByteArray(parmStri
Dim OStream
Set OStream = CreateObject("ADODB.Stream
oStream.Open
oStream.Type = 1 '=adTypeBinary
oStream.WriteText parmString
StringToByteArray = oStream.Read
End Function
Try this:
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", StringToByteArray(strComputer & "_For") , "REG_BINARY"
ASKER
Hi aikimark
now i got this error - ADODB.Stream: Operation is not allowed in this context.
now i got this error - ADODB.Stream: Operation is not allowed in this context.
What statement and what was the error number?
ASKER
Hi
thx for the response the error - Untitled.vbs(27, 2) ADODB.Stream: Operation is not allowed in this context.
thx for the response the error - Untitled.vbs(27, 2) ADODB.Stream: Operation is not allowed in this context.
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Network")
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", StringToByteArray(strComputer & "_For") , "REG_BINARY"
'wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
'wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
Set wshShell = Nothing
Function StringToByteArray(parmString)
Dim OStream
Set OStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1 '=adTypeBinary
oStream.WriteText parmString
StringToByteArray = oStream.Read
End Function
Is the computer name more than four characters?
Although the error occurs in the function, maybe it should be viewed in the context of the RegWrite method. According to MS, RegWrite has an 8 byte limit.
Although the error occurs in the function, maybe it should be viewed in the context of the RegWrite method. According to MS, RegWrite has an 8 byte limit.
RegWrite will write at most one DWORD to a REG_BINARY value. Larger values are not supported with this method.
ASKER
Hi aikimark
the computer name is more then 4 characters so i try to use other method that i find and still it doesn't work
David
the computer name is more then 4 characters so i try to use other method that i find and still it doesn't work
Const OverwriteIfExist = -1
Const FailIfExist = 0
Const OpenAsASCII = 0
Const OpenAsUnicode = -1
Const OpenAsDefault = -2
Set wshShell = CreateObject( "WScript.Shell" )
Set objNetwork = CreateObject("Wscript.Network")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("Wscript.Shell")
sTmpFile = oShell.ExpandEnvironmentStrings("%TEMP%") & "\Test.reg"
Set fFile = oFSO.CreateTextFile(sTmpFile, OverwriteIfExist, OpenAsASCII)
strComputer = LCase (objNetwork.ComputerName)
strComputer1 = objNetwork.ComputerName
wshShell.RegWrite "HKCU\New\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test\",""
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test\",""
'wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", StringToByteArray(strComputer & "_For"), "REG_BINARY"
'wshShell.RegWrite "HKCU\New\" & strComputer1 & "\Test" & "\Password", strComputer , "REG_BINARY"
'wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"
fFile.WriteLine "Windows Registry Editor Version 5.00"
fFile.WriteLine
fFile.WriteLine "[HKEY_CURRENT_USER\New\DUDURE_For\Test]"
fFile.WriteLine """Password""=hex:" & strComputer
fFile.Close
' Import the registry file
oShell.Run "regedit /s " & sTmpFile, 0, True
oFSO.DeleteFile sTmpFile
Set wshShell = Nothing
Function StringToByteArray(parmString)
Dim OStream
Set OStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1 '=adTypeBinary
oStream.WriteText parmString
StringToByteArray = oStream.Read
End Function
can you try this and see what wrong please and how should i fix it ?David
Do you need to know how to convert a plain text string into a hex (string) encoding?
ASKER
I need to use something that will work with my script
ASKER
Hi
What the script need to do is
1 . Create the registry key
2 . Create password registry key with binary value and the binary value will be the computer name
What the script need to do is
1 . Create the registry key
2 . Create password registry key with binary value and the binary value will be the computer name
please answer the question that I asked.
ASKER
this is not a solution to your problem
ASKER
can you close this question ?
ASKER
I've requested that this question be deleted for the following reason:
test
test
ASKER
I've requested that this question be deleted for the following reason:
i didnt got the write answer for this post please delete or close this case
i didnt got the write answer for this post please delete or close this case
aikimark give the right answer at least for 99%
According to Murphey2, I've answered 99% of the question, but I can't tell which of my comments should be accepted. With the lack of participation and English skills of the OP, I think this question is abandoned/lost.
ID: 40345836
Was a good solution, if David can't implement it, it will not make the solution wrong.
Was a good solution, if David can't implement it, it will not make the solution wrong.
AFAIK you have to write it in Hex value:
Example for wb:WshShell.Regwrite "HKCU\New\Computer\MyKey",
I assume this would be a stringvariable if you like to make it more flexible