;Login.ini
;[BACKUP]
;W7BACKUP="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup"
;TARGETPN="\\10.10.11.11\Download\"
;TARGETUN="\\?\UNC\10.10.11.11\Download\"
;EXCLUDED="\Pagefile.sys|\hiberfil.sys|%TEMP%\* /s|%Systemroot%\temp\* /s|*.ost|*.iso"
;Windows Backup Settings
$=SETOPTION("Explicit","ON")
$=SETOPTION("WrapAtEOL","ON")
$=SETOPTION("NoVarsInStrings","ON")
$=SETOPTION("NoMacrosInStrings","ON")
dim $A,$H,$N,$T,$X,$EXC,$SCRPT
;Restrict to target machines
If InStr(@PRODUCTTYPE,'Windows 6.1') or InStr(@PRODUCTTYPE,"Windows 7") and not instr(@WKSTA,'-VDI')
$SCRPT=EXPANDENVIRONMENTVARS("%SCRIPTS%")
$A=READPROFILESTRING($SCRPT+'\SCRIPTS\Logon.ini',"BACKUP","W7BACKUP")
;$A="HKEY_CURRENT_USER\TEST"
$N=READPROFILESTRING($SCRPT+'\SCRIPTS\Logon.ini',"BACKUP","TARGETPN")+ucase(@WKSTA)+'\'+@year+right("0"+@MONTHNO,2)+'\'
$X=READPROFILESTRING($SCRPT+'\SCRIPTS\Logon.ini',"BACKUP","TARGETUN")+ucase(@WKSTA)+'\'+@year+right("0"+@MONTHNO,2)+'\'
If VARTYPE($A)<2 or VARTYPE($N)<2 or VARTYPE($X)<2 exit EndIf
If Not Exist($N) MD $N EndIf
If Exist($N)
$T=EXPANDENVIRONMENTVARS("%USERPROFILE%")+'\Desktop\'+@ticks+'.reg'
;Start Master REG file
If open(1,$T,5)=0
$=writeline(1,"Windows Registry Editor Version 5.00"+@crlf+@crlf)
;Include Excluded files if set
$EXC=join(split(trim(READPROFILESTRING($SCRPT+'\SCRIPTS\Logon.ini',"BACKUP","EXCLUDED")),'|'),Chr(124))
;Standard Method does not work outside of HKEY_CURRENT_USER
;If VARTYPE($EXC)>1
; $=WRITEVALUE($A, "FilesNotToBackup2", $EXC, "REG_MULTI_SZ")
; ? '['+@error+"] "+@serror ; Always shows 0 = OK
;EndIF
;Using Reg File
$H=WriteReg($A,"FilesNotToBackup",$EXC,"REG_MULTI_SZ")
If $H<>'' $=writeline(1,$H+@crlf) EndIf
;Scheduled destination for backups
$H=WriteReg($A+"\ScheduleParams\TargetDevice","PresentableName",$N,"REG_SZ")
If $H<>'' $=writeline(1,$H+@crlf) EndIf
$H=WriteReg($A+"\ScheduleParams\TargetDevice","UniqueName",$X,"REG_SZ")
If $H<>'' $=writeline(1,$H+@crlf) EndIf
$=close(1)
;Add to Registry
;shell 'notepad "'+$T+'"'
;shell 'regedit /s"'+$T+'"' ; Does not work even runas 'As Administrator'
;del $T /c ; Have to manually RUN the reg file for it to work !
Endif
EndIf
EndIf
Function WriteReg($SUBKEY,$ENTRY,$EXPRESSION,$TYPE)
Dim $E,$H,$I,$L,$S,$X
$S="["+$SUBKEY+"]"+@crlf
Select
Case $TYPE="REG_MULTI_SZ"
$X=split(trim($EXPRESSION),Chr(124))
For each $E in $X
$E=trim($E)
If $E<>''
$L=''
For $I=1 to len($E)
$L=$L+dectohex(asc(substr($E,$I,1)))+',00,'
Next
$H=$H+$L+'00,00,'
EndIf
Next
$H='"'+$Entry+'"=hex(7):'+left($H,-1)+@crlf
$WriteReg=$S+$H
Case $TYPE="REG_SZ"
$WriteReg=$S+'"'+$Entry+'"="'+join(split($EXPRESSION,'\'),'\\')+'"'+@crlf
Case $TYPE="REG_EXPAND_SZ"
;TBA Looking for examples in registry to study
Case $TYPE="REG_BINARY"
;TBA Looking for examples in registry to study
Case $TYPE="REG_DWORD"
;TBA Looking for examples in registry to study
Case $TYPE="REG_DWORD_LITTLE_ENDIAN"
;TBA Looking for examples in registry to study
Case $TYPE="REG_DWORD_BIG_ENDIAN"
;TBA Looking for examples in registry to study
Case $TYPE="REG_LINK"
;TBA Looking for examples in registry to study
EndSelect
Return $WriteReg
EndFunction