From 74e50dfa84dc569c3e8728218c38d625db237ea5 Mon Sep 17 00:00:00 2001 From: "Michael H.G. Schmidt" Date: Sun, 28 Mar 2021 17:51:56 +0200 Subject: [PATCH] added tool for modifying autounattend.xml --- 06_Copy2Stick.cmd | 27 +++++- README.md | 2 +- ...IOS.xml => autounattend_BIOS_template.xml} | 12 +-- ...EFI.xml => autounattend_UEFI_template.xml} | 16 ++-- source/searchreplace.pb | 80 ++++++++++++++++++ tools/.gitignore | 2 + tools/searchreplace.exe | Bin 0 -> 18944 bytes 7 files changed, 122 insertions(+), 17 deletions(-) rename boot/{autounattend_BIOS.xml => autounattend_BIOS_template.xml} (94%) rename boot/{autounattend_UEFI.xml => autounattend_UEFI_template.xml} (93%) create mode 100644 source/searchreplace.pb create mode 100644 tools/searchreplace.exe diff --git a/06_Copy2Stick.cmd b/06_Copy2Stick.cmd index 2cbb70a..a01f60c 100644 --- a/06_Copy2Stick.cmd +++ b/06_Copy2Stick.cmd @@ -34,18 +34,41 @@ set answer= set /p answer="BIOS or UEFI setup (B/U)? " if /i "%answer:~,1%" EQU "B" ( echo selected: BIOS - copy /Y boot\autounattend_BIOS.xml %USBDRIVE%\autounattend.xml + copy /Y boot\autounattend_BIOS_template.xml %USBDRIVE%\autounattend.xml GOTO CONT ) if /i "%answer:~,1%" EQU "U" ( echo selected: UEFI - copy /Y boot\autounattend_UEFI.xml %USBDRIVE%\autounattend.xml + copy /Y boot\autounattend_UEFI_template.xml %USBDRIVE%\autounattend.xml GOTO CONT ) echo Please type B for BIOS or U for UEFI setup. goto ask :CONT +rem ask for user ... +echo. +set MYUSER=support +set /p MYUSER="Username (%MYUSER%)? " +echo MYUSER = %MYUSER% + +rem ask for real name ... +echo. +set MYNAME="Support User" +set /p MYNAME="Display Name (%MYNAME%)? " +echo MYNAME = %MYNAME% + +rem ask for a password ... +echo. +set MYPASS= +set /p MYPASS="Password (not set)? " +echo MYPASS = %MYPASS% + +echo. +tools\searchreplace %USBDRIVE%\autounattend.xml ___MYUSER___ %MYUSER% +tools\searchreplace %USBDRIVE%\autounattend.xml ___MYNAME___ %MYNAME% +tools\searchreplace %USBDRIVE%\autounattend.xml ___MYPASS___ %MYPASS% + echo. echo copying [ %BOOT% ] to drive %USBDRIVE% ... robocopy %SOURCES% %USBDRIVE%\sources %BOOT% /J /NJH diff --git a/README.md b/README.md index 0cf99db..21d62a9 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Finally, there is the problem of obesity. Modern systems are getting fatter, slo # **Please read this to get started!** **IMPORTANT:** -This whole thing was crafted and tested with Windows 10 version 20H2. +This whole thing was crafted and tested with Windows 10 version 20H2 v1 english, 64-bit. This is actually the only *supported* version! diff --git a/boot/autounattend_BIOS.xml b/boot/autounattend_BIOS_template.xml similarity index 94% rename from boot/autounattend_BIOS.xml rename to boot/autounattend_BIOS_template.xml index 5eaaf7a..e0f8521 100644 --- a/boot/autounattend_BIOS.xml +++ b/boot/autounattend_BIOS_template.xml @@ -102,12 +102,12 @@ - + ___MYPASS___ true</PlainText> </Password> <!-- USERNAME HERE --> - <DisplayName>support</DisplayName> - <Name>support</Name> + <DisplayName>___MYNAME___</DisplayName> + <Name>___MYUSER___</Name> <Group>Administrators</Group> </LocalAccount> </LocalAccounts> @@ -115,19 +115,19 @@ <AutoLogon> <Password> <!-- PASSWORD HERE --> - <Value></Value> + <Value>___MYPASS___</Value> <PlainText>true</PlainText> </Password> <Enabled>true</Enabled> <LogonCount>1</LogonCount> <!-- USERNAME HERE --> - <Username>support</Username> + <Username>___MYUSER___</Username> </AutoLogon> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <Order>1</Order> <Description>Password Never Expires</Description> - <CommandLine>cmd /C wmic useraccount where name=&quot;support&quot; set PasswordExpires=false</CommandLine> + <CommandLine>cmd /C wmic useraccount where name=&quot;___MYUSER___&quot; set PasswordExpires=false</CommandLine> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>2</Order> diff --git a/boot/autounattend_UEFI.xml b/boot/autounattend_UEFI_template.xml similarity index 93% rename from boot/autounattend_UEFI.xml rename to boot/autounattend_UEFI_template.xml index 77226b0..1071b2e 100644 --- a/boot/autounattend_UEFI.xml +++ b/boot/autounattend_UEFI_template.xml @@ -122,12 +122,12 @@ <LocalAccount wcm:action="add"> <Password> <!-- PASSWORD HERE --> - <Value></Value> - <PlainText>false</PlainText> + <Value>___MYPASS___</Value> + <PlainText>true</PlainText> </Password> - <DisplayName>support</DisplayName> + <DisplayName>___MYNAME___</DisplayName> <!-- USERNAME HERE --> - <Name>support</Name> + <Name>___MYUSER___</Name> <Group>Administrators</Group> </LocalAccount> </LocalAccounts> @@ -135,19 +135,19 @@ <AutoLogon> <Password> <!-- PASSWORD HERE --> - <Value></Value> - <PlainText>false</PlainText> + <Value>___MYPASS___</Value> + <PlainText>true</PlainText> </Password> <Enabled>true</Enabled> <LogonCount>1</LogonCount> <!-- USERNAME HERE --> - <Username>support</Username> + <Username>___MYUSER___</Username> </AutoLogon> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <Order>1</Order> <Description>Password Never Expires</Description> - <CommandLine>cmd /C wmic useraccount where name=&quot;support&quot; set PasswordExpires=false</CommandLine> + <CommandLine>cmd /C wmic useraccount where name=&quot;___MYUSER___&quot; set PasswordExpires=false</CommandLine> </SynchronousCommand> <SynchronousCommand wcm:action="add"> <Order>2</Order> diff --git a/source/searchreplace.pb b/source/searchreplace.pb new file mode 100644 index 0000000..9210def --- /dev/null +++ b/source/searchreplace.pb @@ -0,0 +1,80 @@ +; searchreplace.pb +; ------------------------------------------------------------ +; search a string in a file and replace all occurences +; LICENSE : GPL +; AUTHOR : Michael H.G. Schmidt +; EMAIL : michael@schmidt2.de +; DATE : 20210328 +; ------------------------------------------------------------ +; + +OpenConsole() + +; check commandline ... +If ( CountProgramParameters() <> 3 ) + ConsoleColor(14,0) + PrintN("") + PrintN("usage: searchreplace <filename> <oldstring> <newstring>") + PrintN("") + ConsoleColor(15,0) + PrintN("search a string in a file and replace all occurences") + PrintN(" oldstring: string to search") + PrintN(" newstring: string to replace") + ConsoleColor(7,0) + PrintN("") + End 99 +EndIf + +; get arguments ... +workfile$ = ProgramParameter(0) +oldstring$ = ProgramParameter(1) +newstring$ = ProgramParameter(2) + +; vars +tempfile$ = workfile$ + "_T" + +; +; MAIN +; + +; open workfile ... +If Not ReadFile(0, workfile$, #PB_File_SharedRead | #PB_File_NoBuffering) + PrintN("ERROR while opening file [ " + workfile$ + " ] for reading!") + End 99 +EndIf + +; cleanup ... +DeleteFile(tempfile$,#PB_FileSystem_Force) + +; open tempfile ... +If Not OpenFile(1, tempfile$, #PB_File_SharedWrite | #PB_File_NoBuffering) + PrintN("ERROR while opening tempfile [ " + tempfile$ + " ] for writing!") + End 99 +EndIf + +PrintN("working on [ "+ workfile$ +" ] and replacing string [ "+ oldstring$ +" ] With [ "+ newstring$ +" ] ...") +Repeat + ; read a line ... + line$ = ReadString(0) + + ; search and replace ... + result$ = ReplaceString(line$, oldstring$, newstring$) + + ; write to tempfile ... + WriteStringN(1, result$) +Until Eof(0) + +; close files ... +CloseFile(0) +CloseFile(1) + +; delete workfile ... +DeleteFile(workfile$,#PB_FileSystem_Force) + +; move tempfile in place of original file ... +dummy = RenameFile(tempfile$, workfile$) + +; IDE Options = PureBasic 5.73 LTS (Windows - x64) +; CursorPosition = 54 +; FirstLine = 30 +; EnableXP \ No newline at end of file diff --git a/tools/.gitignore b/tools/.gitignore index 1367f13..f647771 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -8,3 +8,5 @@ !allpull.exe !simpletail.exe !installmonitor.exe +!searchreplace.exe + diff --git a/tools/searchreplace.exe b/tools/searchreplace.exe new file mode 100644 index 0000000000000000000000000000000000000000..5df9e68511d1585279ee5ec141bb05a2bca02a0a GIT binary patch literal 18944 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 XoJ~p_q`9gw#mI0M{(I|xumt`SF)qf( literal 0 HcmV?d00001