REG2WBT
|
REG2WBT.WBT Version 1.03 2003:09:09
- Converts a REGEDIT4 registry export file into a WinBatch script.
|
Version History
-
2003:09:09 v1.03
- Changes about a smarter SaveAs dialog.
-
2003:09:08 v1.02
- Now the binary buffer for hex to safe char translation is allocated only once and will be re-used.
-
2003:09:07 v1.01
- Some bug fixes.
- Added target folder dialog.
- Added final report and dialog to run explorer.
-
2003:09:05 v1.00
- Initial release.
|
|
;==========================================================================================================================================
; REG2WBT.wbt v1.03 20030909 (c)20030905.Detlev Dalitz
;==========================================================================================================================================
;------------------------------------------------------------------------------------------------------------------------------------------
; This WinBatch script will create a WinBatch scriptfile,
; based on a REGEDIT4 textfile exported from the Windows registry.
;
; See examples at bottom of this file.
;
; This WinBatch script is heavily based on the fundamental work by Brad Sjue,
; who has created his first Reg2Wbt converter script at September 02, 2003,
; and has published it in WinBatch forum.
;
; Brad Sjue's code work gave me the final push to fullfil my own work,
; which I have started prior about one month before, when someone has requested
; those new application in the WinBatch forum.
;------------------------------------------------------------------------------------------------------------------------------------------
;
; ==> In order to have a safe testcase it is recommended ... <==
; ==> ... to run the additional script "PrepareTest.REG2WBT.wbt". <==
;
;------------------------------------------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfFileGetLineCount (sFilename)
iBBSize = FileSizeEx(sFilename)
If !iBBSize Then Return (0)
hBB = BinaryAlloc(iBBSize)
iHigh = BinaryRead(hBB,sFilename)-1
While (@CR==BinaryPeekStr(hBB,iHigh,1))
iHigh = iHigh-1
EndWhile
iLineCount = BinaryStrCnt(hBB,0,iHigh,@LF)
iLineCount = iLineCount+(@LF<>BinaryPeekStr(hBB,iHigh,1))
BinaryFree(hBB)
Return (iLineCount)
;..........................................................................................................................................
; This function "udfFileGetLineCount" returns the number of lines counted in a textfile.
; This function takes only @LF characters into account.
; All @CR characters are ommitted.
; The function provides the same number of lines as counted by the WIL standard FileRead function.
; Detlev Dalitz.20020820
;..........................................................................................................................................
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfHexToDec (sHex)
sHexChars = "0123456789ABCDEF"
sHex = StrUpper(StrTrim(sHex))
iHigh = StrLen(sHex)
iDec = 0
For ii=1 To iHigh
iDec = (iDec<<4)+StrIndex(sHexChars,StrSub(sHex,ii,1),0,@FWDSCAN)-1
Next
Return (iDec)
; Note: Returned negative numbers are ok for use in WinBatch.
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfCreateSafeTextTable ()
sSafeChars = " !""#$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
sReplaceChar = "."
hBB = BinaryAlloc(256)
For ii=1 To 255
BinaryPoke(hBB,ii,ii)
Next
BinaryPokeStr(hBB,0,sReplaceChar)
BinaryPokeStr(hBB,1,StrClean(BinaryPeekStr(hBB,1,255),sSafeChars,sReplaceChar,@TRUE,2))
Return (hBB)
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udsConvertHexToSafeText (hBBSafe, hBBHex, sHex)
BinaryEodSet(hBBHex,0)
BinaryPokeHex(hBBHex,0,sHex)
Return (BinaryPeekStr(hBBHex,0,BinaryXlate(hBBHex,hBBSafe,0)))
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udsStrEscape (sString)
Return (StrReplace(StrReplace(StrReplace(StrReplace(sString,'\"','"'),'\\','\'),'%%','%%%%'),'`','``'))
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udsPosEq (sString)
Return (StrIndex(StrClean(StrReplace(sString,'\"'," "),'"='," ",@TRUE,2),' "=',1,@FWDSCAN)+2)
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfReturnSub (a, b)
Return (a)
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udsAskFilenameReg (AF_default)
AF_folder = FilePath(AF_default)
If !DirExist(AF_folder) Then AF_folder = IniReadPvt(sAppProductName,"Reg_Folder","",sAppIni)
If !DirExist(AF_folder) Then AF_folder = Environment("temp")
If !DirExist(AF_folder) Then AF_folder = ShortCutDir("Desktop",0,@TRUE)
If (AF_default=="") Then AF_default = IniReadPvt(sAppProductName,"Reg_File","",sAppIni)
If (AF_default=="") Then AF_default = "*.reg"
AF_title = StrCat(sAppProductName,": Select Registry File to convert to Winbatch ...")
AF_filetypes = "Reg Files|*.reg|Wbt Files|*.wbt|Reg & Wbt Files|*.wbt;*.reg|All Files|*.*|"
AF_flag = 1 ; Open single file.
AF_file = AskFilename(AF_title,AF_folder,AF_filetypes,AF_default,AF_flag)
If FileExist(AF_file) Then AF_file = FileNameLong(StrUpper(AF_file))
AF_folder = FilePath(AF_file)
IniWritePvt(sAppProductName,"Reg_Folder",AF_folder,sAppIni)
IniWritePvt(sAppProductName,"Reg_File",AF_file,sAppIni)
IniWritePvt("","","",sAppIni)
Return (udfReturnSub(AF_file,DropWild("AF_*")))
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineSubRoutine udsAskFilenameWbt (AF_default)
AF_folder = FilePath(AF_default)
If !DirExist(AF_folder) Then AF_folder = IniReadPvt(sAppProductName,"Wbt_Folder","",sAppIni)
If !DirExist(AF_folder) Then AF_folder = Environment("temp")
If !DirExist(AF_folder) Then AF_folder = ShortCutDir("Desktop",0,@TRUE)
If (AF_default=="") Then AF_default = IniReadPvt(sAppProductName,"Wbt_File","",sAppIni)
If (AF_default=="") Then AF_default = "*.wbt"
AF_title = StrCat(sAppProductName,": Save WinBatch file as ...")
AF_filetypes = "Wbt Files|*.wbt|Reg Files|*.reg|Reg & Wbt Files|*.wbt;*.reg|All Files|*.*|"
AF_flag = 0 ; Save style
AF_file = AskFilename(AF_title,AF_folder,AF_filetypes,AF_default,AF_flag)
If FileExist(AF_file) Then AF_file = FileNameLong(StrUpper(AF_file))
AF_folder = FilePath(AF_file)
IniWritePvt(sAppProductName,"Wbt_Folder",AF_folder,sAppIni)
IniWritePvt(sAppProductName,"Wbt_File",AF_file,sAppIni)
IniWritePvt("","","",sAppIni)
Return (udfReturnSub(AF_file,DropWild("AF_*")))
#EndSubRoutine
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
#DefineFunction udfMsgBox (sCaption, sText, iFlags)
Return (DllCall(StrCat(DirWindows(1),"User32.dll"),long:"MessageBoxA",long:DllHwnd(""),lpstr:sText,lpstr:sCaption,long:iFlags))
;..........................................................................................................................................
;+-----STYLE-----------------------+-----ICONS-----------------------+
;| OK = 0 | STOP = 16 |
;| OKCANCEL = 1 | QUESTION = 32 |
;| ABORTRETRYIGNORE = 2 | EXCLAIM = 48 |
;| YESNOCANCEL = 3 | INFO = 64 |
;| YESNO = 4 | WINICON = 4096 |
;| RETRYCANCEL = 5 | |
;+-----BUTTONS---------------------|----RETURN VALUES----------------|
;| DEFAULTBUTTON1 = 0 | IDOK = 1 |
;| DEFAULTBUTTON2 = 256 | IDCANCEL = 2 |
;| DEFAULTBUTTON3 = 512 | IDABORT = 3 |
;+---------------------------------| IDRETRY = 4 |
;| Combine flags with OR operator: | IDIGNORE = 5 |
;| Flags=4|48|256|4096 | IDYES = 6 |
;| | IDNO = 7 |
;+---------------------------------+---------------------------------+
;From: MWorrel mworrel@yahoo.com
;Date: Friday, September 12, 2003 08:54 AM
;..........................................................................................................................................
#EndFunction
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
; Main
;------------------------------------------------------------------------------------------------------------------------------------------
sAppProductName = "REG2WBT"
sAppProductVersion = "1"
sAppFileVersion = "1.03"
sAppFileVersionDate = "20030909"
sAppDescription = "Conversion from Registry exportfile (reg) to WinBatch scriptfile (wbt)"
sAppCopyright = "(c)20030905 Detlev Dalitz"
;..........................................................................................................................................
sAppFolder = FilePath(IntControl(1004,0,0,0,0))
sAppIni = StrCat(sAppFolder,sAppProductName,".ini")
;..........................................................................................................................................
IniWritePvt(sAppProductName,"ProductName" ,sAppProductName ,sAppIni)
IniWritePvt(sAppProductName,"FileVersion" ,sAppFileVersion ,sAppIni)
IniWritePvt(sAppProductName,"FileVersionDate",sAppFileVersionDate,sAppIni)
IniWritePvt(sAppProductName,"FileDescription",sAppDescription ,sAppIni)
IniWritePvt(sAppProductName,"ProductVersion" ,sAppProductVersion ,sAppIni)
IniWritePvt(sAppProductName,"LegalCopyright" ,sAppCopyright ,sAppIni)
;..........................................................................................................................................
sMsgError = StrCat(sAppProductName,": Error")
sMsgWarning = StrCat(sAppProductName,": Warning")
;..........................................................................................................................................
; Find the registry file to be converted.
sFileReg = udsAskFilenameReg("")
; Find a place to store the WinBatch file to be created.
sFileWbt = StrCat(FilePath(sFileReg),FileBaseName(sFileReg),".to.wbt")
sFileWbt = udsAskFilenameWbt(sFileWbt)
;..........................................................................................................................................
iFileRegSize = FileSizeEx(sFileReg)
sFileRegYmdHms = FileYmdHms(sFileReg)
iFileRegLines = udfFileGetLineCount(sFileReg)
;..........................................................................................................................................
iLastErrorMode = ErrorMode (@OFF)
hFW = FileOpen(sFileWbt,"Write")
ErrorMode (iLastErrorMode)
sMsgText = StrCat("Cannot open WBT output file:",@LF,sFileWbt)
Terminate(!hFW,sMsgError,sMsgText)
;..........................................................................................................................................
sYmdHmsStart = TimeYmdHms()
;..........................................................................................................................................
sMsgTitle = StrCat(sAppProductName,": ",sAppDescription)
sMsgText = "Processing ..."
BoxOpen(sMsgTitle,sMsgText)
WinPlace(100,250,900,370,"")
;..........................................................................................................................................
sHKCR = "HKEY_CLASSES_ROOT"
sHKLM = "HKEY_LOCAL_MACHINE"
sHKCU = "HKEY_CURRENT_USER"
sHKU = "HKEY_USERS"
sKeyHKCR = "@REGCLASSES"
sKeyHKLM = "@REGMACHINE"
sKeyHKCU = "@REGCURRENT"
sKeyHKU = "@REGUSERS"
sRegCreateKeyMask = StrCat("If !RegExistKey({1},sSubKey)",@CRLF," RegCreateKey({1},sSubKey)",@CRLF,"EndIf")
sRegSetBinMask = "RegSetBin({1},StrCat(sSubKey,`[{3}]`),sBinData)"
sRegSetDwordMask = "RegSetDword({1},StrCat(sSubKey,`[{3}]`),{4})"
sRegSetExpSzMask = "RegSetExpSz({1},StrCat(sSubKey,`[{3}]`),sExpSzData)"
sRegSetMulSzMask = "RegSetMulSz({1},StrCat(sSubKey,`[{3}]`),sMulSzData,sSzDelim)"
sRegSetValueMask = "RegSetValue({1},StrCat(sSubKey,`[{3}]`),`{4}`)"
sRegSetValueMask2 = "RegSetValue({1},StrCat(sSubKey,`[{3}]`),sStrData)"
sBinDataMask = "sBinData = StrCat(sBinData,`{1}`){2} ; [{3}]"
sBinDataMask1 = "sBinData = ``"
sExpSzDataMask = "sExpSzData = StrCat(sExpSzData,`{1}`){2} ; [{3}]"
sExpSzDataMask1 = "sExpSzData = ``"
sMulSzDataMask = "sMulSzData = StrCat(sMulSzData,`{1}`){2} ; [{3}]"
sMulSzDataMask1 = "sMulSzData = ``"
sStrDataMask = "sStrData = StrCat(sStrData,`{1}`)"
sStrDataMask1 = "sStrData = ``"
sSubKeyMask = "sSubKey = ItemInsert(`{1}`,-1,sSubKey,`\`)"
sSubKeyMask1 = "sSubKey = ``"
sHKeyMask = "sHKey = `{1}`"
sKeyLinePattern = StrCat(@LF,'[*]',@LF)
sBinLinePattern = StrCat(@LF,'"*"=hex:*',@LF)
sExpSzLinePattern = StrCat(@LF,'"*"=hex(2):*',@LF)
sMulSzLinePattern = StrCat(@LF,'"*"=hex(7):*',@LF)
sDwordLinePattern = StrCat(@LF,'"*"=dword:*',@LF)
sStrLinePattern1 = '@='
sStrLinePattern2 = StrCat(@LF,'"*"="*"',@LF)
sLitBin = "hex:"
sLitDword = "dword:"
sLitHex2 = "hex(2):"
sLitHex7 = "hex(7):"
sMsgTextMask = StrCat("# {1}/{2}",@LF,"{3} ...")
@P1 = "{1}"
@P2 = "{2}"
@P3 = "{3}"
@P4 = "{4}"
@P5 = "{5}"
@C0 = ""
@C32 = " "
@C44 = ","
@C59 = ";"
@C92 = "\"
@EOF = "*EOF*"
@REGEDIT4 = "REGEDIT4"
sFuncGetSzDelim = "sSzDelim = udfGetSzDelim(sMulSzData)"
sFuncConvertExpSz = "sExpSzData = udfConvertHexReg(sExpSzData,``)"
sFuncConvertMulSz = "sMulSzData = udfConvertHexReg(sMulSzData,sSzDelim)"
sFuncBoxText = "BoxText(StrReplace(StrCat(sHKey,`\`,sSubKey),`\`,StrCat(`\`,@LF)))"
hBBSafe = udfCreateSafeTextTable() ; Buffer for xlating hexstrings.
hBBHex = BinaryAlloc(30) ; Buffer for xlating hexstrings.
iStrDataChunk = 75
;..........................................................................................................................................
sMsgTextMask = StrReplace(sMsgTextMask,@P1,iFileRegLines)
;..........................................................................................................................................
sMsgTitle = StrCat(sMsgTitle," - ",FileBaseName(sFileReg))
BoxTitle(sMsgTitle)
sMsgText = "Writing header ..."
BoxText(sMsgText)
;..........................................................................................................................................
sRuler = StrCat(@C59,StrFill("-",140))
FileWrite(hFW,sRuler)
FileWrite(hFW,StrCat(`; This WinBatch script has been auto-generated by `,sAppProductName,` `,sAppFileVersion,` `,sAppCopyright))
FileWrite(hFW,sRuler)
FileWrite(hFW,StrCat(`; Reg origin : `,sFileReg))
FileWrite(hFW,StrCat(`; Reg created : `,sFileRegYmdHms))
FileWrite(hFW,StrCat(`; Reg lines : `,iFileRegLines))
FileWrite(hFW,sRuler)
FileWrite(hFW,StrCat(`; Wbt opened : `,sYmdHmsStart))
FileWrite(hFW,sRuler)
FileWrite(hFW,``)
FileWrite(hFW,``)
FileWrite(hFW,`sFilename = IntControl(1004,0,0,0,0)`)
FileWrite(hFW,`sMsgTitle = "Import data into Windows Registry"`)
FileWrite(hFW,`sMsgText = StrCat(sFilename,@LF,"Do you want to process this file",@LF,"and overwrite existing values in the Registry?")`)
FileWrite(hFW,`Pause(sMsgTitle,sMsgText)`)
FileWrite(hFW,``)
FileWrite(hFW,``)
FileWrite(hFW,sRuler)
FileWrite(hFW,`#DefineFunction udfGetDelimiter (sString) `)
FileWrite(hFW,`; Search #1. `)
FileWrite(hFW,`If !StrIndex(sString,@TAB,1,@FWDSCAN) Then Return (@TAB)`)
FileWrite(hFW,`; Search #2. `)
FileWrite(hFW,`If !StrIndex(sString,@LF,1,@FWDSCAN) Then Return (@LF) `)
FileWrite(hFW,`; Search #3. `)
FileWrite(hFW,`If !StrIndex(sString,@CR,1,@FWDSCAN) Then Return (@CR) `)
FileWrite(hFW,`; Search #4. `)
FileWrite(hFW,`sTable = "|#:;,./\!?=_-+*^~()[]{}<>&@$ " `)
FileWrite(hFW,`sTable = StrClean(sTable,sString,"",@TRUE,1) `)
FileWrite(hFW,`If (StrLen(sTable)>1) Then Return (StrSub(sTable,1,1)) `)
FileWrite(hFW,`; Search #5. `)
FileWrite(hFW,`For i=255 To 1 By -1 `)
FileWrite(hFW,` sTable = StrCat(sTable,Num2Char(i)) `)
FileWrite(hFW,`Next `)
FileWrite(hFW,`sTable = StrClean(sTable,sString,"",@TRUE,1) `)
FileWrite(hFW,`If (StrLen(sTable)>1) Then Return (StrSub(sTable,1,1)) `)
FileWrite(hFW,`; No delimiters available. `)
FileWrite(hFW,`Return ("") `)
FileWrite(hFW,`#EndFunction `)
FileWrite(hFW,sRuler)
FileWrite(hFW,``)
FileWrite(hFW,``)
FileWrite(hFW,sRuler)
FileWrite(hFW,`#DefineFunction udfGetSzDelim (sSzData) `)
FileWrite(hFW,`sSzData = StrReplace(StrReplace(sSzData,"00","")," ","") `)
FileWrite(hFW,`If (sSzData>"") `)
FileWrite(hFW,` hBB = BinaryAlloc(StrLen(sSzData)/2) `)
FileWrite(hFW,` sSzDelim = udfGetDelimiter(BinaryPeekStr(hBB,0,BinaryPokeHex(hBB,0,sSzData)))`)
FileWrite(hFW,` BinaryFree(hBB) `)
FileWrite(hFW,`Else `)
FileWrite(hFW,` sSzDelim = IntControl(29,"",0,0,0) `)
FileWrite(hFW,`EndIf `)
FileWrite(hFW,`Return (sSzDelim) `)
FileWrite(hFW,`#EndFunction `)
FileWrite(hFW,sRuler)
FileWrite(hFW,``)
FileWrite(hFW,``)
FileWrite(hFW,sRuler)
FileWrite(hFW,`#DefineFunction udfConvertHexReg (sRegValue, sSzDelim) `)
FileWrite(hFW,`If (sRegValue=="") Then Return ("") `)
FileWrite(hFW,`If (sSzDelim>"") Then sSzDelim = StrSub(sSzDelim,1,1) `)
FileWrite(hFW,` Else sSzDelim = IntControl(29,"",0,0,0) `)
FileWrite(hFW,`hBB = BinaryAlloc(StrLen(sRegValue)) `)
FileWrite(hFW,`BinaryPokeStr(hBB,0,sSzDelim) `)
FileWrite(hFW,`sSzDelimHex = BinaryPeekHex(hBB,0,1) `)
FileWrite(hFW,`sRegValue = StrReplace(StrReplace(sRegValue,"00",sSzDelimHex)," ","")`)
FileWrite(hFW,`iEod = BinaryPokeHex(hBB,0,sRegValue)-1 `)
FileWrite(hFW,`While (BinaryPeekStr(hBB,iEod,1)==sSzDelim) `)
FileWrite(hFW,` iEod = iEod-1 `)
FileWrite(hFW,` If (iEod<0) Then Break `)
FileWrite(hFW,`EndWhile `)
FileWrite(hFW,`sSzValue = BinaryPeekStr(hBB,0,iEod+1) `)
FileWrite(hFW,`BinaryFree(hBB) `)
FileWrite(hFW,`Return (sSzValue) `)
FileWrite(hFW,`#EndFunction `)
FileWrite(hFW,sRuler)
FileWrite(hFW,``)
FileWrite(hFW,``)
FileWrite(hFW,sRuler)
FileWrite(hFW,`; Registration Database Operations`)
FileWrite(hFW,sRuler)
FileWrite(hFW,`BoxOpen("Writing to Registry on Key ...","")`)
FileWrite(hFW,`WinPlace(100,100,500,500,"")`)
FileWrite(hFW,``)
;..........................................................................................................................................
IntControl(65,4096*64,0,0,0) ; Set size of internal FileRead buffer.
hFR = FileOpen(sFileReg,"READ")
;..........................................................................................................................................
iLine = 0
While @TRUE
sLine = FileRead(hFR)
If (sLine==@EOF) Then Break
iLine = iLine+1
sLine = StrTrim(sLine)
If (sLine==@REGEDIT4) Then Break
EndWhile
sMsgText = "Read error input file."
Terminate(sLine==@EOF,sMsgError,sMsgText)
Terminate(sLine!=@REGEDIT4,sMsgError,sMsgText)
While @TRUE
sLine = FileRead(hFR)
If (sLine==@EOF) Then Break
iLine = iLine+1
sLine = StrTrim(sLine)
If (StrSub(sLine,1,1)==@C59) Then Continue
If !(iLine mod 10) Then BoxText(StrReplace(StrReplace(sMsgTextMask,@P2,iLine),@P3,StrSub(sLine,1,100)))
Switch @TRUE
Case (sLine==@C0)
FileWrite(hFW,@C0)
Break
Case @TRUE
sTestLine = StrCat(@LF,sLine,@LF)
Continue
; --- HKEY ---
Case (StrIndexWild(sTestLine,sKeyLinePattern,1)==1)
sLine = StrSub(sLine,2,StrLen(sLine)-2)
sHKey = ItemExtract(1,sLine,@C92)
Switch @TRUE
Case !StriCmp(sHKey,sHKCR)
sRegHandle = sKeyHKCR
Break
Case !StriCmp(sHKey,sHKLM)
sRegHandle = sKeyHKLM
Break
Case !StriCmp(sHKey,sHKCU)
sRegHandle = sKeyHKCU
Break
Case !StriCmp(sHKey,sHKU)
sRegHandle = sKeyHKU
Break
EndSwitch
FileWrite(hFW,StrReplace(sHKeyMask,@P1,sHKey))
FileWrite(hFW,sSubKeyMask1)
sCreateSubKey = ItemRemove(1,sLine,@C92)
iCount = ItemCount(sCreateSubKey,@C92)
For ii=1 To iCount
sSubKey = StrReplace(sSubKeyMask,@P1,udsStrEscape(ItemExtract(ii,sCreateSubKey,@C92)))
FileWrite(hFW,sSubKey)
Next
FileWrite(hFW,sFuncBoxText)
FileWrite(hFW,StrReplace(sRegCreateKeyMask,@P1,sRegHandle))
Break
; --- REG_BINARY ---
Case (StrIndexWild(sTestLine,sBinLinePattern,1)==1)
FileWrite(hFW,sBinDataMask1)
iPosEq = udsPosEq(sLine)
; Get String Value.
sValue = StrSub(sLine,2,iPosEq-3)
sValue = udsStrEscape(sValue)
; Get Bin Data.
sData = StrSub(sLine,iPosEq+1,-1)
sData = StrReplace(sData,sLitBin,@C0)
; Extract each line.
If ItemCount(sData,@C44)
While @TRUE
sData = ItemExtract(1,sData,@C92)
sComment = udsConvertHexToSafeText(hBBSafe,hBBHex,StrReplace(sData,@C44,@C0))
sData = StrReplace(sData,@C44,@C32)
sFiller = StrFill(@C32,4+75-StrLen(sData))
sDataNew = StrReplace(StrReplace(StrReplace(sBinDataMask,@P1,sData),@P2,sFiller),@P3,sComment)
FileWrite(hFW,sDataNew)
If (StrSub(sLine,StrLen(sLine),1)!=@C92) Then Break
sLine = FileRead(hFR)
If (sLine==@EOF) Then Break
iLine = iLine+1
sLine = StrTrim(sLine)
If (StrSub(sLine,1,1)==@C59) Then Continue
If !(iLine mod 10) Then BoxText(StrReplace(StrReplace(sMsgTextMask,@P2,iLine),@P3,sLine))
sData = sLine
EndWhile
EndIf
FileWrite(hFW,StrReplace(StrReplace(StrReplace(sRegSetBinMask,@P1,sRegHandle),@P2,sCreateSubKey),@P3,sValue))
Break
; --- REG_EXPAND_SZ ---
Case (StrIndexWild(sTestLine,sExpSzLinePattern,1)==1)
FileWrite(hFW,sExpSzDataMask1)
iPosEq = udsPosEq(sLine)
; Get String Value.
sValue = StrSub(sLine,2,iPosEq-3)
sValue = udsStrEscape(sValue)
; Get Bin Data.
sData = StrSub(sLine,iPosEq+1,-1)
sData = StrReplace(sData,sLitHex2,@C0)
; Extract each line.
If ItemCount(sData,@C44)
While @TRUE
sData = ItemExtract(1,sData,@C92)
sComment = udsConvertHexToSafeText(hBBSafe,hBBHex,StrReplace(sData,@C44,@C0))
sData = StrReplace(sData,@C44,@C32)
sFiller = StrFill(@C32,75-StrLen(sData))
sDataNew = StrReplace(StrReplace(StrReplace(sExpSzDataMask,@P1,sData),@P2,sFiller),@P3,sComment)
FileWrite(hFW,sDataNew)
If (StrSub(sLine,StrLen(sLine),1)!=@C92) Then Break
sLine = FileRead(hFR)
If (sLine==@EOF) Then Break
iLine = iLine+1
sLine = StrTrim(sLine)
If (StrSub(sLine,1,1)==@C59) Then Continue
If !(iLine mod 10) Then BoxText(StrReplace(StrReplace(sMsgTextMask,@P2,iLine),@P3,sLine))
sData = sLine
EndWhile
EndIf
FileWrite(hFW,sFuncConvertExpSz)
FileWrite(hFW,StrReplace(StrReplace(StrReplace(sRegSetExpSzMask,@P1,sRegHandle),@P2,sCreateSubKey),@P3,sValue))
Break
; --- REG_MULTI_SZ ---
Case (StrIndexWild(sTestLine,sMulSzLinePattern,1)==1)
FileWrite(hFW,sMulSzDataMask1)
iPosEq = udsPosEq(sLine)
; Get String Value.
sValue = StrSub(sLine,2,iPosEq-3)
sValue = udsStrEscape(sValue)
; Get Bin Data.
sData = StrSub(sLine,iPosEq+1,-1)
sData = StrReplace(sData,sLitHex7,@C0)
; Extract each line.
If ItemCount(sData,@C44)
While @TRUE
sData = ItemExtract(1,sData,@C92)
sComment = udsConvertHexToSafeText(hBBSafe,hBBHex,StrReplace(sData,@C44,@C0))
sData = StrReplace(sData,@C44,@C32)
sFiller = StrFill(@C32,75-StrLen(sData))
sDataNew = StrReplace(StrReplace(StrReplace(sMulSzDataMask,@P1,sData),@P2,sFiller),@P3,sComment)
FileWrite(hFW,sDataNew)
If (StrSub(sLine,StrLen(sLine),1)!=@C92) Then Break
sLine = FileRead(hFR)
If (sLine==@EOF) Then Break
iLine = iLine+1
sLine = StrTrim(sLine)
If (StrSub(sLine,1,1)==@C59) Then Continue
If !(iLine mod 10) Then BoxText(StrReplace(StrReplace(sMsgTextMask,@P2,iLine),@P3,sLine))
sData = sLine
EndWhile
EndIf
FileWrite(hFW,sFuncGetSzDelim)
FileWrite(hFW,sFuncConvertMulSz)
FileWrite(hFW,StrReplace(StrReplace(StrReplace(sRegSetMulSzMask,@P1,sRegHandle),@P2,sCreateSubKey),@P3,sValue))
Break
; --- REG_DWORD ---
Case (StrIndexWild(sTestLine,sDwordLinePattern,1)==1)
iPosEq = udsPosEq(sLine)
; Get String Value.
sValue = StrSub(sLine,2,iPosEq-3)
sValue = udsStrEscape(sValue)
; Get Dword Data.
sData = StrSub(sLine,iPosEq+1,-1)
sData = StrReplace(sData,sLitDword,@C0)
sData = udfHexToDec(sData)
FileWrite(hFW,StrReplace(StrReplace(StrReplace(sRegSetDwordMask,@P1,sRegHandle),@P3,sValue),@P4,sData))
Break
; --- REG_SZ string ---
Case (StrIndex(sLine,sStrLinePattern1,1,@FWDSCAN)==1)
sValue = @C0
iPosEq = 2
Continue
Case (StrIndexWild(sTestLine,sStrLinePattern2,1)==1)
iPosEq = udsPosEq(sLine)
; Get String Value.
sValue = StrSub(sLine,2,iPosEq-3)
sValue = udsStrEscape(sValue)
Continue
Case @TRUE
; Get String Data.
sData = StrSub(sLine,iPosEq+1,-1)
sData = StrSub(sData,2,StrLen(sData)-2)
If (StrLen(sData)>iStrDataChunk)
FileWrite(hFW,sStrDataMask1)
; Break before backslash.
While (sData>@C0)
iPos = iStrDataChunk
While (StrSub(sData,iPos,1)==@C92)
iPos = iPos-1
If (iPos<1) Then Break
EndWhile
sDataNew = StrReplace(sStrDataMask,@P1,udsStrEscape(StrSub(sData,1,iPos)))
FileWrite(hFW,sDataNew)
sData = StrSub(sData,iPos+1,-1)
EndWhile
FileWrite(hFW,StrReplace(StrReplace(sRegSetValueMask2,@P1,sRegHandle),@P3,sValue))
Else
sData = udsStrEscape(sData)
FileWrite(hFW,StrReplace(StrReplace(StrReplace(sRegSetValueMask,@P1,sRegHandle),@P3,sValue),@P4,sData))
EndIf
Break
EndSwitch
EndWhile
;..........................................................................................................................................
sMsgText = "Writing footer ..."
BoxText(sMsgText)
;..........................................................................................................................................
FileWrite(hFW,`BoxShut()`)
FileWrite(hFW,sRuler)
FileWrite(hFW,``)
FileWrite(hFW,`sMsgText = StrCat(sFilename,@LF,"Completed.")`)
FileWrite(hFW,`Message(sMsgTitle,sMsgText)`)
FileWrite(hFW,``)
FileWrite(hFW,`:CANCEL`)
FileWrite(hFW,`Exit`)
FileWrite(hFW,sRuler)
sYmdHmsStop = TimeYmdHms()
FileWrite(hFW,StrCat(`; Wbt created : `,sYmdHmsStop))
FileWrite(hFW,sRuler)
;..........................................................................................................................................
FileClose(hFW)
;..........................................................................................................................................
BinaryFree(hBBHex)
BinaryFree(hBBSafe)
;..........................................................................................................................................
iTimeDiffSecs = TimeDiffSecs(sYmdHmsStop,sYmdHmsStart)
fLinesPerSec = 1.*iFileRegLines/iTimeDiffSecs
sMsgTextMask = StrCat("Reg file : {1}",@LF,"Wbt file : {2}",@LF,"Reg lines: {3}",@LF,"Duration : {4} sec",@LF,"Lines/sec: {5}",@LF,"Conversion completed.")
sMsgText = sMsgTextMask
sMsgText = StrReplace(sMsgText,@P1,sFileReg)
sMsgText = StrReplace(sMsgText,@P2,sFileWbt)
sMsgText = StrReplace(sMsgText,@P3,iFileRegLines)
sMsgText = StrReplace(sMsgText,@P4,iTimeDiffSecs)
sMsgText = StrReplace(sMsgText,@P5,fLinesPerSec)
WinPlace(100,250,900,450,"")
BoxText(sMsgText)
;..........................................................................................................................................
MB_OK = 0
MB_ICONINFORMATION = 64
sMsgText = "Conversion Completed."
iResult = udfMsgBox(sMsgTitle,sMsgText,MB_OK|MB_ICONINFORMATION)
;..........................................................................................................................................
MB_YESNO = 4
MB_ICONQUESTION = 32
IDYES = 6
sMsgText = "Open target folder?"
iResult = udfMsgBox(sMsgTitle,sMsgText,MB_YESNO|MB_ICONQUESTION)
If (iResult==IDYES) Then Run("explorer.exe",StrCat("/select, ",sFileWbt))
;..........................................................................................................................................
:CANCEL
BoxShut()
Exit
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
; Information from the Platform SDK Release May 2002
;
; Registry Element Size Limits
; The following are the size limits for the various registry elements.
;
; The maximum size of a key name is 255 characters.
; The maximum size of a value name is as follows:
; Windows XP, Windows .NET Server: 16383 characters
; Windows 2000: 260 ANSI characters or 16383 Unicode characters.
; Windows 95/98/Me: 255 characters
; Long values (more than 2048 bytes) should be stored as files with the file names stored in the registry.
; This helps the registry perform efficiently.
; The maximum size of a value is as follows:
; Windows NT/2000/XP: Available memory.
; Windows 95/98/Me: 16,300 bytes. There is a 64K limit for the total size of all values of a key.
;
; Windows 95/98/Me:
; Every key has a default value that initially does not contain data.
; On Windows 95, the default value type is always REG_SZ,
; so the dwType parameter must specify REG_SZ for an unnamed value.
; On Windows 98 and Windows Me, an unnamed value can be of any type.
;
; Windows NT/2000/XP:
; Registry keys do not have default values,
; but they can have one unnamed value, which can be of any type.
;
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
; Example input Registry exportfile.
;------------------------------------------------------------------------------------------------------------------------------------------
;
;
; REGEDIT4
;
; [HKEY_USERS\testuser]
;
; [HKEY_USERS\testuser\New Key #1]
; "MenuItem1"="2,1,1,&Einfügen,Webview-Ordner&titel,<!--webbot bot=HTMLMarkup alt='<B><I>Webview-Ordnertitel</I></B> ' startspan -->%THISDIRNAME%<!--webbot bot=HTMLMarkup endspan -->,&Bild...,2,Den Namen des aktuellen Ordners einfügen.,"
; "MenuItem2"="2,1,1,&Einfügen,Webview-Ordnerin&halt,<!--webbot bot=HTMLMarkup u-src='file:///C:\\PROGRA~1\\MICROS~4\\Data\\FoldData.gif' startspan --><object width=100% height=85% classid=clsid:1820FED0-473E-11D0-A96C-00C04FD705A2></object><!--webbot bot=HTMLMarkup endspan -->,&Bild...,2,Den Inhalt des aktuellen Ordners (Programmsymbol) einfügen.,"
; "MenuItem3"="2,1,1,&Einfügen,-,,&Bild...,,,"
; "Microsoft.Vsa.Vb.CodeDOMProcessor,Version=\"7.0.3300.0\",PublicKeyToken=\"b03f5f7f11d50a3a\",Culture=\"neutral\""=hex(7):3f,\
; 52,25,5a,2d,3f,31,41,34,3d,6e,4d,27,33,6c,6b,72,3d,79,41,52,65,64,69,73,74,\
; 5f,50,61,63,6b,61,67,65,3e,71,5e,68,7a,68,47,3f,35,7d,3d,49,40,50,5a,5b,68,\
; 69,3d,4a,65,00,00
; "^°!=\"§$%&/()=?{[]}\\´`@+*~#',;.:-_<>"="^°!=\"§$%&/()=?{[]}\\´`@+*~#',;.:-_<>"
; "New Value #1"="dd"
; "New Value #2"="aaa|bbb|ccc"
; "New Value #3"=dword:00000221
; "New Value #4"=hex:
; "New Value #5"=hex:dd,dd
; "New Value #6"=dword:000000dd
; "New Value #7"=hex:10,20,30,00,10,20,30,40,00,10,20,30,40,50,00,00
; "ExpSz"=hex(2):66,69,6c,65,3a,2f,2f,25,75,73,65,72,61,70,70,64,61,74,61,25,5c,\
; 4d,69,63,72,6f,73,6f,66,74,5c,49,6e,74,65,72,6e,65,74,20,45,78,70,6c,6f,72,\
; 65,72,5c,44,65,73,6b,74,6f,70,2e,68,74,74,00
; "MulSz"=hex(7):6d,73,63,72,6c,72,65,76,2e,64,6c,6c,00,43,52,59,50,54,4e,45,54,\
; 2e,44,4c,4c,00,00
; "Setup Components"=hex(7):42,41,53,45,49,45,34,30,5f,57,69,6e,00,49,45,45,58,\
; 00,4d,6f,62,69,6c,65,50,6b,00,42,52,41,4e,44,49,4e,47,2e,43,41,42,00,41,64,\
; 76,41,75,74,68,00,48,65,6c,70,43,6f,6e,74,00,49,43,57,00,46,6f,6e,74,63,6f,\
; 72,65,00,54,72,69,64,61,74,61,00,45,78,74,72,61,50,61,63,6b,00,41,64,64,72,\
; 65,73,73,42,6f,6f,6b,00,4d,61,69,6c,4e,65,77,73,00,6d,65,64,69,61,70,6c,61,\
; 79,65,72,00,77,6d,70,63,6f,64,65,63,00,4d,53,56,4d,4c,00,46,6c,61,73,68,00,\
; 4d,53,56,42,53,63,72,69,70,74,00,46,6f,6e,74,73,75,70,00,49,45,52,65,61,64,\
; 6d,65,00,00
; "@@@"=""
; @="testuser"
;
;
;------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------
; Example output WinBatch scriptfile.
;------------------------------------------------------------------------------------------------------------------------------------------
;
;
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; ; This WinBatch script has been auto-generated by REG2WBT 1.03 (c)20030905 Detlev Dalitz
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; ; Reg origin : W:\WINBATCH\PROD\REG2WBT\testuser.reg
; ; Reg created : 2003:09:06:08:05:08
; ; Reg lines : 36
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; ; Wbt opened : 2003:09:10:09:22:35
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
;
; sFilename = IntControl(1004,0,0,0,0)
; sMsgTitle = "Import data into Windows Registry"
; sMsgText = StrCat(sFilename,@LF,"Do you want to process this file",@LF,"and overwrite existing values in the Registry?")
; Pause(sMsgTitle,sMsgText)
;
;
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; #DefineFunction udfGetDelimiter (sString)
; ; Search #1.
; If !StrIndex(sString,@TAB,1,@FWDSCAN) Then Return (@TAB)
; ; Search #2.
; If !StrIndex(sString,@LF,1,@FWDSCAN) Then Return (@LF)
; ; Search #3.
; If !StrIndex(sString,@CR,1,@FWDSCAN) Then Return (@CR)
; ; Search #4.
; sTable = "|#:;,./\!?=_-+*^~()[]{}<>&@$ "
; sTable = StrClean(sTable,sString,"",@TRUE,1)
; If (StrLen(sTable)>1) Then Return (StrSub(sTable,1,1))
; ; Search #5.
; For i=255 To 1 By -1
; sTable = StrCat(sTable,Num2Char(i))
; Next
; sTable = StrClean(sTable,sString,"",@TRUE,1)
; If (StrLen(sTable)>1) Then Return (StrSub(sTable,1,1))
; ; No delimiters available.
; Return ("")
; #EndFunction
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
;
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; #DefineFunction udfGetSzDelim (sSzData)
; sSzData = StrReplace(StrReplace(sSzData,"00","")," ","")
; If (sSzData>"")
; hBB = BinaryAlloc(StrLen(sSzData)/2)
; sSzDelim = udfGetDelimiter(BinaryPeekStr(hBB,0,BinaryPokeHex(hBB,0,sSzData)))
; BinaryFree(hBB)
; Else
; sSzDelim = IntControl(29,"",0,0,0)
; EndIf
; Return (sSzDelim)
; #EndFunction
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
;
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; #DefineFunction udfConvertHexReg (sRegValue, sSzDelim)
; If (sRegValue=="") Then Return ("")
; If (sSzDelim>"") Then sSzDelim = StrSub(sSzDelim,1,1)
; Else sSzDelim = IntControl(29,"",0,0,0)
; hBB = BinaryAlloc(StrLen(sRegValue))
; BinaryPokeStr(hBB,0,sSzDelim)
; sSzDelimHex = BinaryPeekHex(hBB,0,1)
; sRegValue = StrReplace(StrReplace(sRegValue,"00",sSzDelimHex)," ","")
; iEod = BinaryPokeHex(hBB,0,sRegValue)-1
; While (BinaryPeekStr(hBB,iEod,1)==sSzDelim)
; iEod = iEod-1
; If (iEod<0) Then Break
; EndWhile
; sSzValue = BinaryPeekStr(hBB,0,iEod+1)
; BinaryFree(hBB)
; Return (sSzValue)
; #EndFunction
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
;
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; ; Registration Database Operations
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; BoxOpen("Writing to Registry on Key ...","")
; WinPlace(100,100,500,500,"")
;
;
; sHKey = `HKEY_USERS`
; sSubKey = ``
; sSubKey = ItemInsert(`testuser`,-1,sSubKey,`\`)
; BoxText(StrReplace(StrCat(sHKey,`\`,sSubKey),`\`,StrCat(`\`,@LF)))
; If !RegExistKey(@REGUSERS,sSubKey)
; RegCreateKey(@REGUSERS,sSubKey)
; EndIf
;
; sHKey = `HKEY_USERS`
; sSubKey = ``
; sSubKey = ItemInsert(`testuser`,-1,sSubKey,`\`)
; sSubKey = ItemInsert(`New Key #1`,-1,sSubKey,`\`)
; BoxText(StrReplace(StrCat(sHKey,`\`,sSubKey),`\`,StrCat(`\`,@LF)))
; If !RegExistKey(@REGUSERS,sSubKey)
; RegCreateKey(@REGUSERS,sSubKey)
; EndIf
; sStrData = ``
; sStrData = StrCat(sStrData,`2,1,1,&Einfügen,Webview-Ordner&titel,<!--webbot bot=HTMLMarkup alt='<B&g`)
; sStrData = StrCat(sStrData,`t;<I>Webview-Ordnertitel</I></B> ' startspan -->%%THI`)
; sStrData = StrCat(sStrData,`SDIRNAME%%<!--webbot bot=HTMLMarkup endspan -->,&Bild...,2,Den Namen des akt`)
; sStrData = StrCat(sStrData,`uellen Ordners einfügen.,`)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[MenuItem1]`),sStrData)
; sStrData = ``
; sStrData = StrCat(sStrData,`2,1,1,&Einfügen,Webview-Ordnerin&halt,<!--webbot bot=HTMLMarkup u-src='file`)
; sStrData = StrCat(sStrData,`:///C:\PROGRA~1\MICROS~4\Data\FoldData.gif' startspan --><object width=`)
; sStrData = StrCat(sStrData,`100%% height=85%% classid=clsid:1820FED0-473E-11D0-A96C-00C04FD705A2></object`)
; sStrData = StrCat(sStrData,`><!--webbot bot=HTMLMarkup endspan -->,&Bild...,2,Den Inhalt des aktuellen `)
; sStrData = StrCat(sStrData,`Ordners (Programmsymbol) einfügen.,`)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[MenuItem2]`),sStrData)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[MenuItem3]`),`2,1,1,&Einfügen,-,,&Bild...,,,`)
; sMulSzData = ``
; sMulSzData = StrCat(sMulSzData,`3f `) ; [?]
; sMulSzData = StrCat(sMulSzData,`52 25 5a 2d 3f 31 41 34 3d 6e 4d 27 33 6c 6b 72 3d 79 41 52 65 64 69 73 74 `) ; [R.Z-?1A4=nM'3lkr=yARedist]
; sMulSzData = StrCat(sMulSzData,`5f 50 61 63 6b 61 67 65 3e 71 5e 68 7a 68 47 3f 35 7d 3d 49 40 50 5a 5b 68 `) ; [_Package>q^hzhG?5}=I@PZ[h]
; sMulSzData = StrCat(sMulSzData,`69 3d 4a 65 00 00`) ; [i=Je..]
; sSzDelim = udfGetSzDelim(sMulSzData)
; sMulSzData = udfConvertHexReg(sMulSzData,sSzDelim)
; RegSetMulSz(@REGUSERS,StrCat(sSubKey,`[Microsoft.Vsa.Vb.CodeDOMProcessor,Version="7.0.3300.0",PublicKeyToken="b03f5f7f11d50a3a",Culture="neutral"]`),sMulSzData,sSzDelim)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[^°!="§$%%&/()=?{[]}\´``@+*~#',;.:-_<>]`),`^°!="§$%%&/()=?{[]}\´``@+*~#',;.:-_<>`)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[New Value #1]`),`dd`)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[New Value #2]`),`aaa|bbb|ccc`)
; RegSetDword(@REGUSERS,StrCat(sSubKey,`[New Value #3]`),545)
; sBinData = ``
; RegSetBin(@REGUSERS,StrCat(sSubKey,`[New Value #4]`),sBinData)
; sBinData = ``
; sBinData = StrCat(sBinData,`dd dd`) ; [..]
; RegSetBin(@REGUSERS,StrCat(sSubKey,`[New Value #5]`),sBinData)
; RegSetDword(@REGUSERS,StrCat(sSubKey,`[New Value #6]`),221)
; sBinData = ``
; sBinData = StrCat(sBinData,`10 20 30 00 10 20 30 40 00 10 20 30 40 50 00 00`) ; [. 0.. 0@.. 0@P..]
; RegSetBin(@REGUSERS,StrCat(sSubKey,`[New Value #7]`),sBinData)
; sExpSzData = ``
; sExpSzData = StrCat(sExpSzData,`66 69 6c 65 3a 2f 2f 25 75 73 65 72 61 70 70 64 61 74 61 25 5c `) ; [file://.userappdata.\]
; sExpSzData = StrCat(sExpSzData,`4d 69 63 72 6f 73 6f 66 74 5c 49 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72 `) ; [Microsoft\Internet Explor]
; sExpSzData = StrCat(sExpSzData,`65 72 5c 44 65 73 6b 74 6f 70 2e 68 74 74 00`) ; [er\Desktop.htt.]
; sExpSzData = udfConvertHexReg(sExpSzData,``)
; RegSetExpSz(@REGUSERS,StrCat(sSubKey,`[ExpSz]`),sExpSzData)
; sMulSzData = ``
; sMulSzData = StrCat(sMulSzData,`6d 73 63 72 6c 72 65 76 2e 64 6c 6c 00 43 52 59 50 54 4e 45 54 `) ; [mscrlrev.dll.CRYPTNET]
; sMulSzData = StrCat(sMulSzData,`2e 44 4c 4c 00 00`) ; [.DLL..]
; sSzDelim = udfGetSzDelim(sMulSzData)
; sMulSzData = udfConvertHexReg(sMulSzData,sSzDelim)
; RegSetMulSz(@REGUSERS,StrCat(sSubKey,`[MulSz]`),sMulSzData,sSzDelim)
; sMulSzData = ``
; sMulSzData = StrCat(sMulSzData,`42 41 53 45 49 45 34 30 5f 57 69 6e 00 49 45 45 58 `) ; [BASEIE40_Win.IEEX]
; sMulSzData = StrCat(sMulSzData,`00 4d 6f 62 69 6c 65 50 6b 00 42 52 41 4e 44 49 4e 47 2e 43 41 42 00 41 64 `) ; [.MobilePk.BRANDING.CAB.Ad]
; sMulSzData = StrCat(sMulSzData,`76 41 75 74 68 00 48 65 6c 70 43 6f 6e 74 00 49 43 57 00 46 6f 6e 74 63 6f `) ; [vAuth.HelpCont.ICW.Fontco]
; sMulSzData = StrCat(sMulSzData,`72 65 00 54 72 69 64 61 74 61 00 45 78 74 72 61 50 61 63 6b 00 41 64 64 72 `) ; [re.Tridata.ExtraPack.Addr]
; sMulSzData = StrCat(sMulSzData,`65 73 73 42 6f 6f 6b 00 4d 61 69 6c 4e 65 77 73 00 6d 65 64 69 61 70 6c 61 `) ; [essBook.MailNews.mediapla]
; sMulSzData = StrCat(sMulSzData,`79 65 72 00 77 6d 70 63 6f 64 65 63 00 4d 53 56 4d 4c 00 46 6c 61 73 68 00 `) ; [yer.wmpcodec.MSVML.Flash.]
; sMulSzData = StrCat(sMulSzData,`4d 53 56 42 53 63 72 69 70 74 00 46 6f 6e 74 73 75 70 00 49 45 52 65 61 64 `) ; [MSVBScript.Fontsup.IERead]
; sMulSzData = StrCat(sMulSzData,`6d 65 00 00`) ; [me..]
; sSzDelim = udfGetSzDelim(sMulSzData)
; sMulSzData = udfConvertHexReg(sMulSzData,sSzDelim)
; RegSetMulSz(@REGUSERS,StrCat(sSubKey,`[Setup Components]`),sMulSzData,sSzDelim)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[@@@]`),``)
; RegSetValue(@REGUSERS,StrCat(sSubKey,`[]`),`testuser`)
;
; BoxShut()
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
; sMsgText = StrCat(sFilename,@LF,"Completed.")
; Message(sMsgTitle,sMsgText)
;
; :CANCEL
; Exit
; ;--------------------------------------------------------------------------------------------------------------------------------------------
; ; Wbt created : 2003:09:10:09:22:39
; ;--------------------------------------------------------------------------------------------------------------------------------------------
;
;
;--------------------------------------------------------------------------------------------------------------------------------------------
;*EOF*