Solved

Write Binary Value on vbscript

Posted on 2014-09-24
28
434 Views
Last Modified: 2014-11-09
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.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 & "\Test" & "\Password", strComputer , "REG_BINARY"
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", strComputer & "_For" , "REG_BINARY"


Set wshShell = Nothing
0
Comment
Question by:David Regev
  • 11
  • 8
  • 3
28 Comments
 
LVL 16

Expert Comment

by:theo kouwenhoven
ID: 40343412
Hi David,

AFAIK you have to write it in Hex value:

Example for wb:WshShell.Regwrite "HKCU\New\Computer\MyKey", &H00123456, "REG_BINARY"

I assume this would be a stringvariable if you like to make it more flexible
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40343719
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.
0
 

Author Comment

by:David Regev
ID: 40345461
Hi aikimark

How do i use ADODB.Stream in my VB Script ?

Thx

David
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 45

Accepted Solution

by:
aikimark earned 500 total points
ID: 40345836
In my RTF conversion article (
http:A_14035-RichText-to-Text-conversion-fast-and-free.html ), I include this sample code for the VBScript developers.
Function StringToByteArray(parmString)
	Dim OStream
	Set oStream = CreateObject("ADODB.Stream")
	oStream.Open
	oStream.Type = 1		'=adTypeBinary
	oStream.WriteText parmString
	StringToByteArray = oStream.Read
End Function

Open in new window


MS ADODB.Stream reference:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675032(v=vs.85).aspx
0
 

Author Comment

by:David Regev
ID: 40346220
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.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 & "\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
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40346275
Try this:
wshShell.RegWrite "HKCU\New\" & strComputer1 & "_For" & "\Test" & "\Password", StringToByteArray(strComputer & "_For") , "REG_BINARY"

Open in new window

0
 

Author Comment

by:David Regev
ID: 40346829
Hi aikimark

now i got this error -  ADODB.Stream: Operation is not allowed in this context.
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40346849
What statement and what was the error number?
0
 

Author Comment

by:David Regev
ID: 40346903
Hi

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

Open in new window

0
 
LVL 45

Expert Comment

by:aikimark
ID: 40347198
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.

RegWrite will write at most one DWORD to a REG_BINARY value. Larger values are not supported with this method.
0
 

Author Comment

by:David Regev
ID: 40347263
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
 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

Open in new window

can you try this and see what wrong please and how should i fix it ?

David
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40347488
Do you need to know how to convert a plain text string into a hex (string) encoding?
0
 

Author Comment

by:David Regev
ID: 40347546
I need to use something that will work with my script
0
 

Author Comment

by:David Regev
ID: 40347562
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
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40348863
please answer the question that I asked.
0
 

Author Comment

by:David Regev
ID: 40404335
this is not  a solution to your problem
0
 

Author Comment

by:David Regev
ID: 40417950
can you close this question  ?
0
 

Author Comment

by:David Regev
ID: 40417953
I've requested that this question be deleted for the following reason:

test
0
 

Author Comment

by:David Regev
ID: 40418048
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
0
 
LVL 16

Expert Comment

by:theo kouwenhoven
ID: 40417959
aikimark give the right answer at least for 99%
0
 
LVL 45

Expert Comment

by:aikimark
ID: 40421299
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.
0
 
LVL 16

Expert Comment

by:theo kouwenhoven
ID: 40422257
ID: 40345836
Was a good solution, if David can't implement it, it will not make the solution wrong.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

#Citrix #POC #XenDesktop #vCenter #VMware #ESX
I use more than 1 computer in my office for various reasons. Multiple keyboards and mice take up more than just extra space, they make working a little more complicated. Using one mouse and keyboard for all of my computers makes life easier. This co…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

785 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question