Next .vbs command line script let's you export data from registry in Windows 95 or Unicode format. You can export registry on local or remote machine, if you have access to the remote registry. The data are stored as ANSI or UNICODE text file. You can directly import the data using regedit. Save this script as exportkey.vbs.
| Export one registry key on local or remote machine using vbs command line script | |
|---|---|
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server
Sub ExportKey(FileName, KeyPath, MachineName, Unicode)
Dim S, Key, Out
'Get RegEdit.Server object
Set S = CreateObject("RegEdit.Server")
If Unicode Then
Out = "Windows Registry Editor Version 5.00"
Else
Out = "REGEDIT4"
End If
If Len(MachineName)>0 Then
s.Connect MachineName
End If
Set Key = s.GetKey(KeyPath)
'Get the registry data as a string
Out = Out & ExportOneKey(Key)
'Save the data to a file.
SaveFile FileName, Out, Unicode
End Sub
'Exports registry key to
Function ExportOneKey(Key)
On Error Resume Next
Dim Out, Value, SubKey
'wscript.echo "key:" & key.Name
'First line contains full path to the key in [] brackets
Out = vbCrLf & "[" & Key.Path & "]"
'Process each value.
For Each Value In Key.Values
'begin of the line - name of the value in quotes.
If Len(Value.Name) = 0 Then
Out = Out & vbCrLf & "@="
Else
Out = Out & vbCrLf & """" & Replace(Value.Name, """", "\""") & """="
End If
'Out each value by it's type.
Select Case Value.Type
Case vtDWord
Out = Out & "dword:" & Right("00000000" & LCase(Hex(Value.Value)), 8)
Case vtBinary
Out = Out & "hex:" & ToHex(Value.Binary, Len(Value.Name)+6)
Case vtString
Out = Out & """" & Replace(Value.Value, "\", "\\") & """"
Case Else
Out = Out & "hex(" & Value.Type & "):" & ToHex(Value.Binary, Len(Value.Name)+10)
End Select
Next
'Export subkeys
For Each SubKey In Key.SubKeys
Out = Out & ExportOneKey(SubKey)
Next
ExportOneKey = vbCrLf & Out
End Function
'Converts value to hex string separated by comma
Function ToHex(Value, C)
Dim Out, I
For I=1 To LenB(Value)
C = C + 3
If C>77 Then
Out = Out & "\" & vbCrLf & " "
c=3
End If
Out = Out & Right("0" & Hex(AscB(MidB(Value,I,1))), 2) & ","
Next
ToHex = LCase(Left(Out,Len(out)-1))
End Function
'*********************** Process command line
If Wscript.Arguments.Count < 1 Then
do_Help
Wscript.Quit
End If
Dim sKey, FileName, MachineName, Unicode
Unicode = True
'Read the script arguments
'First read and normalize the key path.
sKey = Wscript.Arguments(0)
If Right(sKey,1) = "\" Then sKey = Left(sKey, Len(sKey)-1)
If Left(sKey,2) = "\\" Then
Dim Pos
Pos = Instr(3, sKey, "\", 1)
MachineName = Mid(sKey, 3, Pos-1-2)
sKey = Mid(sKey, Pos+1)
End If
'second parameter is filename, or 95 - format.
If Wscript.Arguments.Count > 1 Then
FileName = Wscript.Arguments(1)
If FileName = "95" Then
Unicode = False
End If
End If
'Set default file name if the parameter is not specified
If Len(FileName) = 0 Then
FileName = Replace(sKey, "\", "_") & ".reg"
End If
'Normalize file name.
If Instr(FileName, ".") = 0 Then FileName = FileName & ".reg"
'Read the fourth optional agrument - 95 format.
If Wscript.Arguments.Count > 3 Then
Unicode = Wscript.Arguments(2)
If Unicode = "95" Then
Unicode = False
End If
End If
Wscript.Echo "Export of key: " & sKey & vbCrLf & _
"Machine name: " & MachineName & vbCrLf & _
"File name: " & FileName
'call export function
ExportKey FileName, sKey, MachineName, Unicode
Wscript.Quit
'*********************** Support functions
Sub do_Help
Wscript.Echo "Export registry key in Win9x/NT4 and unicode format" & vbCrLf & _
"2005 Antonin Foller, Motobit software" & vbCrLf & _
"" & vbCrLf & _
"run exportkey.vbs [\\machinename\]keypath [filename] [95]" & vbCrLf & _
"machinename - name or IP of the computer to export" & vbCrLf & _
"keypath - full registry path" & vbCrLf & _
"filename - file to export data" & vbCrLf & _
"95 - the export will be in Win9x/NT4 format" & vbCrLf & _
"" & vbCrLf & _
"samples" & vbCrLf & _
"exportkey.vbs ""HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server""" & vbCrLf & _
" - exports 'DNS Server' key on local computer in Unicode format" & vbCrLf & _
"" & vbCrLf & _
"exportkey.vbs ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office"" ms.reg 95" & vbCrLf & _
" - exports 'Office' key on local computer in Win95 format" & vbCrLf & _
"" & vbCrLf & _
"exportkey.vbs ""\\gen\HKLM\SOFTWARE\Microsoft\Intelligent Search"" 95" & vbCrLf & _
" - exports 'Intelligent Search' key on 'gen' computer in Win95 format"
End Sub
'Saves string as a text file.
Sub SaveFile(FileName, Contents, Unicode)
If Len(FileName)>0 Then
Dim FileStream, FS
Set FS = CreateObject("Scripting.FileSystemObject")
' wscript.echo "fn:" & FileName
Set FileStream = FS.CreateTextFile(FileName, True, Unicode)
FileStream.Write Contents
End If
End Sub
'ValueType - begin
Public Const vtNone = &H0 'No value type
Public Const vtString = &H1 'Nul terminated string
Public Const vtExpandString = &H2 'Nul terminated string (with environment variable references)
Public Const vtBinary = &H3 'Free form binary
Public Const vtDWord = &H4 '32-bit number
Public Const vtDWordBigEndian = &H5 '32-bit number. In big-endian format, the most significant byte of a word is the low-order byte.
Public Const vtLink = &H6 'Symbolic Link (unicode)
Public Const vtMultiString = &H7 'Multiple strings
Public Const vtResourceList = &H8 'Resource list in the resource map
Public Const vtFullResourceDescriptor = &H9 'Resource list in the hardware description
Public Const vtResourceRequirementsList = &HA
'ValueType - end | |
Intuitive, easy to use COM interface to windows registry. Set of classes to read/enumerate/modify windows registry keys and values from ASP, VBS and T-SQL.
© 1996 - 2009 Antonin Foller, Motobit Software | About, Contacts | e-mail: info@pstruh.cz