Script for automating a large assortment of AME related actions
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3947 lines
216 KiB

  1. @ECHO OFF
  2. GOTO SCRIPT-START
  3. REM --------------------------DATABASE--------------------------
  4. REM DB-Languages
  5. ::1 |United States| |Chinese| |Hindi (Devanagari) Traditional| |Spanish| |French|
  6. ::2 |Arabic| |Russian| |Bangla| |Portuguese| |Albanian|
  7. ::3 |Amharic| |Armenian| |Assamese - Inscript| |Azerbaijani| |Bashkir|
  8. ::4 |Belarusian| |Belgian| |Bosnian (Cyrillic)| |Buginese| |Bulgarian|
  9. ::5 |Canadian| |Central Atlas Tamazight| |Central Kurdish| |Cherokee| |Croatian|
  10. ::6 |Czech| |Danish| |Divehi| |Dutch| |Dzongkha|
  11. ::7 |Estonian| |Faeroese| |Finnish| |Futhark| |Georgian|
  12. ::8 |German| |Gothic| |Greek| |Greenlandic| |Guarani|
  13. ::9 |Gujarati| |Hausa| |Hebrew| |Hungarian| |Icelandic|
  14. ::10 |Igbo| |Indian| |Inuktitut| |Irish| |Italian|
  15. ::11 |Japanese NON-FUNCTIONAL| |Javanese| |Kannada| |Kazakh| |Khmer|
  16. ::12 |Konkoni (Devanagari) - INSCRIPT| |Korean| |Kyrgyz Cyrillic| |Lao| |Latin American|
  17. ::13 |Latvian| |Lisu| |Lithuanian| |Luxembourgish| |Macedonia|
  18. ::14 |Malayalam| |Maltese| |Maori| |Marathi| |Mongolian|
  19. ::15 |Myanmar| |N'ko| |Nepali| |New Tai Lue| |Norwegian|
  20. ::16 |Odia| |Ol Chiki| |Old Italic| |Osmanya| |Pashto (Afghanistan)|
  21. ::17 |Persian| |Phags-pa| |Polish| |Punjabi| |Romanian|
  22. ::18 |Sakha| |Sami| |Scottish Gaelic| |Serbian| |Sesotho sa Leboa|
  23. ::19 |Setswana| |Sinhala| |Slovak| |Slovenian| |Sora|
  24. ::20 |Sorbian| |Swedish| |Swiss| |Syriac| |Tai Le|
  25. ::21 |Tajik| |Tamil| |Tatar| |Telugu| |Thai|
  26. ::22 |Tibetan| |Tifinagh| |Tigrinya| |Turkish| |Turkmen|
  27. ::23 |Uyghur| |Ukrainian| |United Kingdom| |Urdu| |Uzbek|
  28. ::24 |Vietnamese| |Wolof| |Yakut| |Yoruba|
  29. REM DB-Corresponding Commands
  30. ::1 |US& GOTO KBLANG-SUBLANGS| |CHI& GOTO KBLANG-SUBLANGS| |0439:00010439| |SPA& GOTO KBLANG-SUBLANGS| |040c:0000040c|
  31. ::2 |ARA& GOTO KBLANG-SUBLANGS| |RUS& GOTO KBLANG-SUBLANGS| |BAN& GOTO KBLANG-SUBLANGS| |POR& GOTO KBLANG-SUBLANGS| |041c:0000041c|
  32. ::3 |045e:{E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{8F96574E-C86C-4bd6-9666-3F7327D4CBE8}| |ARM& GOTO KBLANG-SUBLANGS| |044d:0000044d| |AZ& GOTO KBLANG-SUBLANGS| |046d:0000046d|
  33. ::4 |0423:00000423| |BEL& GOTO KBLANG-SUBLANGS| |141a:00000201a| |0421:000b0c00| |BUL& GOTO KBLANG-SUBLANGS|
  34. ::5 |CAN& GOTO KBLANG-SUBLANGS| |085f:0000085f| |0429:00000429| |CHE& GOTO KBLANG-SUBLANGS| |041a:0000041a|
  35. ::6 |CZE& GOTO KBLANG-SUBLANGS| |0406:00000406| |DIV& GOTO KBLANG-SUBLANGS| |0413:00000413| |0C51:00000C51|
  36. ::7 |0425:00000425| |0438:00000438| |FIN& GOTO KBLANG-SUBLANGS| |0407:00120c00| |GEO& GOTO KBLANG-SUBLANGS|
  37. ::8 |GER& GOTO KBLANG-SUBLANGS| |0407:000c0c00| |GRE& GOTO KBLANG-SUBLANGS| |046f:0000046f| |0474:00000474|
  38. ::9 |0447:00000447| |0468:00000468| |040d:0000040d| |HUN& GOTO KBLANG-SUBLANGS| |040f:0000040f|
  39. ::10 |0470:00000470| |4009:00004009| |INU& GOTO KBLANG-SUBLANGS| |083C:000001809| |ITA& GOTO KBLANG-SUBLANGS|
  40. ::11 |0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}| |0421:00110c00| |044b:0000044b| |043f:0000043f| |KHM& GOTO KBLANG-SUBLANGS|
  41. ::12 |0457:00000439| |KOR& GOTO KBLANG-SUBLANGS| |0440:00000440| |0454:00000454| |080a:0000080a|
  42. ::13 |LAT& GOTO KBLANG-SUBLANGS| |LIS& GOTO KBLANG-SUBLANGS| |LIT& GOTO KBLANG-SUBLANGS| |046e:0000046e| |MAC& GOTO KBLANG-SUBLANGS|
  43. ::14 |044c:0000044c| |MAL& GOTO KBLANG-SUBLANGS| |0481:00000481| |044e:0000044e| |MON& GOTO KBLANG-SUBLANGS|
  44. ::15 |0455:00010c00| |0409:000090c00| |0461:00000461| |0409:00020c00| |NOR& GOTO KBLANG-SUBLANGS|
  45. ::16 |0448:00000448| |0409:d0c00| |0409:000f0c00| |0409:000e0c00| |0463:00000463|
  46. ::17 |PER& GOTO KBLANG-SUBLANGS| |0409:000a0c00| |POL& GOTO KBLANG-SUBLANGS| |0446:00000446| |ROM& GOTO KBLANG-SUBLANGS|
  47. ::18 |0485:00000485| |SAM& GOTO KBLANG-SUBLANGS| |0809:00011809| |SER& GOTO KBLANG-SUBLANGS| |046c:0000046c|
  48. ::19 |0432:00000432| |SIN& GOTO KBLANG-SUBLANGS| |SLO& GOTO KBLANG-SUBLANGS| |0424:00000424| |0409:00100c00|
  49. ::20 |SOR& GOTO KBLANG-SUBLANGS| |SWE& GOTO KBLANG-SUBLANGS| |SWI& GOTO KBLANG-SUBLANGS| |SYR& GOTO KBLANG-SUBLANGS| |0409:00030c00|
  50. ::21 |0428:00000428| |TAM& GOTO KBLANG-SUBLANGS| |TAT& GOTO KBLANG-SUBLANGS| |044a:0000044a| |THA& GOTO KBLANG-SUBLANGS|
  51. ::22 |TIB& GOTO KBLANG-SUBLANGS| |TIF& GOTO KBLANG-SUBLANGS| |0473:{E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{3CAB88B7-CC3E-46A6-9765-B772AD7761FF}| |TUR& GOTO KBLANG-SUBLANGS| |0442:00000442|
  52. ::23 |UYG& GOTO KBLANG-SUBLANGS| |UKR& GOTO KBLANG-SUBLANGS| |UK& GOTO KBLANG-SUBLANGS| |0420:00000420| |0843:00000843|
  53. ::24 |VIE& GOTO KBLANG-SUBLANGS| |0488:00000488| |0485:00000485| |046a:0000056a|
  54. REM DB-Submenu Input Methods
  55. :: |ARA| |Arabic (101)| |Arabic (102)| |Arabic (102 AZERTY)|
  56. :: |ARM| |Armenian Eastern| |Armenian Phonetic| |Armenian Typewriter| |Armenian Western|
  57. :: |AZE| |Azerbaijani (Standard)| |Azerbaijani Cyrillic| |Azerbaijani Latin|
  58. :: |BEL| |Belgian (Comma)| |Belgian (Period)| |Belgian French|
  59. :: |BAN| |Bangla (Bangladesh)| |Bangla (India)| |Bangla (India) - Legacy|
  60. :: |BUL| |Bulgarian| |Bulgarian Latin| |Bulgarian (Phonetic Layout)| |Bulgarian (Phonetic Traditonal)| |Bulgarian (Typewriter)|
  61. :: |CAN| |Canadian French| |Canadian French (Legacy)| |Canadian Multilingual Standard|
  62. :: |CHE| |Cherokee Nation| |Cherokee Nation Phonetic|
  63. :: |CHI| |Chineese (Simplified)| |Chineese (Traditional) NON-FUNCTIONAL| |Chineese (Traditional, Hong Kong S.A.R.)| |Chineese (Traditonal Macao S.A.R.)| |Chineese (Simplified, Singapore)|
  64. :: |CZE| |Czech| |Czech (QWERTY)| |Czech Programmers|
  65. :: |DIV| |Divehi Phonetic| |Divehi Typewriter|
  66. :: |FIN| |Finnish| |Finnish with Sami|
  67. :: |GEO| |Georgian| |Georgian (Ergonomic)| |Georgian (QWERTY)| |Georgian Ministry of Education and Science Schools| |Georgian (Old Alphabets)|
  68. :: |GER| |German| |German (IBM)|
  69. :: |GRE| |Greek| |Greek (220)| |Greek (220) Latin| |Greek (319)| |Greek (319) Latin| |Greek Latin| |Greek Polytonic|
  70. :: |HUN| |Hungarian| |Hungarian 101-key|
  71. :: |INU| |Inuktitut - Latin| |Inuktitut - Naqittaut|
  72. :: |ITA| |Italian| |Italian (142)|
  73. :: |KHM| |Khmer| |Khmer (NIDA)|
  74. :: |KOR| |Korean (Hangul)| |Korean (Old Hangul)|
  75. :: |LAT| |Latvian (Standard)| |Latvian (Legacy)|
  76. :: |LIS| |Lisu (Basic)| |Lisu (Standard)|
  77. :: |LIT| |Lithuanian| |Lithuanian IBM| |Lithuanian Standard|
  78. :: |MAC| |Macedonian (FYROM)| |Macedonian (FYROM) - Standard|
  79. :: |MAL| |Maltese 47-key| |Maltese 48-key|
  80. :: |MON| |Mongoloian (Mongolian Script - Legacy)| |Mongolian (Mongolian Script - Standard)| |Mongolian Cyrillic|
  81. :: |NOR| |Norwegian| |Norwegian with Sami|
  82. :: |PER| |Persian| |Persian (Standard)|
  83. :: |POL| |Polish (214)| |Polish (Programmers)|
  84. :: |POR| |Portuguese| |Portuguese (Brazilian ABNT)| |Portuguese (Brazilian ABNT2)|
  85. :: |ROM| |Romanian (Legacy)| |Romanian (Programmers) |Romanian (Standard)|
  86. :: |RUS| |Russian| |Russian - Mnemonic| |Russian (Typewriter)|
  87. :: |SAM| |Sami Extended Finland-Sweden| |Sami Extended Norway|
  88. :: |SER| |Serbian (Cyrillic)| |Serbian (Latin)|
  89. :: |SIN| |Sinhala| |Sinhala - wij 9|
  90. :: |SLO| |Slovak| |Slovak (QWERTY)|
  91. :: |SOR| |Sorbian Extended| |Sorbian Standard| |Sorbian Standard (Legacy)|
  92. :: |SPA| |Spanish (Spain)| |Spanish (Mexico)| |Spanish Variation|
  93. :: |SWE| |Swedish| |Swedish with Sami|
  94. :: |SWI| |Swiss French| |Swiss German|
  95. :: |SYR| |Syriac| |Syriac Phonetic|
  96. :: |TAM| |Tamil| |Tamil (99 Keyboard)|
  97. :: |TAT| |Tatar| |Tatar (Legacy)|
  98. :: |THA| |Thai Kedmanee| |Thai Kedmanee (non-ShiftLock)| |Thai Pattachote| |Thai Pattachote (non-ShiftLock)|
  99. :: |TIB| |Tibetan (PRC - Standard)| |Tibetan (PRC - Legacy)|
  100. :: |TIF| |Tifinagh (Basic)| |Tifinagh (Full)|
  101. :: |TUR| |Turkish F| |Turkish Q|
  102. :: |UYG| |Uyghur| |Uygher (Legacy)| |Uyghur (Greek 220)|
  103. :: |UKR| |Ukrainian| |Ukrainian (Enhanced)|
  104. :: |UK| |United Kingdom| |United Kingdom Extended|
  105. :: |US| |United States - English| |United States - International| |United States - Dvorak| |United States - Dvorak (Left Hand)| |United States - Dvorak (Right Hand)|
  106. :: |VIE| |Vietnamese| |Vietnamese Telex|
  107. REM DB-SubCorresponding Input Methods
  108. :: |ARA| |0401:00000401| |0401:00010401| |0401:00020401|
  109. :: |ARM| |042b:0000042b| |042b:0002042b| |042b:0003042b| |042b:0001042b|
  110. :: |AZE| |042c:0001042c| |042c:0000082c| |042c:0000042c|
  111. :: |BEL| |080c:0001080c| |080c:00000813| |080c:0000080c|
  112. :: |BAN| |0445:00000445| |0445:00020445| |0445:00010445|
  113. :: |BUL| |0402:00030402| |0402:00010402| |0402:00020402| |0402:00040402| |0402:00000402|
  114. :: |CAN| |0c0c:00001009| |0c0c:00000c0c| |0c0c:00011009|
  115. :: |CHE| |045c:0000045c| |045c:0001045c|
  116. :: |CHI| |0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7}| |0404:{B115690A-EA02-48D5-A231-E3578D2FDF80}{B2F9C502-1742-11D4-9790-0080C882687E}| |0404:00000c04| |0404:00001404| |0404:00001004|
  117. :: |CZE| |2000:00000405| |2000:00010405| |2000:00020405|
  118. :: |DIV| |0465:00000465| |0465:00010465|
  119. :: |FIN| |040b:0000040b| |040b:0001083b|
  120. :: |GEO| |0437:00020437| |0437:00010437| |0437:00030437| |0437:00040437|
  121. :: |GER| |0407:00000407| |0407:00010407|
  122. :: |GRE| |0408:00000408| |0408:00010408| |0408:00030408| |0408:00020408| |0408:00040408| |0408:00050408| |0408:00600408|
  123. :: |HUN| |040e:0000040e| |040e:0001040e|
  124. :: |INU| |085d:0000085d| |085d:0001045d|
  125. :: |ITA| |0410:00000410| |0410:00010410|
  126. :: |KHM| |0453:00000453| |0453:00010453|
  127. :: |KOR| |0412:{A028AE76-01B1-46C2-99C4-ACD9858AE02F}{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}| |0412:{a1e2b86b-924a-4d43-80f6-8a820df7190f}{b60af051-257a-46bc-b9d3-84dad819bafb}|
  128. :: |LAT| |0426:00020426| |0426:00010426|
  129. :: |LIS| |0409:00070c00| |0409:00080c00|
  130. :: |LIT| |0427:00010427| |0427:00000427| |0427:00020427|
  131. :: |MAC| |042f:0000042f| |042f:0001042f|
  132. :: |MAL| |043a:0000043a| |043a:0001043a|
  133. :: |MON| |0850:00000850| |0850:00020850| |0850:00000450|
  134. :: |NOR| |0814:00000414| |0814:0000043b|
  135. :: |PER| |0429:00000429| |0429:00050429|
  136. :: |POL| |0415:00010415| |0415:00000415|
  137. :: |POR| |0816:00000816| |0816:00000416| |0816:00010416|
  138. :: |ROM| |0418:00000418| |0418:00020418| |0418:00010418|
  139. :: |RUS| |0419:00000419| |0419:00020419| |0419:00010419|
  140. :: |SAM| |083b:0002083b| |043b:0001043b|
  141. :: |SER| |1C1A:00000c1a| |241A:0000081a|
  142. :: |SIN| |045b:0000045b| |045b:0001045b|
  143. :: |SLO| |041b:0000041b| |041b:0001041b|
  144. :: |SOR| |042e:0001042e| |042e:0002042e| |042e:0000042e|
  145. :: |SPA| |0c0a:0000040a| |080a:0000080a| |0c0a:0001040a|
  146. :: |SWE| |041d:0000041d| |083b:0000083b|
  147. :: |SWI| |100c:0000100c| |0807:00000807|
  148. :: |SYR| |045a:0000045a| |045a:0001045a|
  149. :: |TAM| |0449:00000449| |0449:00020449|
  150. :: |TAT| |0444:00010444| |0444:00000444|
  151. :: |THA| |041e:0000041e| |041e:0002041e| |041e:0001041e| |041e:0003041e|
  152. :: |TIB| |0451:00010451| |0451:00000451|
  153. :: |TIF| |0409:00050c00| |0409:00050c00|
  154. :: |TUR| |041f:0001041f| |041f:0000041f|
  155. :: |UYG| |0480:00010480| |0480:00000480| |0480:00010408|
  156. :: |UKR| |0422:00000422| |0422:00020422|
  157. :: |UK| |0809:00000809| |0809:00000452|
  158. :: |US| |0409:00000409| |0409:00020409| |0409:00010409| |0409:00030409| |0409:00040409|
  159. :: |VIE| |042a:0000042a| |042A:{C2CB2CF0-AF47-413E-9780-8BC3A3C16068}{5FB02EC5-0A77-4684-B4FA-DEF8A2195628}|
  160. REM Marker
  161. REM ------------------------DATABASE-END--------------------------
  162. REM ---------------------------START----------------------------
  163. :SCRIPT-START
  164. IF NOT "%~1"=="-debug" (
  165. MODE 80, 26
  166. )
  167. COLOR 70
  168. TITLE Central AME Script
  169. SET "ver=v1.4"
  170. IF "%~1"=="permsCheck" EXIT 0
  171. REM Allows for more flexibility with these two variables
  172. SET "dirPath=%~dp0"
  173. SET "scriptPath=%~f0"
  174. FOR /F %%A IN ('"prompt $H &echo on &for %%B in (1) do rem"') DO SET BS=%%A
  175. SET /A "auxWaitCount=0"
  176. CALL :AUX-GETUSERNAME
  177. IF /I "%~1"=="LangSet" GOTO DISPLANG-USERCHECK
  178. IF /I "%~1"=="kbLangSet" GOTO KBLANG-PRESET
  179. IF /I "%~1"=="kbLangRem" GOTO KBLANG-REMOVELANG
  180. IF /I "%~1"=="wslInstall" GOTO ALTCHILD-WSL-DISTROINSTALL
  181. IF /I "%~1"=="wslRemove" GOTO ALTCHILD-WSL-DISTROREMOVE
  182. :SCRIPT-ADMINCHECK1
  183. POWERSHELL -NoP -C "[Console]::CursorVisible = $False"
  184. CALL :AUX-GENRND "7"
  185. FOR /F "usebackq tokens=1 delims= " %%A IN (`WMIC process where "name='cmd.exe' and CommandLine like '%%%rndOut%%%'" get ParentProcessId 2^>^&1 ^| FINDSTR "1 2 3 4 5 6 7 8 9 0"`) DO SET "scriptPID=%%A"
  186. IF "%scriptPID%"=="" (
  187. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^|
  188. POWERSHELL -NoP -C "Write-Host """`n`n`n Failed to fetch script process ID.`n __________________________________________________________`n`n Press any key to Exit: """ -NoNewLine; [Console]::CursorVisible = $True; $NULL = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')"
  189. EXIT /B 0
  190. )
  191. FOR /F "usebackq tokens=1 delims= " %%A IN (`WMIC useraccount where "name='%currentUsername:'=\'%'" get sid 2^>^&1 ^| FINDSTR "S-"`) DO SET "userSID=%%A"
  192. IF /I NOT "%username%"=="%currentUsername%" (
  193. CALL :AUX-GETUSERENV
  194. SET "altRun=true"
  195. ) ELSE (
  196. SET "userTemp=%TEMP%"
  197. SET "userLocalAppData=%LOCALAPPDATA%"
  198. SET "userLocalAppData=%APPDATA%"
  199. )
  200. CALL :AUX-ELEVATIONCHECK
  201. NET SESSION > NUL 2>&1
  202. IF %ERRORLEVEL% GTR 0 GOTO SCRIPT-ADMINCHECK2
  203. IF /I "%~1"=="wslUnattend" SET "wslDistro=%~2" & SET "wslGroups=%~3" & SET "wslUnattendRun=true" & GOTO WSL-DISTROINSTALL
  204. IF "%userRestart%"=="true" (
  205. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^|
  206. POWERSHELL -NoP -C "Write-Host """`n`n`n Running this script after a username change`n may cause serious damage! Run anyways?`n [Y] [N]`n __________________________________________________________`n`n Choose an option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  207. IF ERRORLEVEL 2 EXIT /B 0
  208. )
  209. WMIC process where "name='cmd.exe' and ProcessId!='%scriptPID%' or name='WindowsTerminal.exe' and ProcessId!='%scriptPID%'" get name 2>&1 | FINDSTR /i /c:"cmd.exe" /c:"WindowsTerminal.exe" > NUL 2>&1
  210. IF %ERRORLEVEL% EQU 1 (
  211. DEL /Q /F "%TEMP%\[amecs]*" > NUL 2>&1
  212. DEL /Q /F "%userTemp%\[amecs]*" > NUL 2>&1
  213. )
  214. GOTO HOME-MAINMENU
  215. :SCRIPT-ADMINCHECK2
  216. IF /I "%~1"=="wslUnattend" SET "wslDistro=%~2" & SET "wslGroups=%~3" & SET "wslUnattendRun=true" & SET "adminPrivs=false" & GOTO WSL-DISTROINSTALL
  217. POWERSHELL -NoP -C "Start-Process '%scriptPath:'=''%' -Verb RunAs" > NUL 2>&1
  218. IF %ERRORLEVEL% GTR 0 (
  219. IF "%altRun%"=="true" (
  220. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^|
  221. POWERSHELL -NoP -C "Write-Host """`n`n`n Script must be run as the current user`n or with administrator privilages.`n __________________________________________________________`n`n Press any key to Exit: """ -NoNewLine; [Console]::CursorVisible = $True; $NULL = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')"
  222. EXIT /B 0
  223. )
  224. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^|
  225. POWERSHELL -NoP -C "Write-Host """`n`n`n Elevation canceled, run with limited functionality?`n [Y] [N]`n __________________________________________________________`n`n Choose an option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  226. IF ERRORLEVEL 2 (
  227. EXIT /B 0
  228. ) ELSE (
  229. SET "adminPrivs=false"
  230. TASKLIST /FI "WINDOWTITLE eq Central AME Script" /FI "PID ne %scriptPID%" 2>&1 | FINDSTR /i /c:".exe">NUL 2>&1 || TASKLIST /FI "WINDOWTITLE eq Administrator: Central AME Script" /FI "PID ne %scriptPID%" 2>&1 | FINDSTR /i /c:".exe" > NUL 2>&1
  231. IF ERRORLEVEL 1 DEL /Q /F "%TEMP%\[amecs]*" > NUL 2>&1
  232. GOTO HOME-MAINMENU
  233. )
  234. )
  235. EXIT /B 0
  236. REM -------------------------START-END--------------------------
  237. REM ------------
  238. REM Menu Section
  239. REM ------------
  240. REM ----------------------------MENU----------------------------
  241. :HOME-MAINMENU
  242. IF "%adminPrivs%"=="false" GOTO HOME-LIMMAINMENU
  243. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  244. CALL :MO-CHOICE -InitChoices "1234567EX" "+GOTO USERPASS-MENU+GOTO LOCKSCREEN-GRABIMAGE+GOTO PFP-GRABIMAGE+GOTO HOME-LANGUAGE+GOTO !homeElevLoc!+GOTO !homeNULoc!+GOTO !homeALLoc!+GOTO HOME-EXTRA+EXIT /B 0+"
  245. CALL :MO-MAINMENU
  246. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Change Username or Password`n$(' '.padleft(17, ' '))[2] Change Lockscreen Image`n$(' '.padleft(17, ' '))[3] Change Profile Image`n$(' '.padleft(17, ' '))[4] Manage Language Settings`n$(' '.padleft(17, ' '))[5] %homeElevMsg%`n$(' '.padleft(17, ' '))[6] %homeNUMsg%`n$(' '.padleft(17, ' '))[7] %homeALMsg%`n`n$(' '.padleft(17, ' '))[E] Extra`n$(' '.padleft(17, ' '))[X] Exit`n"
  247. :HOME-EXTRA
  248. IF "%adminPrivs%"=="false" GOTO HOME-LIMEXTRA
  249. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  250. CALL :MO-CHOICE -InitChoices "1234567890X" "+GOTO HOME-WSL+GOTO !homeHIBLoc!+GOTO !homeNOTIFCENLoc!+GOTO !homeNOTIFLoc!+GOTO !homeWSHLoc!+GOTO !homeVBSLoc!+GOTO !homeNCSILoc!+CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO | Central AME Script %ver% | & POWERSHELL -NoP -C ""Write-Host """"""""`n`n`n$(' '.padleft(13, ' '))WARNING: This is a beta feature, use at your own risk.`n$(' '.padleft(11, ' '))__________________________________________________________`n`n$(' '.padleft(11, ' '))Press any key to continue: """""""" -NoNewLine; [Console]::CursorVisible = $True; $NULL = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')"" & GOTO NEWUSER-MENU+GOTO !homeNVCPLoc!+GOTO HOME-MAINMENU+EXIT /B 0+"
  251. CALL :MO-EXTRA
  252. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Manage WSL%homeExtWSLMsg%`n$(' '.padleft(17, ' '))[2] %homeHIBMsg%`n$(' '.padleft(17, ' '))[3] %homeNOTIFCENMsg%`n$(' '.padleft(17, ' '))[4] %homeNOTIFMsg%`n$(' '.padleft(17, ' '))[5] %homeWSHMsg%`n$(' '.padleft(17, ' '))[6] %homeVBSMsg%`n$(' '.padleft(17, ' '))[7] %homeNCSIMsg%`n$(' '.padleft(17, ' '))[8] Create New User (Beta)""""; %homeNVCPMsg%; Write-Host """"`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit`n"
  253. :HOME-LANGUAGE
  254. IF "%adminPrivs%"=="false" GOTO HOME-LIMLANGUAGE
  255. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  256. CALL :MO-CHOICE -InitChoices "123450X" "+SET ""lpStatus="" & GOTO DISPLANG-MENUP1+SET ""kbLangLoc=:COMM:& GOTO KBLANG-PRESET"" & GOTO KBLANG-LANGS+SET ""kbLangLoc=:COMM:& GOTO KBLANG-REMOVELANG"" & GOTO KBLANG-LANGS+SET ""lpStatus=added"" & GOTO DISPLANG-MENUP1+SET ""lpStatus=removed"" & GOTO DISPLANG-MENUP1+GOTO HOME-MAINMENU+EXIT /B 0+"
  257. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Change Display Language`n$(' '.padleft(17, ' '))[2] Add Keyboard Language`n$(' '.padleft(17, ' '))[3] Remove Keyboard Language`n$(' '.padleft(17, ' '))[4] Install Language Pack`n$(' '.padleft(17, ' '))[5] Uninstall Language Pack`n`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit`n"
  258. :HOME-WSL
  259. IF "%adminPrivs%"=="false" GOTO HOME-LIMWSL
  260. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  261. CALL :MO-CHOICE -InitChoices "123U0X" "+GOTO !homeWSLLoc!+SET ""wslMenuLoc=WSL-DISTROINSTALL"" & GOTO WSL-DISTROMENUP1+SET ""wslMenuLoc=WSL-DISTROREMOVE"" & GOTO WSL-DISTROMENUP1+POWERSHELL -NoP -C ""[Console]::SetCursorPosition(17,10); Write-Host '[U] Unattended Distro Install (Enabled) ' -NoNewLine -ForegroundColor Green; [Console]::SetCursorPosition(17,7); Write-Host '[2] Install WSL Distro' -NoNewLine; [Console]::SetCursorPosition(0,!homeWSLChPos!); Write-Host ' Choose a menu option: ' -NoNewLine; [Console]::SetCursorPosition(33,!homeWSLChPos!)"" & SET ""wslUnattend=true"" & GOTO INTERNAL-HOME_WSL-MARKER+GOTO HOME-MAINMENU+EXIT /B 0+"
  262. CALL :MO-WSL
  263. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] %homeWSLMsg%%homeWSLDistroMsgs%`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit%homeWSLStatus%"
  264. :INTERNAL-HOME_WSL-MARKER
  265. IF "%wslUnattend%"=="true" (
  266. POWERSHELL -NoP -C "[Console]::CursorVisible = $True; CHOICE /C 12U0X /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  267. IF ERRORLEVEL 5 EXIT /B 0
  268. IF ERRORLEVEL 4 GOTO HOME-MAINMENU
  269. IF ERRORLEVEL 3 POWERSHELL -NoP -C "[Console]::SetCursorPosition(17,10); Write-Host '[U] Unattended Distro Install (Disabled)' -NoNewLine; [Console]::SetCursorPosition(17,7); Write-Host '[2] Install WSL Distro' -ForegroundColor DarkGray -NoNewLine; [Console]::SetCursorPosition(0,%homeWSLChPos%); Write-Host ' Choose a menu option: ' -NoNewLine; [Console]::SetCursorPosition(33,%homeWSLChPos%)" & SET "wslUnattend=false" & GOTO INTERNAL-HOME_WSL-MARKER
  270. IF ERRORLEVEL 2 SET "wslMenuLoc=WSL-DISTROINSTALL" & GOTO WSL-DISTROMENUP1
  271. IF ERRORLEVEL 1 GOTO %homeWSLLoc%
  272. )
  273. IF NOT "%wslUnattend%"=="" POWERSHELL -NoP -C "[Console]::CursorVisible = $True; CHOICE /C 1U0X /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  274. IF ERRORLEVEL 4 EXIT /B 0
  275. IF ERRORLEVEL 3 GOTO HOME-MAINMENU
  276. IF ERRORLEVEL 2 POWERSHELL -NoP -C "[Console]::SetCursorPosition(17,10); Write-Host '[U] Unattended Distro Install (Enabled) ' -NoNewLine -ForegroundColor Green; [Console]::SetCursorPosition(17,7); Write-Host '[2] Install WSL Distro' -NoNewLine; [Console]::SetCursorPosition(0,%homeWSLChPos%); Write-Host ' Choose a menu option: ' -NoNewLine; [Console]::SetCursorPosition(33,%homeWSLChPos%)" & SET "wslUnattend=true" & GOTO INTERNAL-HOME_WSL-MARKER
  277. IF ERRORLEVEL 1 GOTO %homeWSLLoc%
  278. :HOME-LIMMAINMENU
  279. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  280. CALL :MO-CHOICE -InitChoices "4EX" "+GOTO HOME-LIMLANGUAGE+GOTO HOME-EXTRA+EXIT /B 0+"
  281. CALL :MO-LIMMAINMENU
  282. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Change Username or Password"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[2] Change Lockscreen Image"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[3] Change Profile Image"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[4] Manage Language Settings""""; Write-Host """"$(' '.padleft(17, ' '))[5] %homeElevMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[6] %homeNUMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[7] %homeALMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"`n$(' '.padleft(17, ' '))[E] Extra`n$(' '.padleft(17, ' '))[X] Exit`n"
  283. :HOME-LIMEXTRA
  284. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  285. CALL :MO-CHOICE -InitChoices "140X" "+GOTO HOME-LIMWSL+GOTO !homeNOTIFLoc!+GOTO HOME-MAINMENU+EXIT /B 0+"
  286. CALL :MO-LIMEXTRA
  287. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Manage WSL""""%homeExtWSLMsg%; Write-Host """"$(' '.padleft(17, ' '))[2] %homeHIBMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[3] %%homeNOTIFCENMsg%%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[4] %%homeNOTIFMsg%%""""; Write-Host """"$(' '.padleft(17, ' '))[5] %homeWSHMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[6] %homeVBSMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[7] %homeNCSIMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[8] Create New User (Beta)"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; %homeNVCPMsg%; Write-Host """"`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit`n"
  288. :HOME-LIMLANGUAGE
  289. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  290. CALL :MO-CHOICE -InitChoices "230X" "+SET ""kbLangLoc=:COMM:& GOTO KBLANG-PRESET"" & GOTO KBLANG-LANGS+SET ""kbLangLoc=:COMM:& GOTO KBLANG-REMOVELANG"" & GOTO KBLANG-LANGS+GOTO HOME-MAINMENU+EXIT /B 0+"
  291. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] Change Display Language"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[2] Add Keyboard Language`n$(' '.padleft(17, ' '))[3] Remove Keyboard Language""""; Write-Host """"$(' '.padleft(17, ' '))[4] Install Language Pack"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"$(' '.padleft(17, ' '))[5] Uninstall Language Pack"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit`n"
  292. :HOME-LIMWSL
  293. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  294. CALL :MO-CHOICE -InitChoices "230X" "+SET ""wslMenuLoc=WSL-DISTROINSTALL"" & GOTO WSL-DISTROMENUP1+SET ""wslMenuLoc=WSL-DISTROREMOVE"" & GOTO WSL-DISTROMENUP1+GOTO HOME-MAINMENU+EXIT /B 0+"
  295. CALL :MO-LIMWSL
  296. CALL :MO-CHOICE -StartChoices "$(' '.padleft(17, ' '))[1] %homeWSLMsg%"""" -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red; Write-Host """"%homeWSLDistroMsgs%`n$(' '.padleft(17, ' '))[0] Return to Menu`n$(' '.padleft(17, ' '))[X] Exit`n"
  297. REM --------------------------MENU-END--------------------------
  298. REM -----------------
  299. REM Primary Functions
  300. REM -----------------
  301. REM --------------------------USERPASS--------------------------
  302. :USERPASS-MENU
  303. SETLOCAL
  304. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  305. POWERSHELL -NoP -C "Write-Host """ [1] Change Username`n [2] Change Password`n [3] Change Administrator Password`n`n [0] Return to Menu`n [X] Exit`n`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 1230X /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  306. IF %ERRORLEVEL%==1 GOTO USERPASS-USERNAME
  307. IF %ERRORLEVEL%==2 GOTO USERPASS-PASSWORD
  308. IF %ERRORLEVEL%==3 GOTO USERPASS-ADMINPASSWORD
  309. IF %ERRORLEVEL%==4 ENDLOCAL & GOTO HOME-MAINMENU
  310. IF %ERRORLEVEL%==5 EXIT /B 0
  311. :USERPASS-USERNAME
  312. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  313. CALL :AUX-INPUTLOOP "newUsername" "Enter new username, or 'Cancel' to quit" "0" "5"
  314. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  315. ENDLOCAL & SET "currentUsername=%newUsername%"
  316. CALL :AUX-RETURN "Username changed successfully" -HNR R:L.sign-out -L "A sign-out is recommended."
  317. :USERPASS-PASSWORD
  318. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  319. SET "C4Username=%currentUsername%"
  320. CALL :AUX-INPUTLOOP "newPassword" "Enter new password, or 'Cancel' to quit" "0" "4" -Secure
  321. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  322. CALL :AUX-RETURN "Password changed successfully" -H
  323. :USERPASS-ADMINPASSWORD
  324. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  325. SET "C4Username=Administrator"
  326. CALL :AUX-INPUTLOOP "newPassword" "Enter new Administrator password, or 'Cancel' to quit" "0" "4" -Secure
  327. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  328. CALL :AUX-RETURN "Administrator password changed successfully" -H
  329. REM ------------------------USERPASS-END------------------------
  330. REM -------------------------LOCKSCREEN-------------------------
  331. :LOCKSCREEN-GRABIMAGE
  332. SETLOCAL
  333. REM Original Author & Co-Author: Logan Darklock, lucid
  334. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  335. ECHO. & ECHO Select your image
  336. DIR /B "%SYSTEMDRIVE%\Users" | FINDSTR /x "%possibleUserDir%" > NUL 2>&1
  337. IF %ERRORLEVEL% LEQ 0 SET "UserPath=\%possibleUserDir%"
  338. FOR /F "usebackq delims=" %%I in (`POWERSHELL -NoP -C "Start-Sleep -Milliseconds 200; [System.Reflection.Assembly]::LoadWithPartialName('System.windows.forms')|Out-Null;$OFD = New-Object System.Windows.Forms.OpenFileDialog;$OFD.Multiselect = $False;$OFD.Filter = 'Image Files (*.jpg; *.jpeg; *.png; *.bmp; *.jfif)| *.jpg; *.jpeg; *.png; *.bmp; *.jfif';$OFD.InitialDirectory = '%SYSTEMDRIVE%\Users%UserPath%';$OFD.ShowDialog()|out-null;$OFD.FileNames"`) DO SET "lockImgPath=%%~I"
  339. IF "%lockImgPath%"=="" CALL :AUX-RETURN "You must select an image." -H -E
  340. POWERSHELL -NoP -C "Write-Host """`n Remove lockscreen blur? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  341. IF %ERRORLEVEL%==1 REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\System" /v DisableAcrylicBackgroundOnLogon /t REG_DWORD /d 1 /f > NUL
  342. IF %ERRORLEVEL%==2 REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\System" /v DisableAcrylicBackgroundOnLogon /f > NUL 2>&1
  343. :LOCKSCREEN-DEPLOY
  344. ECHO. & ECHO Setting lockscreen image...
  345. TIMEOUT /T 1 /NOBREAK > NUL
  346. REM Necessary for updated 21H2+ versions if RotatingLockScreenEnabled is not already set to 0
  347. REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Creative\%userSID%" /v "RotatingLockScreenEnabled" /t REG_DWORD /d 0 /f > NUL
  348. REG ADD "HKU\%userSID%\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "RotatingLockScreenEnabled" /t REG_DWORD /d 0 /f > NUL
  349. REM Copy wallpaper to the right spot
  350. TAKEOWN /F "%WINDIR%\Web\Screen\img100.jpg">NUL 2>&1 & TAKEOWN /F "%WINDIR%\Web\Screen\img103.png">NUL 2>&1 & TAKEOWN /F "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" > NUL 2>&1
  351. ICACLS "%WINDIR%\Web\Screen\img100.jpg" /reSET>NUL & ICACLS "%WINDIR%\Web\Screen\img103.png" /reSET>NUL & ICACLS "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" /reSET > NUL
  352. COPY "%lockImgPath%" "%WINDIR%\Web\Screen\img100.jpg" /y>NUL & COPY "%lockImgPath%" "%WINDIR%\Web\Screen\img103.png" /y>NUL & COPY "%lockImgPath%" "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" /y > NUL
  353. REM Clear cache
  354. TAKEOWN /R /D Y /F "%PROGRAMDATA%\Microsoft\Windows\SystemData" > NUL
  355. ICACLS "%PROGRAMDATA%\Microsoft\Windows\SystemData" /reSET /t > NUL
  356. FOR /D %%x in ("%PROGRAMDATA%\Microsoft\Windows\SystemData\*") do (
  357. FOR /D %%y in ("%%x\ReadOnly\LockScreen_*") do rd /s /q "%%y" )
  358. CALL :AUX-RETURN "Lockscreen image changed successfully" -H
  359. REM -----------------------LOCKSCREEN-END-----------------------
  360. REM ----------------------------PFP-----------------------------
  361. :PFP-GRABIMAGE
  362. SETLOCAL
  363. REM Original Author & Co-Author: Logan Darklock, lucid
  364. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  365. ECHO. & ECHO Select your image
  366. REM Used for default starting directory for file selection window
  367. DIR /B "%SYSTEMDRIVE%\Users" | FINDSTR /x "%possibleUserDir%" > NUL 2>&1
  368. IF %ERRORLEVEL% LEQ 0 SET "UserPath=\%possibleUserDir%"
  369. FOR /F "usebackq delims=" %%I in (`POWERSHELL -NoP -C "Start-Sleep -Milliseconds 200; [System.Reflection.Assembly]::LoadWithPartialName('System.windows.forms')|Out-Null;$OFD = New-Object System.Windows.Forms.OpenFileDialog;$OFD.Multiselect = $False;$OFD.Filter = 'Image Files (*.jpg; *.jpeg; *.png; *.bmp; *.jfif)| *.jpg; *.jpeg; *.png; *.bmp; *.jfif';$OFD.InitialDirectory = '%SYSTEMDRIVE%\Users%UserPath%';$OFD.ShowDialog()|out-null;$OFD.FileNames"`) DO SET "pfpImgPath=%%~I"
  370. IF "%pfpImgPath%"=="" CALL :AUX-RETURN "You must select an image." -H -E
  371. :PFP-DEPLOY
  372. ECHO. & ECHO Setting profile image...
  373. REM On recent Windows 10 versions, resolutions called for are:
  374. REM 32x32, 40x40, 48x48, 64x64, 96x96, 192x192, 208x208, 240x240, 424x424,
  375. REM 448x448, 1080x1080
  376. SET "usrPfpDir=%PUBLIC%\AccountPictures\%userSID%"
  377. MKDIR "%usrPfpDir%" > NUL 2>&1
  378. TAKEOWN /r /d Y /f "%usrPfpDir%" > NUL
  379. ICACLS "%usrPfpDir%" /reset /t > NUL
  380. DEL /Q /F "%usrPfpDir%\*" > NUL
  381. POWERSHELL -NoP -C "Add-Type -AssemblyName System.Drawing; $img = [System.Drawing.Image]::FromFile((Get-Item '%pfpImgPath%')); $a = New-Object System.Drawing.Bitmap(32, 32); $graph = [System.Drawing.Graphics]::FromImage($a); $graph.DrawImage($img, 0, 0, 32, 32); $a.Save('%usrPfpDir%\32x32.png'); $b = New-Object System.Drawing.Bitmap(40, 40); $graph = [System.Drawing.Graphics]::FromImage($b); $graph.DrawImage($img, 0, 0, 40, 40); $b.Save('%usrPfpDir%\40x40.png'); $c = New-Object System.Drawing.Bitmap(48, 48); $graph = [System.Drawing.Graphics]::FromImage($c); $graph.DrawImage($img, 0, 0, 48, 48); $c.Save('%usrPfpDir%\48x48.png'); $d = New-Object System.Drawing.Bitmap(64, 64); $graph = [System.Drawing.Graphics]::FromImage($d); $graph.DrawImage($img, 0, 0, 64, 64); $d.Save('%usrPfpDir%\64x64.png'); $e = New-Object System.Drawing.Bitmap(96, 96); $graph = [System.Drawing.Graphics]::FromImage($e); $graph.DrawImage($img, 0, 0, 96, 96); $e.Save('%usrPfpDir%\96x96.png'); $f = New-Object System.Drawing.Bitmap(192, 192); $graph = [System.Drawing.Graphics]::FromImage($f); $graph.DrawImage($img, 0, 0, 192, 192); $f.Save('%usrPfpDir%\192x192.png'); $g = New-Object System.Drawing.Bitmap(208, 208); $graph = [System.Drawing.Graphics]::FromImage($g); $graph.DrawImage($img, 0, 0, 208, 208); $g.Save('%usrPfpDir%\208x208.png'); $h = New-Object System.Drawing.Bitmap(240, 240); $graph = [System.Drawing.Graphics]::FromImage($h); $graph.DrawImage($img, 0, 0, 240, 240); $h.Save('%usrPfpDir%\240x240.png'); $i = New-Object System.Drawing.Bitmap(424, 424); $graph = [System.Drawing.Graphics]::FromImage($i); $graph.DrawImage($img, 0, 0, 424, 424); $i.Save('%usrPfpDir%\424x424.png'); $j = New-Object System.Drawing.Bitmap(448, 448); $graph = [System.Drawing.Graphics]::FromImage($j); $graph.DrawImage($img, 0, 0, 448, 448); $j.Save('%usrPfpDir%\448x448.png'); $k = New-Object System.Drawing.Bitmap(1080, 1080); $graph = [System.Drawing.Graphics]::FromImage($k); $graph.DrawImage($img, 0, 0, 1080, 1080); $k.Save('%usrPfpDir%\1080x1080.png')"
  382. SET "usrPfpRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\%userSID%"
  383. REM Runs the reg delete command as SYSTEM
  384. SCHTASKS /create /tn "[amecs]-PFPREG" /tr "CMD /C 'REG DELETE '%usrPfpRegKey%' /f'" /sc MONTHLY /f /rl HIGHEST /ru "SYSTEM" > NUL
  385. IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-PFPREG" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (1)" -H -E
  386. POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-PFPREG' -Settings $TaskSet" > NUL 2>&1
  387. IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-PFPREG" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (2)" -H -E
  388. SCHTASKS /run /tn "[amecs]-PFPREG" > NUL
  389. SCHTASKS /delete /tn "[amecs]-PFPREG" /f > NUL
  390. REG ADD "%usrPfpRegKey%" /f > NUL
  391. REG ADD "%usrPfpRegKey%" /v Image32 /t REG_SZ /d "%usrPfpDir%\32x32.png" /f > NUL
  392. REG ADD "%usrPfpRegKey%" /v Image40 /t REG_SZ /d "%usrPfpDir%\40x40.png" /f > NUL
  393. REG ADD "%usrPfpRegKey%" /v Image48 /t REG_SZ /d "%usrPfpDir%\48x48.png" /f > NUL
  394. REG ADD "%usrPfpRegKey%" /v Image64 /t REG_SZ /d "%usrPfpDir%\64x64.png" /f > NUL
  395. REG ADD "%usrPfpRegKey%" /v Image96 /t REG_SZ /d "%usrPfpDir%\96x96.png" /f > NUL
  396. REG ADD "%usrPfpRegKey%" /v Image192 /t REG_SZ /d "%usrPfpDir%\192x192.png" /f > NUL
  397. REG ADD "%usrPfpRegKey%" /v Image208 /t REG_SZ /d "%usrPfpDir%\208x208.png" /f > NUL
  398. REG ADD "%usrPfpRegKey%" /v Image240 /t REG_SZ /d "%usrPfpDir%\240x240.png" /f > NUL
  399. REG ADD "%usrPfpRegKey%" /v Image424 /t REG_SZ /d "%usrPfpDir%\424x424.png" /f > NUL
  400. REG ADD "%usrPfpRegKey%" /v Image448 /t REG_SZ /d "%usrPfpDir%\448x448.png" /f > NUL
  401. REG ADD "%usrPfpRegKey%" /v Image1080 /t REG_SZ /d "%usrPfpDir%\1080x1080.png" /f > NUL
  402. REG ADD "HKU\%userSID%\SOFTWARE\OpenShell\StartMenu\Settings" /v UserPicturePath /t REG_SZ /d "%usrPfpDir%\448x448.png" /f > NUL 2>&1
  403. GPUPDATE /force > NUL
  404. CALL :AUX-RETURN "Profile image changed successfully" -H
  405. REM --------------------------PFP-END---------------------------
  406. REM -------------------------ELEVATION--------------------------
  407. :ELEVATE-ELEVATE
  408. SETLOCAL
  409. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  410. ECHO. & ECHO Granting Admin rights to the current user...
  411. IF "%userStatus%"=="Elevated" CALL :AUX-RETURN "The current user is already an Administrator." -H -E
  412. TIMEOUT /T 2 /NOBREAK > NUL
  413. NET localgroup administrators "%currentUsername%" /add > NUL 2>&1
  414. IF %ERRORLEVEL% GTR 0 CALL :AUX-RETURN "Failed to change user permissions" -H -L "A restart may fix this." -E
  415. IF %ERRORLEVEL% LEQ 0 ENDLOCAL & SET "userStatus=Elevated" & CALL :AUX-RETURN "The current user is now an Administrator" -HNR R:L.sign-out -L "A sign-out is required to take effect."
  416. :ELEVATE-REVOKE
  417. SETLOCAL
  418. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  419. ECHO. & ECHO Revoking Admin rights from the current user...
  420. IF "%userStatus%"=="Not Elevated" CALL :AUX-RETURN "The current user is not an Administrator." -H -E
  421. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  422. NET localgroup administrators "%currentUsername%" /delete > NUL 2>&1
  423. IF %ERRORLEVEL% GTR 0 CALL :AUX-RETURN "Failed to change user permissions" -H -L "A restart may fix this." -E
  424. IF %ERRORLEVEL% LEQ 0 ENDLOCAL & SET "userStatus=Not Elevated" & CALL :AUX-RETURN "Admin rights have been revoked for the current user" -HNR R:L.sign-out -L "A sign-out is required to take effect."
  425. REM -----------------------ELEVATION-END------------------------
  426. REM --------------------------DISPLANG--------------------------
  427. :DISPLANG-MENUP1
  428. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  429. POWERSHELL -NoP -C "Write-Host """ [1] Arabic (ar-SA)`n [2] Bulgarian (bg-BG)`n [3] Chineese [Simplified] (zh-CN)`n [4] Chineese [Traditional] (zh-TW)`n [5] Croatian (hr-HR)`n [6] Czech (cs-CZ)`n [7] Danish (da-DK)`n [8] Dutch (nl-NL)`n [9] English [US] (en-US)`n`n [N] Next Page`n [0] Return to Menu`n [X] Exit`n Page 1/6`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 123456789N0X /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  430. IF %ERRORLEVEL%==1 SET "langSel=ar-SA" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  431. IF %ERRORLEVEL%==2 SET "langSel=bg-BG" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  432. IF %ERRORLEVEL%==3 SET "langSel=zh-CN" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  433. IF %ERRORLEVEL%==4 SET "langSel=zh-TW" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  434. IF %ERRORLEVEL%==5 SET "langSel=hr-HR" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  435. IF %ERRORLEVEL%==6 SET "langSel=cs-CZ" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  436. IF %ERRORLEVEL%==7 SET "langSel=da-DK" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  437. IF %ERRORLEVEL%==8 SET "langSel=nl-NL" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  438. IF %ERRORLEVEL%==9 SET "langSel=en-US" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  439. IF %ERRORLEVEL%==10 GOTO DISPLANG-MENUP2
  440. IF %ERRORLEVEL%==11 GOTO HOME-MAINMENU
  441. IF %ERRORLEVEL%==12 EXIT /B 0
  442. :DISPLANG-MENUP2
  443. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  444. POWERSHELL -NoP -C "Write-Host """ [1] English [UK] (en-GB)`n [2] Estonian (et-EE)`n [3] Finnish (fi-FI)`n [4] French [Canada] (fr-CA)`n [5] French [France] (fr-FR)`n [6] German (de-DE)`n [7] Greek (el-GR)`n [8] Hebrew (he-IL)`n [9] Hungarian (hu-HU)`n`n [N] Next Page`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 2/5`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 123456789NP0X /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  445. IF %ERRORLEVEL%==1 SET "langSel=en-GB" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  446. IF %ERRORLEVEL%==2 SET "langSel=et-EE" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  447. IF %ERRORLEVEL%==3 SET "langSel=fi-FI" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  448. IF %ERRORLEVEL%==4 SET "langSel=fr-CA" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  449. IF %ERRORLEVEL%==5 SET "langSel=fr-FR" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  450. IF %ERRORLEVEL%==6 SET "langSel=de-DE" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  451. IF %ERRORLEVEL%==7 SET "langSel=el-GR" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  452. IF %ERRORLEVEL%==8 SET "langSel=he-IL" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  453. IF %ERRORLEVEL%==9 SET "langSel=hu-HU" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  454. IF %ERRORLEVEL%==10 GOTO DISPLANG-MENUP3
  455. IF %ERRORLEVEL%==11 GOTO DISPLANG-MENUP1
  456. IF %ERRORLEVEL%==12 GOTO HOME-MAINMENU
  457. IF %ERRORLEVEL%==13 EXIT /B 0
  458. :DISPLANG-MENUP3
  459. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  460. POWERSHELL -NoP -C "Write-Host """ [1] Italian (it-IT)`n [2] Japanese (ja-JP)`n [3] Korean (ko-KR)`n [4] Latvian (lv-LV)`n [5] Lithuanian (lt-LT)`n [6] Norwegian (nb-NO)`n [7] Polish (pl-PL)`n [8] Portugeese [Brazil] (pt-BR)`n [9] Portugeese [Portugal] (pt-PT)`n`n [N] Next Page`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 3/5`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 123456789NP0X /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  461. IF %ERRORLEVEL%==1 SET "langSel=it-IT" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  462. IF %ERRORLEVEL%==2 SET "langSel=ja-JP" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  463. IF %ERRORLEVEL%==3 SET "langSel=ko-KR" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  464. IF %ERRORLEVEL%==4 SET "langSel=lv-LV" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  465. IF %ERRORLEVEL%==5 SET "langSel=lt-LT" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  466. IF %ERRORLEVEL%==6 SET "langSel=nb-NO" & SET "dispDl=2900000" & GOTO DISPLANG-DOWNLOAD
  467. IF %ERRORLEVEL%==7 SET "langSel=pl-PL" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  468. IF %ERRORLEVEL%==8 SET "langSel=pt-BR" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  469. IF %ERRORLEVEL%==9 SET "langSel=pt-PT" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  470. IF %ERRORLEVEL%==10 GOTO DISPLANG-MENUP4
  471. IF %ERRORLEVEL%==11 GOTO DISPLANG-MENUP2
  472. IF %ERRORLEVEL%==12 GOTO HOME-MAINMENU
  473. IF %ERRORLEVEL%==13 EXIT /B 0
  474. :DISPLANG-MENUP4
  475. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  476. POWERSHELL -NoP -C "Write-Host """ [1] Romanian (ro-RO)`n [2] Russian (ru-RU)`n [3] Serbian (sr-Latn-RS)`n [4] Slovak (sk-SK)`n [5] Slovenian (sl-SI)`n [6] Spanish [Mexico] (es-MX)`n [7] Spanish [Spain] (es-ES)`n [8] Swedish (sv-SE)`n [9] Thai (th-TH)`n`n [N] Next Page`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 4/5`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 123456789NP0X /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  477. IF %ERRORLEVEL%==1 SET "langSel=ro-RO" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  478. IF %ERRORLEVEL%==2 SET "langSel=ru-RU" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  479. IF %ERRORLEVEL%==3 SET "langSel=sr-Latn-RS" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  480. IF %ERRORLEVEL%==4 SET "langSel=sk-SK" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  481. IF %ERRORLEVEL%==5 SET "langSel=sl-SI" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  482. IF %ERRORLEVEL%==6 SET "langSel=es-MX" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  483. IF %ERRORLEVEL%==7 SET "langSel=es-ES" & SET "dispDl=2480000" & GOTO DISPLANG-DOWNLOAD
  484. IF %ERRORLEVEL%==8 SET "langSel=sv-SE" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  485. IF %ERRORLEVEL%==9 SET "langSel=th-TH" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  486. IF %ERRORLEVEL%==10 GOTO DISPLANG-MENUP5
  487. IF %ERRORLEVEL%==11 GOTO DISPLANG-MENUP3
  488. IF %ERRORLEVEL%==12 GOTO HOME-MAINMENU
  489. IF %ERRORLEVEL%==13 EXIT /B 0
  490. :DISPLANG-MENUP5
  491. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  492. POWERSHELL -NoP -C "Write-Host """ [1] Turkish (tr-TR)`n [2] Ukrainian (uk-UA)`n`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 5/5`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 12P0X /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  493. IF %ERRORLEVEL%==1 SET "langSel=tr-TR" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  494. IF %ERRORLEVEL%==2 SET "langSel=uk-UA" & SET "dispDl=3230000" & GOTO DISPLANG-DOWNLOAD
  495. IF %ERRORLEVEL%==3 GOTO DISPLANG-MENUP4
  496. IF %ERRORLEVEL%==4 GOTO HOME-MAINMENU
  497. IF %ERRORLEVEL%==5 EXIT /B 0
  498. :DISPLANG-DOWNLOAD
  499. SETLOCAL
  500. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  501. IF "%lpStatus%"=="removed" GOTO DISPLANG-LPREMOVE
  502. CALL :AUX-GENRND "7"
  503. REM Check if language pack is already installed
  504. DISM /Online /Get-Intl /English | FINDSTR /I /R /c:"Installed language(s):.* %langSel%" /c:"Fallback Languages.* %langSel%[^ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789]*" > NUL 2>&1
  505. IF %ERRORLEVEL% LEQ 0 GOTO DISPLANG-USERCHECK
  506. SET "ZIPLoc=7z.exe"
  507. FOR /F "usebackq tokens=1,* delims=\" %%A IN (`WHERE 7z.exe 2^>^&1`) DO IF EXIST "%SYSTEMDRIVE%%%B" SET "dispSkip0=rem "
  508. IF NOT "%dispSkip0%"=="rem " (
  509. IF EXIST "%SYSTEMDRIVE%\Program Files\7-Zip\7z.exe" (
  510. SET "ZIPLoc=%SYSTEMDRIVE%\Program Files\7-Zip\7z.exe"
  511. SET "dispSkip0=rem "
  512. ) ELSE (
  513. IF EXIST "%SYSTEMDRIVE%\Program Files (x86)\7-Zip\7z.exe" (
  514. SET "ZIPLoc=%SYSTEMDRIVE%\Program Files (x86)\7-Zip\7z.exe"
  515. SET "dispSkip0=rem "
  516. )
  517. )
  518. )
  519. WHERE choco.exe>NUL 2>&1 && SET "dispChoco=true"
  520. IF NOT "%dispChoco%"=="true" (
  521. IF NOT "%dispSkip0%"=="rem " CALL :AUX-RETURN "7-Zip or Chocolatey must be installed." "HOME-LANGUAGE" -E
  522. )
  523. TASKLIST /FI "IMAGENAME eq lpksetup.exe" 2>&1 | FINDSTR /i /c:"lpksetup.exe" > NUL 2>&1
  524. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "All instances of lpksetup.exe must be closed." "HOME-LANGUAGE" -E
  525. IF "%dispDl%"=="2480000" POWERSHELL -NoP -C "Write-Host """`n A ~2.5GB Language Packs ISO must be downloaded`n Continue? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  526. IF "%dispDl%"=="2900000" POWERSHELL -NoP -C "Write-Host """`n A ~2.9GB Language Packs ISO must be downloaded`n Continue? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  527. IF "%dispDl%"=="3230000" POWERSHELL -NoP -C "Write-Host """`n A ~3.2GB Language Packs ISO must be downloaded`n Continue? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  528. IF %ERRORLEVEL%==2 ENDLOCAL & GOTO HOME-MAINMENU
  529. IF "%altRun%"=="true" (
  530. SET "dispISOLoc=%userUserProfile%\Desktop"
  531. ) ELSE (
  532. SET "dispISOLoc=%USERPROFILE%\Desktop"
  533. )
  534. IF NOT EXIST "%dispISOLoc%" SET "dispISOLoc=%dirPath:~0,-1%"
  535. FOR /F "tokens=2 delims==" %%A IN ('WMIC logicaldisk where "DeviceID='%dispISOLoc:~0,2%'" get FreeSpace /format:value') DO SET "dispISOSpace=%%A"
  536. SET "dispISOSpace=%dispISOSpace:~0,-9%"
  537. ECHO "%dispISOSpace%" | FINDSTR "1 2 3 4 5 6 7 8 9 0" > NUL
  538. IF %ERRORLEVEL% GTR 0 CALL :AUX-RETURN "Failed to check free space of target drive (%dispISOLoc:~0,2%)." "HOME-LANGUAGE" -E
  539. IF %dispISOSpace% LEQ 80 CALL :AUX-RETURN "Not enough space available in target drive (%dispISOLoc:~0,2%)." "HOME-LANGUAGE" -E
  540. CALL :AUX-NETWORKCHECK
  541. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Internet is required for this action." "HOME-LANGUAGE" -E
  542. CALL :AUX-GENRND "7"
  543. REM If 7zip must be installed, there will not be enough space to display everything in 25 lines (script height) without this line
  544. %dispSkip0%CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  545. ECHO. & ECHO Download Progress
  546. IF "%dispDl%"=="2480000" CURL --range 0-2480000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dispISOLoc%\LangPacks%rndOut%.ISO"
  547. IF "%dispDl%"=="2900000" CURL --range 0-2900000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dispISOLoc%\LangPacks%rndOut%.ISO"
  548. IF "%dispDl%"=="3230000" CURL --range 0-3230000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dispISOLoc%\LangPacks%rndOut%.ISO"
  549. FOR %%A IN ("%dispISOLoc%\LangPacks%rndOut%.ISO") DO SET "langISOSize=%%~zA"
  550. CALL :AUX-KILOBYTEFETCH "%dispDl%" -Compare "%langISOSize%"
  551. IF %ERRORLEVEL% NEQ 0 (
  552. DEL /Q /F "%dispISOLoc%\LangPacks%rndOut%.ISO" > NUL 2>&1
  553. CALL :AUX-RETURN "Failed to download file." "HOME-LANGUAGE" -E
  554. )
  555. :DISPLANG-INSTALL
  556. %dispSkip0%ECHO. & ECHO Installing 7zip... & choco install -y --force --allow-empty-checksums "7zip" > NUL
  557. POWERSHELL -NoP -C "Start-Process '%ZIPLoc:'=''%' -ArgumentList 'e','-y','-o""""%dispISOLoc:'=''%\LangPacks%rndOut%""""','""""%dispISOLoc:'=''%\LangPacks%rndOut%.ISO""""','x64\langpacks\*.cab' -NoNewWindow -Wait" > NUL 2>&1
  558. DEL /Q /F "%dispISOLoc%\LangPacks%rndOut%.ISO" > NUL
  559. ECHO. & ECHO Installing language pack, this may take awhile...
  560. FOR /F "tokens=2" %%A IN ('DATE /T') DO SET "dateAfter=%%A"
  561. SET "timeAfter=%TIME:~0,-3%"
  562. LPKSETUP /i %langSel% /p "%dispISOLoc%\LangPacks%rndOut%\Microsoft-Windows-Client-Language-Pack_x64_%langSel%.cab" /r > NUL
  563. :lpkInstLogLoop
  564. TIMEOUT /T 1 /NOBREAK > NUL
  565. POWERSHELL -NoP -C "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2014 2007" > NUL
  566. IF %ERRORLEVEL% LSS 1 (
  567. %dispSkip0%ECHO. & ECHO Removing 7zip... & choco uninstall 7zip -y --force-dependencies --allow-empty-checksums>NUL & ECHO.
  568. RMDIR /Q /S "%dispISOLoc%\LangPacks%rndOut%" & CALL :AUX-RETURN "lpksetup failed." "HOME-LANGUAGE" -E
  569. )
  570. POWERSHELL -NoP -C "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2000" > NUL
  571. IF %ERRORLEVEL% LSS 1 (
  572. %dispSkip0%ECHO. & ECHO Removing 7zip... & choco uninstall 7zip -y --force-dependencies --allow-empty-checksums>NUL & ECHO.
  573. IF "%lpStatus%"=="added" RMDIR /Q /S "%dispISOLoc%\LangPacks%rndOut%" & GOTO DISPLANG-LPCOMPLETE
  574. RMDIR /Q /S "%dispISOLoc%\LangPacks%rndOut%" & GOTO DISPLANG-USERCHECK
  575. )
  576. GOTO :lpkInstLogLoop
  577. :DISPLANG-USERCHECK
  578. IF /I "%~1"=="LangSet" SET "langSel=%~2" & SET "rndOut=%~3" & SET "makeKBDef=%~4" & GOTO DISPLANG-SETLANG
  579. POWERSHELL -NoP -C "Write-Host """`n Make default keyboard language? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  580. IF %ERRORLEVEL%==2 SET "makeKBDef=false"
  581. IF "%altRun%"=="true" GOTO DISPLANG-ALT
  582. :DISPLANG-SETLANG
  583. ECHO. & ECHO Setting language...
  584. FOR /F "delims=" %%A IN ('POWERSHELL -NoP -C "Get-WinDefaultInputMethodOverride"') DO SET "possibleLangDef=%%A"
  585. IF NOT "%possibleLangDef%"=="" (
  586. SET "currentLangDef=%possibleLangDef%"
  587. ) ELSE (
  588. FOR /F "delims=" %%A IN ('POWERSHELL -NoP -C "(Get-WinUserLanguageList)[0].InputMethodTips"') DO SET "currentLangDef=%%A"
  589. )
  590. SETLOCAL ENABLEDELAYEDEXPANSION
  591. REM Accounts for zero input methods. Very unlikely scenario
  592. POWERSHELL -NoP -c "(Get-WinUserLanguageList).InputMethodTips" | FINDSTR /c:":" > NUL 2>&1
  593. IF %ERRORLEVEL% EQU 0 (
  594. FOR /F "delims=" %%A IN ('POWERSHELL -NoP -C "(Get-WinUserLanguageList).InputMethodTips"') DO SET "oldInputMethods=!oldInputMethods!;$LangList[0].InputMethodTips.Add('%%A')"
  595. )
  596. POWERSHELL -NoP -C "Set-WinSystemLocale %langSel%; $LangList = New-WinUserLanguageList %langSel%%oldInputMethods%; Set-WinUserLanguageList $LangList -Force"
  597. REM Clears override
  598. IF "%makeKBDef%"=="" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride"
  599. IF "%makeKBDef%"=="false" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride '%currentLangDef%'"
  600. ENDLOCAL
  601. IF /I "%~1"=="LangSet" ECHO Golden> "%TEMP%\[amecs]-LangComm%rndOut%.txt" & EXIT 0
  602. CALL :AUX-RETURN "Display language changed to %langSel%" -H "R:R -T 0.restart" -L "A restart is required to take effect."
  603. :DISPLANG-LPCOMPLETE
  604. %dispSkip0%ECHO. & ECHO Removing 7zip... & choco uninstall 7zip.install -y --force > NUL
  605. %dispSkip0%choco uninstall 7zip -y --force > NUL
  606. CALL :AUX-RETURN "Language Pack %langSel% installed successfully" -H -L "A restart is recommended."
  607. :DISPLANG-LPREMOVE
  608. SET "dispSkip0=rem "
  609. FOR /F tokens^=2^ delims^=^" %%A IN ('TASKLIST /FI "IMAGENAME eq lpksetup.exe" /NH /FO csv') DO SET "lpkStatus=%%A"
  610. IF "%lpkStatus%"=="," CALL :AUX-RETURN "All instances of lpksetup.exe must be closed." "HOME-LANGUAGE" -E
  611. FOR /F "tokens=2" %%A IN ('DATE /T') DO SET "dateAfter=%%A"
  612. SET "timeAfter=%TIME:~0,-3%"
  613. ECHO. & ECHO Uninstalling %langSel% LanguagePack...
  614. LPKSETUP /u %langSel% /r
  615. :LPREMOVE-LOOP
  616. TIMEOUT /T 1 /NOBREAK > NUL
  617. POWERSHELL -command "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2014 2008" > NUL
  618. IF %ERRORLEVEL% LSS 1 CALL :AUX-RETURN "lpksetup.exe failed." "HOME-LANGUAGE" -E
  619. POWERSHELL -command "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2001" > NUL
  620. IF %ERRORLEVEL% LSS 1 CALL :AUX-RETURN "Language Pack %langSel% removed successfully" -H -L "A restart is recommended."
  621. GOTO LPREMOVE-LOOP
  622. :DISPLANG-ALT
  623. CALL :AUX-ALTSTART "SetDispLang" "CMD /C 'START /min '' '|Script|' LangSet %langSel% |rndOut| %makeKBDef%'"
  624. IF %ERRORLEVEL% EQU 1 CALL :AUX-RETURN "Failed to create scheduled task. (1)" "HOME-LANGUAGE" -E -C
  625. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Failed to create scheduled task. (2)" "HOME-LANGUAGE" -E -C
  626. CALL :AUX-WAITLOOP "-C:Golden" "%userTemp%\[amecs]-LangComm%rndOut%.txt" -TME "30"
  627. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to set language settings." "HOME-LANGUAGE" -C -E
  628. CALL :AUX-RETURN "Display language changed to %langSel%" -H "R:R -T 0.restart" -L "A restart is required to take effect." -C
  629. REM ------------------------DISPLANG-END------------------------
  630. REM ---------------------------KBLANG---------------------------
  631. :KBLANG-LANGS
  632. SETLOCAL ENABLEDELAYEDEXPANSION
  633. SET /A count=0
  634. SET "kbSub=false"
  635. FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14 skip=4 delims=|" %%A IN ("%~f0") DO (
  636. IF "%%A"=="REM DB-Corresponding Commands" GOTO KBLANG-CCOMMS
  637. IF "%%B"=="" GOTO KBLANG-CCOMMS
  638. IF NOT "%%B"=="spacer" SET /A count=!count!+1 & SET "lang!count!=%%B"
  639. IF "%%C"=="" GOTO KBLANG-CCOMMS
  640. IF NOT "%%C"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%C"
  641. IF "%%D"=="" GOTO KBLANG-CCOMMS
  642. IF NOT "%%D"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%D"
  643. IF "%%E"=="" GOTO KBLANG-CCOMMS
  644. IF NOT "%%E"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%E"
  645. IF "%%F"=="" GOTO KBLANG-CCOMMS
  646. IF NOT "%%F"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%F"
  647. REM Overflow protecton, allows for more than 5 items per DB line
  648. IF NOT "%%G"=="" SET /A "count=!count!+1" & SET "lang!count!=%%G"
  649. IF NOT "%%H"=="" SET /A "count=!count!+1" & SET "lang!count!=%%H"
  650. )
  651. :KBLANG-CCOMMS
  652. SET /A kbCCommCount=0
  653. FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14 skip=35 delims=|" %%A IN ("%~f0") DO (
  654. IF "%%A"=="REM DB-Submenu Input Methods" GOTO KBLANG-PREMMS
  655. IF "%%B"=="" GOTO KBLANG-PREMMS
  656. IF NOT "%%B"=="spacer" SET /A kbCCommCount=!kbCCommCount!+1 & SET "kbComm!kbCCommCount!=SET kbLangSel=%%B"
  657. IF "%%C"=="" GOTO KBLANG-PREMMS
  658. IF NOT "%%C"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%C"
  659. IF "%%D"=="" GOTO KBLANG-PREMMS
  660. IF NOT "%%D"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%D"
  661. IF "%%E"=="" GOTO KBLANG-PREMMS
  662. IF NOT "%%E"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%E"
  663. IF "%%F"=="" GOTO KBLANG-PREMMS
  664. IF NOT "%%F"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%F"
  665. REM Overflow protecton, allows for more than 5 items per DB line
  666. IF NOT "%%G"=="" SET /A "count=!count!+1" & SET "lang!count!=SET kbLangSel=%%G"
  667. IF NOT "%%H"=="" SET /A "count=!count!+1" & SET "lang!count!=SET kbLangSel=%%H"
  668. )
  669. :KBLANG-SUBLANGS
  670. SETLOCAL ENABLEDELAYEDEXPANSION
  671. SET /A count=0
  672. SET "kbSub=true"
  673. FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14, 16, 18 skip=66 delims=|" %%A IN ("%~f0") DO (
  674. IF "%%A"=="REM DB-SubCorresponding Input Methods" GOTO KBLANG-CCOMMS
  675. IF "%%B"=="%kbLangSel%" (
  676. IF "%%C"=="" GOTO KBLANG-SUBCOMMS
  677. SET /A count=!count!+1 & SET "lang!count!=%%C"
  678. IF "%%D"=="" GOTO KBLANG-SUBCCOMMS
  679. SET /A "count=!count!+1" & SET "lang!count!=%%D"
  680. IF "%%E"=="" GOTO KBLANG-SUBCCOMMS
  681. SET /A "count=!count!+1" & SET "lang!count!=%%E"
  682. IF "%%F"=="" GOTO KBLANG-SUBCCOMMS
  683. SET /A "count=!count!+1" & SET "lang!count!=%%F"
  684. IF "%%G"=="" GOTO KBLANG-SUBCCOMMS
  685. SET /A "count=!count!+1" & SET "lang!count!=%%G"
  686. IF "%%H"=="" GOTO KBLANG-SUBCCOMMS
  687. SET /A "count=!count!+1" & SET "lang!count!=%%H"
  688. IF "%%I"=="" GOTO KBLANG-SUBCCOMMS
  689. SET /A "count=!count!+1" & SET "lang!count!=%%I"
  690. IF "%%J"=="" GOTO KBLANG-SUBCCOMMS
  691. SET /A "count=!count!+1" & SET "lang!count!=%%J"
  692. )
  693. )
  694. :KBLANG-SUBCCOMMS
  695. SET /A skbCCommCount=0
  696. FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14, 16, 18 skip=125 delims=|" %%A IN ("%~f0") DO (
  697. IF "%%A"=="REM Marker" GOTO KBLANG-PREMMS
  698. IF "%%B"=="%kbLangSel%" (
  699. IF "%%C"=="" GOTO KBLANG-PREMMS
  700. SET /A skbCCommCount=!skbCCommCount!+1 & SET "kbComm!skbCCommCount!=SET kbLangSel=%%C"
  701. IF "%%D"=="" GOTO KBLANG-PREMMS
  702. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%D"
  703. IF "%%E"=="" GOTO KBLANG-PREMMS
  704. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%E"
  705. IF "%%F"=="" GOTO KBLANG-PREMMS
  706. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%F"
  707. IF "%%G"=="" GOTO KBLANG-PREMMS
  708. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%G"
  709. IF "%%H"=="" GOTO KBLANG-PREMMS
  710. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%H"
  711. IF "%%I"=="" GOTO KBLANG-PREMMS
  712. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%I"
  713. IF "%%J"=="" GOTO KBLANG-PREMMS
  714. SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%J"
  715. )
  716. )
  717. :KBLANG-PREMMS
  718. SET kbLangCount=0
  719. SET /A "kbLangPages=%count%/9"
  720. SET /A "kbLangRemainder=%count%-(%kbLangPages%*9)""
  721. IF "%kbLangRemainder%" GTR "0" SET /A kbLangPages=%kbLangPages%+1
  722. SET kbLangPageLoc=1
  723. :KBLANG-MMS
  724. REM Modular menu system
  725. SET "lELs=9"
  726. IF "%kbSub%"=="true" (SET "kb0Opt=Go Back") ELSE (SET "kb0Opt=Return to Menu")
  727. SET "kbDisablePrev=" & SET "kbPrevMsg=`n [P] Previous Page" & SET "lC10=N" & SET "kbDisableNext=" & SET "kbNextMsg=`n [N] Next Page" & SET "lC11=P"
  728. IF "%kbLangPageLoc%" EQU "1" SET "kbDisablePrev=rem " & SET "kbPrevMsg=" & SET "lC11="
  729. SET "lC1=1" & SET "lC2=2" & SET "lC3=3" & SET "lC4=4" & SET "lC5=5" & SET "lC6=6" & SET "lC7=7" & SET "lC8=8" & SET "lC9=9"
  730. SET "kbLangSkip1=" & SET "kbLangSkip2=" & SET "kbLangSkip3=" & SET "kbLangSkip4=" & SET "kbLangSkip5=" & SET "kbLangSkip6=" & SET "kbLangSkip7=" & SET "kbLangSkip8="
  731. SET /A "kbLangCount=%kbLangCount%+1"
  732. SET "kbLangMsg1= [1] !lang%kbLangCount%!" & SET "kbCComm1=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  733. SET "kbLangMsg2=`n [2] !lang%kbLangCount%!" & SET "kbCComm2=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  734. SET "kbLangMsg3=`n [3] !lang%kbLangCount%!" & SET "kbCComm3=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  735. SET "kbLangMsg4=`n [4] !lang%kbLangCount%!" & SET "kbCComm4=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  736. SET "kbLangMsg5=`n [5] !lang%kbLangCount%!" & SET "kbCComm5=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  737. SET "kbLangMsg6=`n [6] !lang%kbLangCount%!" & SET "kbCComm6=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  738. SET "kbLangMsg7=`n [7] !lang%kbLangCount%!" & SET "kbCComm7=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  739. SET "kbLangMsg8=`n [8] !lang%kbLangCount%!" & SET "kbCComm8=!kbComm%kbLangCount%!" & SET /A "kbLangCount=%kbLangCount%+1"
  740. SET "kbLangMsg9=`n [9] !lang%kbLangCount%!" & SET "kbCComm9=!kbComm%kbLangCount%!"
  741. IF "%kbLangPageLoc%"=="%kbLangPages%" (
  742. SET "kbDisableNext=rem " & SET "kbNextMsg=" & SET "lC10="
  743. IF "%kbLangRemainder%" GTR "0" (
  744. SET "lR1=1"
  745. SET "lELs=%kbLangRemainder%"
  746. IF NOT "%kbLangRemainder%" GTR "1" (SET "kbLangSkip1=rem " & SET "kbLangMsg2=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR2=2")
  747. IF NOT "%kbLangRemainder%" GTR "2" (SET "kbLangSkip2=rem " & SET "kbLangMsg3=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR3=3")
  748. IF NOT "%kbLangRemainder%" GTR "3" (SET "kbLangSkip3=rem " & SET "kbLangMsg4=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR4=4")
  749. IF NOT "%kbLangRemainder%" GTR "4" (SET "kbLangSkip4=rem " & SET "kbLangMsg5=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR5=5")
  750. IF NOT "%kbLangRemainder%" GTR "5" (SET "kbLangSkip5=rem " & SET "kbLangMsg6=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR6=6")
  751. IF NOT "%kbLangRemainder%" GTR "6" (SET "kbLangSkip6=rem " & SET "kbLangMsg7=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR7=7")
  752. IF NOT "%kbLangRemainder%" GTR "7" (SET "kbLangSkip7=rem " & SET "kbLangMsg8=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR8=8")
  753. IF NOT "%kbLangRemainder%" GTR "8" (SET "kbLangSkip8=rem " & SET "kbLangMsg9=" & SET /A "kbLangCount=!kbLangCount!-1") ELSE (SET "lR9=9")
  754. SET "lC1=!lR1!" & SET "lC2=!lR2!" & SET "lC3=!lR3!" & SET "lC4=!lR4!" & SET "lC5=!lR5!" & SET "lC6=!lR6!" & SET "lC7=!lR7!" & SET "lC8=!lR8!" & SET "lC9=!lR9!"
  755. )
  756. )
  757. SET "kbLangCommGo="
  758. IF "%kbSub%"=="true" (SET "kbPageMsg=`n") ELSE (SET "kbPageMsg=`n Page %kbLangPageLoc%/%kbLangPages%")
  759. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  760. POWERSHELL -NoP -C "Write-Host """%kbLangMsg1%%kbLangMsg2%%kbLangMsg3%%kbLangMsg4%%kbLangMsg5%%kbLangMsg6%%kbLangMsg7%%kbLangMsg8%%kbLangMsg9%`n%kbNextMsg%%kbPrevMsg%`n [0] %kb0Opt%`n [X] Exit%kbPageMsg%`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C %lC1%%lC2%%lC3%%lC4%%lC5%%lC6%%lC7%%lC8%%lC9%%lC10%%lC11%0X /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  761. SET "kbChoice=%ERRORLEVEL%"
  762. IF %kbLangPageLoc% LSS %kbLangPages% (SET /A kbLangCount=%kbLangCount%-9) ELSE (SET /A kbLangCount=%kbLangCount%-%kbLangRemainder%)
  763. IF %kbChoice%==1 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm1%%%" & SET "kbChoice=NULL"
  764. %kbLangSkip1%IF %kbChoice%==2 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm2%%%" & SET "kbChoice=NULL"
  765. %kbLangSkip2%IF %kbChoice%==3 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm3%%%" & SET "kbChoice=NULL"
  766. %kbLangSkip3%IF %kbChoice%==4 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm4%%%" & SET "kbChoice=NULL"
  767. %kbLangSkip4%IF %kbChoice%==5 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm5%%%" & SET "kbChoice=NULL"
  768. %kbLangSkip5%IF %kbChoice%==6 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm6%%%" & SET "kbChoice=NULL"
  769. %kbLangSkip6%IF %kbChoice%==7 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm7%%%" & SET "kbChoice=NULL"
  770. %kbLangSkip7%IF %kbChoice%==8 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm8%%%" & SET "kbChoice=NULL"
  771. %kbLangSkip8%IF %kbChoice%==9 ENDLOCAL & CALL SET "kbLangCommGo=%%kbLangLoc::COMM:=%kbCComm9%%%" & SET "kbChoice=NULL"
  772. %kbLangCommGo%
  773. SET /A "lEL10=%lELs%"
  774. %kbDisableNext%SET /A "lEL10=%lEL10%+1"
  775. %kbDisableNext%IF %kbChoice%==%lEL10% (
  776. %kbDisableNext% SET /A kbLangPageLoc=%kbLangPageLoc%+1
  777. %kbDisableNext% SET /A kbLangCount=%kbLangCount%+9
  778. %kbDisableNext% GOTO KBLANG-MMS
  779. %kbDisableNext%)
  780. %kbDisablePrev%SET /A "lEL11=%lEL10%+1" & SET /A "lEL10=%lEL10%+1"
  781. %kbDisablePrev%IF %kbChoice%==%lEL11% (
  782. %kbDisablePrev% SET /A kbLangPageLoc=%kbLangPageLoc%-1
  783. %kbDisablePrev% SET /A kbLangCount=%kbLangCount%-9
  784. %kbDisablePrev% GOTO KBLANG-MMS
  785. %kbDisablePrev%)
  786. SET /A "lEL12=%lEL10%+1"
  787. IF %kbChoice%==%lEL12% (
  788. IF "%kbSub%"=="true" (ENDLOCAL & GOTO KBLANG-LANGS) ELSE (ENDLOCAL & GOTO HOME-MAINMENU)
  789. )
  790. SET /A "lEL13=%lEL10%+2"
  791. IF %kbChoice%==%lEL13% EXIT /B 0
  792. GOTO KBLANG-MMS
  793. :KBLANG-PRESET
  794. SETLOCAL
  795. IF /I "%~1"=="kbLangSet" SET "kbLangSel=%~2" & SET "rndOut=%~3" & SET "kbMakeDef=%~4" & GOTO KBLANG-SETLANG
  796. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  797. POWERSHELL -NoP -C "Write-Host """`n Make default keyboard language? (Y/N): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  798. IF %ERRORLEVEL%==2 SET "kbMakeDef=false"
  799. IF "%altRun%"=="true" GOTO :KBLANG-ALTADD
  800. POWERSHELL -NoP -c "(Get-WinUserLanguageList).InputMethodTips" | FINDSTR /I /c:"%kbLangSel%" > NUL 2>&1
  801. IF %ERRORLEVEL% EQU 0 (
  802. IF /I "%~1"=="kbLangSet" ECHO AME-ERROR> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  803. CALL :AUX-RETURN "Selected keyboard language is already installed." "HOME-LANGUAGE" -E
  804. )
  805. ECHO. & ECHO Adding keyboard language...
  806. :KBLANG-SETLANG
  807. IF NOT "%~1"=="kbLangSet" TIMEOUT /T 1 /NOBREAK > NUL
  808. POWERSHELL -NoP -C "$NewLangs=Get-WinUserLanguageList; $NewLangs[0].InputMethodTips.Add('%kbLangSel%'); Set-WinUserLanguageList $NewLangs -Force" > NUL
  809. IF %ERRORLEVEL% NEQ 0 (
  810. IF /I "%~1"=="kbLangSet" ECHO AME-ERROR1> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  811. CALL :AUX-RETURN "Failed to set language settings." "HOME-LANGUAGE" -E
  812. )
  813. IF NOT "%kbMakeDef%"=="false" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride -InputTip '%kbLangSel%'"
  814. IF /I "%~1"=="kbLangSet" ECHO Golden> "%TEMP%\[amecs]-LangComm%rndOut%.txt" & EXIT 0
  815. CALL :AUX-RETURN "Keyboard language added successfully" -H
  816. :KBLANG-REMOVELANG
  817. SETLOCAL ENABLEDELAYEDEXPANSION
  818. IF /I "%~1"=="kbLangRem" SET "kbLangSel=%~2" & SET "rndOut=%~3"
  819. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  820. IF "%altRun%"=="true" GOTO :KBLANG-ALTREMOVE
  821. ECHO. & ECHO Removing keyboard language...
  822. IF NOT "%~1"=="kbLangRem" TIMEOUT /T 1 /NOBREAK > NUL
  823. REM Accounts for zero input methods. Very unlikely scenario
  824. POWERSHELL -NoP -c "(Get-WinUserLanguageList).InputMethodTips" | FINDSTR /I /c:"%kbLangSel%" > NUL 2>&1
  825. IF %ERRORLEVEL% EQU 0 (
  826. FOR /F "usebackq delims=" %%A IN (`POWERSHELL -NoP -C "(Get-WinUserLanguageList).InputMethodTips" ^| FINDSTR /V /I /c:"%kbLangSel%"`) DO SET "oldInputMethods=!oldInputMethods!;$LangList[0].InputMethodTips.Add('%%A')"
  827. ) ELSE (
  828. IF /I "%~1"=="kbLangRem" ECHO AME-ERROR> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  829. CALL :AUX-RETURN "Selected keyboard language is not installed." "HOME-LANGUAGE" -E
  830. )
  831. POWERSHELL -NoP -C "$LangTag = (Get-WinUserLanguageList)[0].LanguageTag; $LangList = New-WinUserLanguageList $LangTag%oldInputMethods%; Set-WinUserLanguageList $LangList -Force"
  832. IF %ERRORLEVEL% NEQ 0 (
  833. IF /I "%~1"=="kbLangRem" ECHO AME-ERROR1> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  834. CALL :AUX-RETURN "Failed to set language settings." "HOME-LANGUAGE" -E
  835. )
  836. POWERSHELL -NoP -C "(Get-WinUserLanguageList).InputMethodTips" | FINDSTR /I /c:"%kbLangSel%" > NUL 2>&1
  837. IF %ERRORLEVEL% EQU 0 (
  838. IF /I "%~1"=="kbLangRem" ECHO AME-ERROR2> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  839. CALL :AUX-RETURN "Selected keyboard language cannot be removed." "HOME-LANGUAGE" -E
  840. )
  841. IF /I "%~1"=="kbLangRem" ECHO Golden> "%TEMP%\[amecs]-LangComm%rndOut%.txt"& EXIT 0
  842. CALL :AUX-RETURN "Keyboard language removed successfully" -H
  843. :KBLANG-ALTADD
  844. ECHO. & ECHO Adding keyboard language...
  845. CALL :AUX-ALTSTART "SetkbLang" "CMD /C 'START /min '' '|Script|' kbLangSet %kbLangSel% |rndOut| %kbMakeDef%'"
  846. IF %ERRORLEVEL% EQU 1 CALL :AUX-RETURN "Failed to create scheduled task. (1)" "HOME-LANGUAGE" -E -C
  847. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Failed to create scheduled task. (2)" "HOME-LANGUAGE" -E -C
  848. CALL :AUX-WAITLOOP "-C:Golden" "%userTemp%\[amecs]-LangComm%rndOut%.txt" -TME "30"
  849. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Selected keyboard language is already installed." "HOME-LANGUAGE" -C -E
  850. IF %ERRORLEVEL% EQU 3 CALL :AUX-RETURN "Failed to set language settings. (1)" "HOME-LANGUAGE" -C -E
  851. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to set language settings. (2)" "HOME-LANGUAGE" -C -E
  852. CALL :AUX-RETURN "Keyboard language added successfully" -H -C
  853. :KBLANG-ALTREMOVE
  854. ECHO. & ECHO Removing keyboard language...
  855. CALL :AUX-ALTSTART "RemkbLang" "CMD /C 'START /min '' '|Script|' kbLangRem %kbLangSel% |rndOut|'"
  856. IF %ERRORLEVEL% EQU 1 CALL :AUX-RETURN "Failed to create scheduled task. (1)" "HOME-LANGUAGE" -E -C
  857. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Failed to create scheduled task. (2)" "HOME-LANGUAGE" -E -C
  858. CALL :AUX-WAITLOOP "-C:Golden" "%userTemp%\[amecs]-LangComm%rndOut%.txt" -TME "30"
  859. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Selected keyboard language is not installed." "HOME-LANGUAGE" -C -E
  860. IF %ERRORLEVEL% EQU 3 CALL :AUX-RETURN "Failed to set language settings. (1)" "HOME-LANGUAGE" -C -E
  861. IF %ERRORLEVEL% EQU 4 CALL :AUX-RETURN "Selected keyboard language cannot be removed." "HOME-LANGUAGE" -C -E
  862. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to set language settings. (2)" "HOME-LANGUAGE" -C -E
  863. CALL :AUX-RETURN "Keyboard language removed successfully" -H -C
  864. REM -------------------------KBLANG-END-------------------------
  865. REM -------------------------NOUSERNAME-------------------------
  866. :NOUSERNAME-DISABLE
  867. SETLOCAL
  868. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  869. ECHO. & ECHO Disabling username login requirement...
  870. TIMEOUT /T 2 /NOBREAK > NUL
  871. REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername /f > NUL 2>&1
  872. CALL :AUX-RETURN "The username login requirement is now disabled" -H
  873. :NOUSERNAME-ENABLE
  874. SETLOCAL
  875. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  876. ECHO. & ECHO Enabling username login requirement...
  877. TIMEOUT /T 2 /NOBREAK > NUL
  878. REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername /t REG_DWORD /d 1 /f > NUL 2>&1
  879. CALL :AUX-RETURN "The username login requirement is now enabled" -H R:L.sign-out -L "A sign-out is required to take effect."
  880. REM -----------------------NOUSERNAME-END-----------------------
  881. REM -------------------------AUTOLOGON--------------------------
  882. :AUTOLOGON-ENABLE
  883. SETLOCAL
  884. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  885. CALL :AUX-INPUTLOOP "userPassword" "Enter your password, or enter 'Cancel' to exit" "0" "9" -Secure
  886. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  887. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  888. ECHO. & ECHO Enabling AutoLogon...
  889. CERTUTIL /f /decode "%scriptPath%" "%TEMP%\[amecs]-AutoLogon%rndOut%.exe" > NUL 2>&1
  890. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  891. IF %ERRORLEVEL% NEQ 0 (
  892. IF %ERRORLEVEL% EQU 7 CALL :AUX-RETURN "Failed to enable AutoLogon. (1)" -H -E -C
  893. CALL :AUX-RETURN "Failed to enable AutoLogon. (2)" -H -E -C
  894. )
  895. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /c:"%currentUsername%" > NUL 2>&1
  896. IF %ERRORLEVEL% EQU 0 (
  897. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  898. IF NOT ERRORLEVEL 1 CALL :AUX-RETURN "Failed to enable AutoLogon. (3)" -H -E -C
  899. )
  900. IF NOT "%userPassword%"=="" (
  901. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '""""%currentUsername:'=''%""""','""""%userPassword:'=''%""""','/DISABLECAD' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  902. ) ELSE (
  903. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '""""%currentUsername:'=''%""""','""""""','/DISABLECAD' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  904. )
  905. IF %ERRORLEVEL% NEQ 0 (
  906. POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow" > NUL 2>&1
  907. IF %ERRORLEVEL% EQU 7 CALL :AUX-RETURN "Failed to enable AutoLogon. (4)" -H -E -C
  908. CALL :AUX-RETURN "Failed to enable AutoLogon. (5)" -H -E -C
  909. )
  910. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /c:"%currentUsername%" > NUL 2>&1
  911. IF %ERRORLEVEL% EQU 0 (
  912. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  913. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & CALL :AUX-RETURN "Failed to enable AutoLogon. (6)" -H -E -C
  914. ) ELSE (
  915. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & CALL :AUX-RETURN "Failed to enable AutoLogon. (7)" -H -E -C
  916. )
  917. CALL :AUX-RETURN "Enabled AutoLogon successfully" -H -C
  918. :AUTOLOGON-DISABLE
  919. SETLOCAL
  920. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  921. ECHO. & ECHO Disabling AutoLogon...
  922. CALL :AUX-GENRND "7"
  923. CERTUTIL /f /decode "%scriptPath%" "%TEMP%\[amecs]-AutoLogon%rndOut%.exe" > NUL 2>&1
  924. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  925. IF %ERRORLEVEL% NEQ 0 (
  926. IF %ERRORLEVEL% EQU 7 CALL :AUX-RETURN "Failed to disable AutoLogon. (1)" -H -E -C
  927. CALL :AUX-RETURN "Failed to disable AutoLogon. (2)" -H -E -C
  928. )
  929. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /I /E /c:" %currentUsername%" > NUL 2>&1
  930. IF %ERRORLEVEL% EQU 0 (
  931. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  932. IF NOT ERRORLEVEL 1 CALL :AUX-RETURN "Failed to disable AutoLogon. (3)" -H -E -C
  933. )
  934. CALL :AUX-RETURN "Disabled AutoLogon successfully" -H -C
  935. REM -----------------------AUTOLOGON-END------------------------
  936. REM ---------------
  937. REM Extra Functions
  938. REM ---------------
  939. REM ----------------------------WSL-----------------------------
  940. :WSL-ENABLE
  941. SETLOCAL
  942. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  943. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Enabled" > NUL 2>&1
  944. IF %ERRORLEVEL% EQU 0 (
  945. WHERE wsl.exe > NUL 2>&1
  946. IF NOT ERRORLEVEL 1 CALL :AUX-RETURN "WSL is already enabled." "HOME-WSL" -E
  947. )
  948. ECHO. & ECHO Enabling WSL...
  949. DISM /Online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux -NoRestart /English | FINDSTR /I /c:"Error"
  950. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to enable WSL. (1)" "HOME-WSL" -E
  951. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Disabled" > NUL 2>&1
  952. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to enable WSL. (2)" "HOME-WSL" -E
  953. WHERE wsl.exe > NUL 2>&1
  954. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Enabled WSL successfully" -H
  955. CALL :AUX-RETURN "Enabled WSL successfully" -H "R:R -T 0.restart" -L "A restart is required to complete the setup."
  956. :WSL-DISABLE
  957. SETLOCAL
  958. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  959. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Disabled" > NUL 2>&1
  960. IF %ERRORLEVEL% EQU 0 (
  961. WHERE wsl.exe > NUL 2>&1
  962. IF NOT ERRORLEVEL 1 CALL :AUX-RETURN "WSL is already disabled." "HOME-WSL" -E
  963. )
  964. ECHO. & ECHO Disabling WSL...
  965. DISM /Online /Disable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux -NoRestart /English | FINDSTR /I /c:"Error"
  966. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to disable WSL. (1)" "HOME-WSL" -E
  967. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Enabled" > NUL 2>&1
  968. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to disable WSL. (2)" "HOME-WSL" -E
  969. WHERE wsl.exe > NUL 2>&1
  970. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Disabled WSL successfully" -H
  971. CALL :AUX-RETURN "Disabled WSL successfully" -H "R:R -T 0.restart" -L "A restart is required to complete the setup."
  972. :WSL-DISTROMENUP1
  973. SETLOCAL
  974. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  975. CURL store.rg-adguard.net 2>&1 | FINDSTR /I /c:"Cloudflare Ray ID" > NUL 2>&1
  976. IF %ERRORLEVEL% EQU 0 (
  977. SET "homeWSL1Ch=123456N0X"
  978. SET "homeWSL2Ch=12345678NP0X"
  979. SET "homeWSL3Ch=23P0X"
  980. SET "homeWSLUnavailable1=""" -NoNewLine; Write-Host ' :REP:' -ForegroundColor DarkGray -NoNewLine; Write-Host ' [Server Unavailable]' -ForegroundColor Red -NoNewLine; Write-Host """"
  981. SET "homeWSLUnavailable2= :REP:""" -ForegroundColor DarkGray -NoNewLine; Write-Host ' [Server Unavailable]' -ForegroundColor Red -NoNewLine; Write-Host """"
  982. ) ELSE (
  983. SET "homeWSL1Ch=123456789N0X"
  984. SET "homeWSL2Ch=123456789NP0X"
  985. SET "homeWSL3Ch=123P0X"
  986. SET "homeWSLUnavailable1= :REP:"
  987. SET "homeWSLUnavailable2= :REP:"
  988. )
  989. POWERSHELL -NoP -C "Write-Host """ [1] Ubuntu 20.04 LTS`n [2] Ubuntu 18.04 LTS`n [3] Ubuntu 16.04 LTS`n [4] Debian Stable`n [5] Kali Linux`n [6] Fedora Remix`n%homeWSLUnavailable1::REP:=[7] Pengwin%`n%homeWSLUnavailable2::REP:=[8] Pengwin Enterprise 7%`n%homeWSLUnavailable2::REP:=[9] Alpine Linux%`n`n [N] Next Page`n [0] Return to Menu`n [X] Exit`n Page 1/3`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C %homeWSL1Ch% /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  990. IF "%homeWSL1Ch%"=="123456N0X" (
  991. IF %ERRORLEVEL%==1 SET "wslDistro=Ubuntu" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev" & GOTO %wslMenuLoc%
  992. IF %ERRORLEVEL%==2 SET "wslDistro=Ubuntu-18.04" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,lxd,netdev" & GOTO %wslMenuLoc%
  993. IF %ERRORLEVEL%==3 SET "wslDistro=Ubuntu-16.04" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,lxd" & GOTO %wslMenuLoc%
  994. IF %ERRORLEVEL%==4 SET "wslDistro=Debian" & SET "wslGroups=adm,cdrom,sudo,dip,plugdev" & GOTO %wslMenuLoc%
  995. IF %ERRORLEVEL%==5 SET "wslDistro=kali-linux" & SET "wslGroups=adm,cdrom,sudo,dip,plugdev" & GOTO %wslMenuLoc%
  996. IF %ERRORLEVEL%==6 SET "wslDistro=fedoraremix" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  997. IF %ERRORLEVEL%==7 GOTO WSL-DISTROMENUP2
  998. IF %ERRORLEVEL%==8 GOTO HOME-MAINMENU
  999. IF %ERRORLEVEL%==9 EXIT /B 0
  1000. )
  1001. IF %ERRORLEVEL%==1 SET "wslDistro=Ubuntu" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev" & GOTO %wslMenuLoc%
  1002. IF %ERRORLEVEL%==2 SET "wslDistro=Ubuntu-18.04" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,lxd,netdev" & GOTO %wslMenuLoc%
  1003. IF %ERRORLEVEL%==3 SET "wslDistro=Ubuntu-16.04" & SET "wslGroups=adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,lxd" & GOTO %wslMenuLoc%
  1004. IF %ERRORLEVEL%==4 SET "wslDistro=Debian" & SET "wslGroups=adm,cdrom,sudo,dip,plugdev" & GOTO %wslMenuLoc%
  1005. IF %ERRORLEVEL%==5 SET "wslDistro=kali-linux" & SET "wslGroups=adm,cdrom,sudo,dip,plugdev" & GOTO %wslMenuLoc%
  1006. IF %ERRORLEVEL%==6 SET "wslDistro=fedoraremix" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1007. IF %ERRORLEVEL%==7 SET "wslDistro=WLinux" & SET "wslGroups=adm,cdrom,sudo,dip,plugdev" & GOTO %wslMenuLoc%
  1008. IF %ERRORLEVEL%==8 SET "wslDistro=WLE" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1009. IF %ERRORLEVEL%==9 SET "wslDistro=Alpine" & SET "wslGroups=adm,wheel,floppy,cdrom,tape,ping" & GOTO %wslMenuLoc%
  1010. IF %ERRORLEVEL%==10 GOTO WSL-DISTROMENUP2
  1011. IF %ERRORLEVEL%==11 GOTO HOME-MAINMENU
  1012. IF %ERRORLEVEL%==12 EXIT /B 0
  1013. :WSL-DISTROMENUP2
  1014. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  1015. POWERSHELL -NoP -C "Write-Host """ [1] openSUSE 4.2`n [2] openSUSE Tumbleweed`n [3] openSUSE Leap 15.1`n [4] openSUSE Leap 15.2`n [5] openSUSE Leap 15.3`n [6] Oracle Linux 7.9`n [7] Oracle Linux 8.5`n [8] SLES 12 SP2`n%homeWSLUnavailable1::REP:=[9] SLES 12 SP5%`n`n [N] Next Page`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 2/3`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C %homeWSL2Ch% /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1016. IF "%homeWSL2Ch%"=="12345678NP0X" (
  1017. IF %ERRORLEVEL%==1 SET "wslDistro=openSUSE-42" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1018. IF %ERRORLEVEL%==2 SET "wslDistro=openSUSE-Tumbleweed" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1019. IF %ERRORLEVEL%==3 SET "wslDistro=openSUSE-Leap-15-1" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1020. IF %ERRORLEVEL%==4 SET "wslDistro=openSUSE-Leap-15.2" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1021. IF %ERRORLEVEL%==5 SET "wslDistro=openSUSE-Leap-15.3" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1022. IF %ERRORLEVEL%==6 SET "wslDistro=OracleLinux_7_9" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1023. IF %ERRORLEVEL%==7 SET "wslDistro=OracleLinux_8_5" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1024. IF %ERRORLEVEL%==8 SET "wslDistro=SLES-12" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1025. IF %ERRORLEVEL%==9 GOTO WSL-DISTROMENUP3
  1026. IF %ERRORLEVEL%==10 GOTO WSL-DISTROMENUP1
  1027. IF %ERRORLEVEL%==11 GOTO HOME-MAINMENU
  1028. IF %ERRORLEVEL%==12 EXIT /B 0
  1029. )
  1030. IF %ERRORLEVEL%==1 SET "wslDistro=openSUSE-42" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1031. IF %ERRORLEVEL%==2 SET "wslDistro=openSUSE-Tumbleweed" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1032. IF %ERRORLEVEL%==3 SET "wslDistro=openSUSE-Leap-15-1" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1033. IF %ERRORLEVEL%==4 SET "wslDistro=openSUSE-Leap-15.2" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1034. IF %ERRORLEVEL%==5 SET "wslDistro=openSUSE-Leap-15.3" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1035. IF %ERRORLEVEL%==6 SET "wslDistro=OracleLinux_7_9" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1036. IF %ERRORLEVEL%==7 SET "wslDistro=OracleLinux_8_5" & SET "wslGroups=adm,wheel,cdrom" & GOTO %wslMenuLoc%
  1037. IF %ERRORLEVEL%==8 SET "wslDistro=SLES-12" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1038. IF %ERRORLEVEL%==9 SET "wslDistro=SUSE-Linux-Enterprise-Server-12-SP5" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1039. IF %ERRORLEVEL%==10 GOTO WSL-DISTROMENUP3
  1040. IF %ERRORLEVEL%==11 GOTO WSL-DISTROMENUP1
  1041. IF %ERRORLEVEL%==12 GOTO HOME-MAINMENU
  1042. IF %ERRORLEVEL%==13 EXIT /B 0
  1043. :WSL-DISTROMENUP3
  1044. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  1045. POWERSHELL -NoP -C "Write-Host """%homeWSLUnavailable2::REP:=[1] SLES 15 SP1%`n [2] SLES 15 SP2`n [3] SLES 15 SP3`n`n [P] Previous Page`n [0] Return to Menu`n [X] Exit`n Page 3/3`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C %homeWSL3Ch% /N /M %BS%; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1046. IF "%homeWSL3Ch%"=="23P0X" (
  1047. IF %ERRORLEVEL%==1 SET "wslDistro=SUSE-Linux-Enterprise-Server-15-SP2" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1048. IF %ERRORLEVEL%==2 SET "wslDistro=SUSE-Linux-Enterprise-Server-15-SP3" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1049. IF %ERRORLEVEL%==3 GOTO WSL-DISTROMENUP2
  1050. IF %ERRORLEVEL%==4 GOTO HOME-MAINMENU
  1051. IF %ERRORLEVEL%==5 EXIT /B 0
  1052. )
  1053. IF %ERRORLEVEL%==1 SET "wslDistro=SLES-15-SP1" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1054. IF %ERRORLEVEL%==2 SET "wslDistro=SUSE-Linux-Enterprise-Server-15-SP2" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1055. IF %ERRORLEVEL%==3 SET "wslDistro=SUSE-Linux-Enterprise-Server-15-SP3" & SET "wslGroups=users" & GOTO %wslMenuLoc%
  1056. IF %ERRORLEVEL%==4 GOTO WSL-DISTROMENUP2
  1057. IF %ERRORLEVEL%==5 GOTO HOME-MAINMENU
  1058. IF %ERRORLEVEL%==6 EXIT /B 0
  1059. :WSL-DISTROINSTALL
  1060. IF "%altRun%"=="true" GOTO ALTPARENT-WSL-DISTROINSTALL
  1061. SETLOCAL
  1062. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1063. IF "%wslUnattend%"=="true" GOTO :WSL-DISTROUNATTEND
  1064. CALL :AUX-GENRND "7"
  1065. IF NOT "%adminPrivs%"=="false" (
  1066. DISM /Online /Get-FeatureInfo:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /x /c:"State : Enabled" > NUL 2>&1
  1067. IF ERRORLEVEL 1 (
  1068. POWERSHELL -NoP -C "Write-Host """`n`n WSL is disabled.""" -ForegroundColor Red; Write-Host """ __________________________________________________________`n`n Would you like to enable it now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1069. IF ERRORLEVEL 2 ENDLOCAL & GOTO HOME-WSL
  1070. IF ERRORLEVEL 1 ENDLOCAL & GOTO WSL-ENABLE
  1071. )
  1072. WHERE wsl.exe > NUL 2>&1
  1073. IF ERRORLEVEL 1 CALL :AUX-RETURN "A restart is required for WSL functionality." "HOME-WSL" -E
  1074. ) ELSE (
  1075. WHERE wsl.exe > NUL 2>&1
  1076. IF ERRORLEVEL 1 CALL :AUX-RETURN "WSL is disabled." "HOME-WSL" -E
  1077. )
  1078. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%wslDistro%'">NUL 2>&1 && SET "distroReg=true" || SET "distroReg=false"
  1079. IF "%distroReg%"=="" CALL :AUX-RETURN "Failed to check registered distros." "HOME-WSL" -E
  1080. DIR /B /A:d "%LOCALAPPDATA%\AME-WSL" 2>&1 | FINDSTR /X /c:"%wslDistro%" > NUL 2>&1 && SET "distroFiles=true"
  1081. IF "%distroReg%"=="true" (
  1082. CALL :AUX-RETURN "Distro is already installed." "HOME-WSL" -E
  1083. ) ELSE (
  1084. IF "%distroFiles%"=="true" (
  1085. POWERSHELL -NoP -C "Write-Host """`n`n Traces of previous distro installation found.""" -ForegroundColor Red; Write-Host """ __________________________________________________________`n`n Remove installation files and reinstall distro? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1086. IF ERRORLEVEL 2 (
  1087. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1088. ECHO. & ECHO Removing installation files...
  1089. TIMEOUT /T 1 /NOBREAK > NUL 2>&1
  1090. FOR /F "usebackq delims=" %%A IN (`DIR /B /A:d "%LOCALAPPDATA%\AME-WSL" 2^>^&1 ^| FINDSTR /X /c:"%wslDistro%"`) DO (
  1091. FOR /F "usebackq delims=" %%B IN (`DIR /S /B "%LOCALAPPDATA%\AME-WSL\%%A\*.exe" 2^>^&1`) DO (
  1092. FOR /F "usebackq delims=" %%C IN (`POWERSHELL -NoP -C "Get-Process | Where-Object {$_.Path -eq '%%~B'} | Select-Object -ExpandProperty Id" 2^>^&1`) DO (
  1093. TASKKILL /F /T /PID "%%~C" > NUL 2>&1
  1094. )
  1095. )
  1096. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%%A" > NUL
  1097. )
  1098. ) ELSE (
  1099. TASKKILL /F /T /PID "%distroAltPID%" > NUL 2>&1
  1100. ENDLOCAL & GOTO HOME-WSL
  1101. )
  1102. )
  1103. )
  1104. IF "%wslDistro%"=="Alpine" (
  1105. SET "wslLShell=/bin/ash"
  1106. SET "sudo="
  1107. ) ELSE (
  1108. SET "wslLShell=/bin/bash"
  1109. SET "sudo=sudo "
  1110. )
  1111. IF NOT "%wslUnattendRun%"=="true" (
  1112. POWERSHELL -NoP -C "Write-Host """`n A Linux distro must be downloaded`n Continue? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1113. IF ERRORLEVEL 2 ENDLOCAL & GOTO HOME-MAINMENU
  1114. )
  1115. ECHO. & ECHO Fetching download link...
  1116. IF "%wslUnattendRun%"=="true" CALL :AUX-NETWORKCHECK -L
  1117. CALL :AUX-FETCHLINK "HOME-WSL" "%wslDistro%" -Download "%TEMP%\[amecs]-%wslDistro%%rndOut%.zip" "Downloading distro"
  1118. IF %ERRORLEVEL% EQU 5 CALL :AUX-RETURN "%fetchMsgOut%" "HOME-WSL" -E
  1119. ECHO. & ECHO Preparing distro for installation...
  1120. IF NOT EXIST "%LOCALAPPDATA%\AME-WSL" MKDIR "%LOCALAPPDATA%\AME-WSL"
  1121. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp" > NUL 2>&1
  1122. MKDIR "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp"
  1123. POWERSHELL -NoP -C "Expand-Archive -LiteralPath '%TEMP%\[amecs]-%wslDistro%%rndOut%.zip' -DestinationPath '%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp'"
  1124. DEL /Q /F "%TEMP%\[amecs]-%wslDistro%%rndOut%.zip"
  1125. FOR /F "usebackq delims=" %%A IN (`DIR /B "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp" ^| FINDSTR /i ".*_x64\.appx .*_x64\.msix .*\.exe"`) DO (
  1126. IF /i "%%~xA"==".exe" (
  1127. RENAME "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp" "%wslDistro%"
  1128. SET "wslExe=%LOCALAPPDATA%\AME-WSL\%wslDistro%\%%~A"
  1129. SET "wslExeName=%%~nxA"
  1130. ) ELSE (
  1131. RENAME "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp\%%~A" "%%~nA.zip"
  1132. MKDIR "%LOCALAPPDATA%\AME-WSL\%wslDistro%"
  1133. POWERSHELL -NoP -C "$ProgressPreference = 'SilentlyContinue'; Expand-Archive -LiteralPath '%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp\%%~nA.zip' -DestinationPath '%LOCALAPPDATA%\AME-WSL\%wslDistro%'"
  1134. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp"
  1135. FOR /F "usebackq delims=" %%B IN (`DIR /B "%LOCALAPPDATA%\AME-WSL\%wslDistro%" ^| FINDSTR /i ".*\.exe"`) DO (
  1136. IF /i "%%~B"=="PengwinUI.exe" (
  1137. COPY "%LOCALAPPDATA%\AME-WSL\%wslDistro%\DistroLauncher\pengwin.exe" "%LOCALAPPDATA%\AME-WSL\%wslDistro%\pengwin.exe" /y > NUL
  1138. SET "wslExe=%LOCALAPPDATA%\AME-WSL\%wslDistro%\pengwin.exe"
  1139. SET "wslExeName=pengwin.exe"
  1140. ) ELSE (
  1141. SET "wslExe=%LOCALAPPDATA%\AME-WSL\%wslDistro%\%%~B"
  1142. SET "wslExeName=%%~nxB"
  1143. )
  1144. )
  1145. )
  1146. )
  1147. IF "%wslExe%"=="" (
  1148. DEL /Q /F "%TEMP%\%wslDistro%%rndOut%.zip" > NUL
  1149. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%wslDistro%%rndOut%-Tmp" > NUL 2>&1
  1150. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%wslDistro%" > NUL 2>&1
  1151. CALL :AUX-RETURN "Failed to locate distro executable." "HOME-WSL" -E
  1152. )
  1153. ECHO. & ECHO Installing distro, this may take awhile...
  1154. SET /A "count0=0"
  1155. SET /A "count1=0"
  1156. POWERSHELL -NoP -C "(Start-Process 'CMD' -ArgumentList '/K','POWERSHELL -NoP -C """"(Start-Process ''%wslExe:'=''''%'' -NoNewWindow -PassThru).Id | Out-File -LiteralPath ''%TEMP:'=''''%\[amecs]-DistroPID%rndOut%.txt'' -Encoding default""""' -WindowStyle Hidden -PassThru).Id" 1> "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt"
  1157. :WSL-DISTROPROGRESS
  1158. TIMEOUT /T 2 /NOBREAK > NUL
  1159. IF %count0% GEQ 15 (
  1160. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  1161. CALL :AUX-RETURN "Failed to fetch distro process IDs." "HOME-WSL" -C -E
  1162. )
  1163. IF %count1% GTR 500 (
  1164. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  1165. CALL :AUX-RETURN "Distro installation timed out." "HOME-WSL" -C -E
  1166. )
  1167. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt" > NUL 2>&1
  1168. IF %ERRORLEVEL% NEQ 0 (
  1169. SET /A "count0=%count0%+1"
  1170. GOTO WSL-DISTROPROGRESS
  1171. ) ELSE (
  1172. SET /P "distroHostPID=" < "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt"
  1173. )
  1174. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%TEMP%\[amecs]-DistroPID%rndOut%.txt" > NUL 2>&1
  1175. IF %ERRORLEVEL% NEQ 0 (
  1176. SET /A "count0=%count0%+1"
  1177. GOTO WSL-DISTROPROGRESS
  1178. ) ELSE (
  1179. SET /P "distroPID=" < "%TEMP%\[amecs]-DistroPID%rndOut%.txt"
  1180. )
  1181. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%wslDistro%'" > NUL 2>&1
  1182. IF %ERRORLEVEL% EQU 0 (
  1183. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  1184. GOTO WSL-DISTROCONFIG
  1185. )
  1186. TASKLIST /FI "IMAGENAME eq cmd.exe" /FI "PID eq %distroHostPID%" 2>&1 | FINDSTR /i /c:"cmd.exe">NUL 2>&1 || SET /A "count1=%count1%+50"
  1187. SET /A "count1=%count1%+1"
  1188. GOTO WSL-DISTROPROGRESS
  1189. :WSL-DISTROCONFIG
  1190. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1191. CALL :AUX-INPUTLOOP "wslRootPass" "Enter new root password" "0" "1" -Secure
  1192. CALL :AUX-INPUTLOOP "wslUser" "Enter new UNIX username" "%inpLenOut%" "2"
  1193. IF NOT "%wslUser%"==":None:" CALL :AUX-INPUTLOOP "wslUserPass" "Enter new UNIX password" "%inpLenOut%" "1" -Secure
  1194. IF NOT "%wslRootPass%"==":None:" SET "wslRootArg=echo -e """"%wslRootPass%\n%wslRootPass%"""" | passwd """"root"""" && "
  1195. IF NOT "%wslUser%"==":None:" SET "wslUserArg=useradd -m -G %wslGroups% -s %wslLShell% """"%wslUser%"""" && echo -e """"\n[user]\ndefault=%wslUser%"""" >> """"/etc/wsl.conf"""" && "
  1196. IF NOT "%wslUserPass%"==":None:" SET "wslUserPassArg=echo -e """"%wslUserPass%\n%wslUserPass%"""" | passwd """"%wslUser%"""" && "
  1197. POWERSHELL -NoP -C "Write-Host -NoNewLine '%wslRootArg%%sudo%%wslUserArg%%wslUserPassArg%echo """"Blank""""'" > "%TEMP%\[amecs]-WSLLin%rndOut%.txt" 2>&1
  1198. WSL -d %wslDistro% < "%TEMP%\[amecs]-WSLLin%rndOut%.txt" > NUL 2>&1
  1199. WSL -t %wslDistro% > NUL 2>&1
  1200. :WSL-DISTROCOMPLETE
  1201. ECHO "%wslDistro%" | FINDSTR /b /c:""""SUSE-Linux-Enterprise" /c:""""SLES-" > NUL 2>&1
  1202. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Distro installed successfully" -H -L "Use the SUSEConnect command to register this distro." -C
  1203. CALL :AUX-RETURN "Distro installed successfully" -H -C
  1204. :WSL-DISTROREMOVE
  1205. IF "%altRun%"=="true" GOTO ALTPARENT-WSL-DISTROREMOVE
  1206. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1207. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%wslDistro%'">NUL 2>&1 && SET "distroReg=true" || SET "distroReg=false"
  1208. IF "%distroReg%"=="" (
  1209. TASKKILL /F /T /PID "%distroAltPID%" > NUL 2>&1
  1210. CALL :AUX-RETURN "Failed to check registered distros." "HOME-WSL" -E
  1211. )
  1212. DIR /B /A:d "%LOCALAPPDATA%\AME-WSL" 2>&1 | FINDSTR /X /c:"%wslDistro%" > NUL 2>&1 && SET "distroRemFiles=true"
  1213. IF NOT "%distroReg%"=="true" (
  1214. TASKKILL /F /T /PID "%distroAltPID%" > NUL 2>&1
  1215. IF NOT "%distroRemFiles%"=="true" CALL :AUX-RETURN "Distro is not installed." "HOME-WSL" -E
  1216. )
  1217. POWERSHELL -NoP -C "Write-Host """`n Are you sure you want to remove this distro? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1218. IF %ERRORLEVEL%==2 TASKKILL /F /T /PID "%distroAltPID%">NUL 2>&1 & ENDLOCAL & GOTO HOME-MAINMENU
  1219. ECHO. & ECHO Removing distro...
  1220. IF "%distroReg%"=="true" (
  1221. WSL --unregister %wslDistro% > NUL 2>&1
  1222. IF NOT ERRORLEVEL 0 CALL :AUX-RETURN "Failed to unregister distro." "HOME-WSL" -E
  1223. )
  1224. FOR /F "usebackq delims=" %%A IN (`DIR /B /A:d "%LOCALAPPDATA%\AME-WSL" 2^>^&1 ^| FINDSTR /X /c:"%wslDistro%"`) DO (
  1225. FOR /F "usebackq delims=" %%B IN (`DIR /S /B "%LOCALAPPDATA%\AME-WSL\%%A\*.exe" 2^>^&1`) DO (
  1226. FOR /F "usebackq delims=" %%C IN (`POWERSHELL -NoP -C "Get-Process | Where-Object {$_.Path -eq '%%~B'} | Select-Object -ExpandProperty Id" 2^>^&1`) DO (
  1227. TASKKILL /F /T /PID "%%~C" > NUL 2>&1
  1228. )
  1229. )
  1230. RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL\%%A" > NUL
  1231. )
  1232. FOR /F "usebackq delims=" %%A IN (`DIR /B "%LOCALAPPDATA%\AME-WSL" 2^>^&1`) DO SET "contentsEmpty=false"
  1233. IF NOT "%contentsEmpty%"=="false" RMDIR /Q /S "%LOCALAPPDATA%\AME-WSL" > NUL 2>&1
  1234. TIMEOUT /T 1 /NOBREAK > NUL
  1235. CALL :AUX-RETURN "Distro removed successfully" -H
  1236. :WSL-DISTROUNATTEND
  1237. CALL :AUX-NETWORKCHECK
  1238. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Internet is required for an unattended installation." "HOME-WSL" -E
  1239. SET "unattendMsg=AutoLogon"
  1240. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /c:"%currentUsername%" > NUL 2>&1
  1241. IF %ERRORLEVEL% EQU 0 (
  1242. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  1243. IF NOT ERRORLEVEL 1 SET "autoLogon=enabled" & SET "unattendMsg=checks"
  1244. )
  1245. CALL :AUX-CENTERTEXT "Unattended mode requires your password for %unattendMsg%"
  1246. POWERSHELL -NoP -C "Write-Host """`n%cenOut%"""; Write-Host ' YOUR COMPUTER WILL RESTART DURING THE PROCESS' -ForegroundColor Red"
  1247. CALL :AUX-INPUTLOOP "userPassword" "Enter your password, or enter 'Cancel' to exit" "3" "9" -Secure
  1248. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  1249. IF NOT "%userPassword%"=="" (
  1250. POWERSHELL -NoP -C "$Pass = ConvertTo-SecureString -AsPlainText -String '%userPassword:'=''%' -Force; $Creds = New-Object System.Management.Automation.PSCredential '%currentUsername:'=''%',$Pass; Start-Process '%scriptPath:'=''%' -Credential $Creds -ArgumentList 'permsCheck' -WindowStyle Hidden" > NUL 2>&1
  1251. IF ERRORLEVEL 1 CALL :AUX-RETURN "User %currentUsername% must be able to read and execute this script." "HOME-WSL" -E
  1252. )
  1253. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & SET /A "inpLenOut=0"
  1254. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Enabled" > NUL 2>&1
  1255. IF %ERRORLEVEL% NEQ 0 (
  1256. ECHO. & ECHO Enabling WSL...
  1257. SET /A "inpLenOut=%inpLenOut%+2"
  1258. DISM /Online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux -NoRestart /English | FINDSTR /I /c:"Error"
  1259. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to enable WSL. (1)" "HOME-WSL" -E
  1260. DISM /Online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /I /c:"State : Disabled" > NUL 2>&1
  1261. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Failed to enable WSL. (2)" "HOME-WSL" -E
  1262. )
  1263. CALL :AUX-GENRND "7"
  1264. IF NOT "%userPassword%"=="" SET "userPassword=%userPassword:'=''%"
  1265. IF NOT "%autoLogon%"=="enabled" (
  1266. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & SET /A "inpLenOut=0"
  1267. ECHO. & ECHO Enabling AutoLogon...
  1268. SET /A "inpLenOut=%inpLenOut%+2"
  1269. CERTUTIL /f /decode "%scriptPath%" "%TEMP%\[amecs]-AutoLogon%rndOut%.exe" > NUL 2>&1
  1270. POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -Wait -NoNewWindow" > NUL 2>&1
  1271. IF NOT "%userPassword%"=="" (
  1272. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '""""%currentUsername:'=''%""""','""""%userPassword:'=''%""""','1','/DISABLECAD' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  1273. ) ELSE (
  1274. POWERSHELL -NoP -C "EXIT (Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '""""%currentUsername:'=''%""""','""""""','1','/DISABLECAD' -Wait -NoNewWindow).ExitCode" > NUL 2>&1
  1275. )
  1276. IF ERRORLEVEL 1 (
  1277. POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow" > NUL 2>&1
  1278. IF ERRORLEVEL 7 CALL :AUX-RETURN "Failed to enable AutoLogon. (4)" -H -E -C
  1279. CALL :AUX-RETURN "Failed to enable AutoLogon. (5)" -H -E -C
  1280. )
  1281. SET "userPassword="
  1282. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /I /E /c:" %currentUsername%" > NUL 2>&1
  1283. IF NOT ERRORLEVEL 1 (
  1284. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  1285. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & CALL :AUX-RETURN "Failed to enable AutoLogon. (6)" -H -E -C
  1286. ) ELSE (
  1287. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & CALL :AUX-RETURN "Failed to enable AutoLogon. (7)" -H -E -C
  1288. )
  1289. )
  1290. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1291. ECHO. & ECHO Creating task and restarting computer...
  1292. IF "%userStatus%"=="Elevated" (
  1293. SCHTASKS /CREATE /TN "[amecs]-WSLUNATTENDSTART" /TR "CMD /C 'SCHTASKS /DELETE /TN '[amecs]-WSLUNATTENDSTART' /F>NUL&'%scriptPath%' wslUnattend '%wslDistro%' '%wslGroups%''" /SC ONLOGON /RL HIGHEST /RU "%currentUsername%" /F> NUL 2>&1 < NUL
  1294. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDSTART" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (1)" -H -E -C
  1295. POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-WSLUNATTENDSTART' -Settings $TaskSet" > NUL 2>&1
  1296. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDSTART" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (2)" -H -E -C
  1297. ) ELSE (
  1298. EVENTCREATE /L APPLICATION /T INFORMATION /ID 10 /D "Set up event source." /SO "AMECS" > NUL 2>&1
  1299. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (1)" -H -E -C
  1300. SCHTASKS /CREATE /TN "[amecs]-WSLUNATTENDTASKDEL" /TR "CMD /C 'SCHTASKS /DELETE /TN '[amecs]-WSLUNATTENDSTART' /F & SCHTASKS /DELETE /TN '[amecs]-WSLUNATTENDTASKDEL' /F & POWERSHELL -NoP -C 'Remove-EventLog -Source ''''AMECS'''''" /sc ONEVENT /MO "*[System[Provider[@Name='AMECS'] and EventID=10]]" /EC Application /RL HIGHEST /RU "SYSTEM" /F> NUL 2>&1
  1301. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDTASKDEL" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (2)" -H -E -C
  1302. POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-WSLUNATTENDTASKDEL' -Settings $TaskSet" > NUL 2>&1
  1303. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDTASKDEL" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (3)" -H -E -C
  1304. SCHTASKS /CREATE /TN "[amecs]-WSLUNATTENDSTART" /TR "CMD /C 'EVENTCREATE /L APPLICATION /T INFORMATION /ID 10 /D TR /SO AMECS>NUL&'%scriptPath%' wslUnattend '%wslDistro%' '%wslGroups%''" /SC ONLOGON /RL HIGHEST /RU "%currentUsername%" /F > NUL 2>&1
  1305. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDSTART" /F>NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDTASKDEL" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (4)" -H -E -C
  1306. POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-WSLUNATTENDSTART' -Settings $TaskSet" > NUL 2>&1
  1307. IF ERRORLEVEL 1 POWERSHELL -NoP -C "Start-Process '%TEMP:'=''%\[amecs]-AutoLogon%rndOut%.exe' -ArgumentList '/DEL' -NoNewWindow">NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDSTART" /F>NUL 2>&1 & SCHTASKS /DELETE /TN "[amecs]-WSLUNATTENDTASKDEL" /F>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (5)" -H -E -C
  1308. )
  1309. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1310. SHUTDOWN -R -T 0 & EXIT 0
  1311. REM --------------------------WSL-END---------------------------
  1312. REM ---------------------------NOTIF----------------------------
  1313. :NOTIF-ENABLE
  1314. SETLOCAL
  1315. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1316. ECHO. & ECHO Enabling desktop notifications...
  1317. TIMEOUT /T 2 /NOBREAK > NUL
  1318. REG ADD "HKU\%userSID%\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v ToastEnabled /t REG_DWORD /d 1 /f > NUL
  1319. CALL :AUX-RETURN "Desktop notifications are now enabled" -H R:L.sign-out -L "A sign-out is required to take effect."
  1320. :NOTIF-DISABLE
  1321. SETLOCAL
  1322. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1323. ECHO. & ECHO Disabling desktop notifications...
  1324. TIMEOUT /T 2 /NOBREAK > NUL
  1325. REG ADD "HKU\%userSID%\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v ToastEnabled /t REG_DWORD /d 0 /f > NUL
  1326. CALL :AUX-RETURN "Desktop notifications are now disabled" -H R:L.sign-out -L "A sign-out is required to take effect."
  1327. REM -------------------------NOTIF-END-------------------------
  1328. REM -------------------------NOTIFCEN--------------------------
  1329. :NOTIFCEN-ENABLE
  1330. SETLOCAL
  1331. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1332. ECHO. & ECHO Enabling Notification Center...
  1333. TIMEOUT /T 2 /NOBREAK > NUL
  1334. REG ADD "HKU\%userSID%\Software\Policies\Microsoft\Windows\Explorer" /v DisableNotificationCenter /t REG_DWORD /d 0 /f > NUL
  1335. CALL :AUX-RETURN "The Notification Center is now enabled" -H R:L.sign-out -L "A sign-out is required to take effect."
  1336. :NOTIFCEN-DISABLE
  1337. SETLOCAL
  1338. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1339. ECHO. & ECHO Disabling Notification Center...
  1340. TIMEOUT /T 2 /NOBREAK > NUL
  1341. REG ADD "HKU\%userSID%\Software\Policies\Microsoft\Windows\Explorer" /v DisableNotificationCenter /t REG_DWORD /d 1 /f > NUL
  1342. CALL :AUX-RETURN "The Notification Center is now disabled" -H R:L.sign-out -L "A sign-out is required to take effect."
  1343. REM -----------------------NOTIFCEN-END------------------------
  1344. REM -------------------------HIBERNATE-------------------------
  1345. :HIBERNATE-ENABLE
  1346. SETLOCAL
  1347. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1348. ECHO. & ECHO Enabling hibernation...
  1349. TIMEOUT /T 2 /NOBREAK > NUL
  1350. POWERCFG /HIBERNATE /TYPE FULL > NUL 2>&1
  1351. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to enable hibernation." "HOME-EXTRA" -L "Hibernation may not be supported by your firmware." -E
  1352. CALL :AUX-RETURN "Hibernation is now enabled" -H
  1353. :HIBERNATE-DISABLE
  1354. SETLOCAL
  1355. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1356. ECHO. & ECHO Disabling hibernation...
  1357. TIMEOUT /T 2 /NOBREAK > NUL
  1358. POWERCFG /HIBERNATE OFF > NUL 2>&1
  1359. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to disable hibernation." "HOME-EXTRA" -E
  1360. CALL :AUX-RETURN "Hibernation is now disabled" -H
  1361. REM -----------------------HIBERNATE-END-----------------------
  1362. REM ----------------------------WSH-----------------------------
  1363. :WSH-ENABLE
  1364. SETLOCAL
  1365. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1366. ECHO. & ECHO Enabling Windows Script Host...
  1367. TIMEOUT /T 2 /NOBREAK > NUL
  1368. REG ADD "HKU\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f > NUL
  1369. REG ADD "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f > NUL
  1370. REG ADD "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f > NUL
  1371. CALL :AUX-RETURN "WSH is now enabled" -H
  1372. REM R:L.sign-out -L "A sign-out is required to complete the setup."
  1373. :WSH-DISABLE
  1374. SETLOCAL
  1375. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1376. ECHO. & ECHO Disabling Windows Script Host...
  1377. TIMEOUT /T 2 /NOBREAK > NUL
  1378. REG ADD "HKU\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /f > NUL
  1379. REG ADD "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /f > NUL
  1380. REG ADD "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /f > NUL
  1381. CALL :AUX-RETURN "WSH is now disabled" -H
  1382. REM "R:R -T 0.restart" -L "A sign-out is required to complete."
  1383. REM --------------------------WSH-END--------------------------
  1384. REM ----------------------------VBS-----------------------------
  1385. :VBS-ENABLE
  1386. SETLOCAL
  1387. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1388. ECHO. & ECHO Enabling Visual Basic Script...
  1389. TIMEOUT /T 2 /NOBREAK > NUL
  1390. ASSOC .vbs=VBSFile> NUL
  1391. CALL :AUX-RETURN "VBS is now enabled" -H
  1392. :VBS-DISABLE
  1393. SETLOCAL
  1394. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1395. ECHO. & ECHO Disabling Visual Basic Script...
  1396. TIMEOUT /T 2 /NOBREAK > NUL
  1397. ASSOC .vbs=> NUL
  1398. CALL :AUX-RETURN "VBS is now disabled" -H
  1399. REM --------------------------VBS-END--------------------------
  1400. REM ---------------------------NCSI----------------------------
  1401. :NCSI-ENABLE
  1402. SETLOCAL
  1403. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1404. ECHO. & ECHO Enabling NCSI Active Probing...
  1405. TIMEOUT /T 2 /NOBREAK > NUL
  1406. REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing /t REG_DWORD /d 1 /f > NUL
  1407. CALL :AUX-RETURN "NCSI Active Probing is now enabled" -H -R -L "A restart is required to take effect."
  1408. :NCSI-DISABLE
  1409. SETLOCAL
  1410. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1411. ECHO. & ECHO Disabling NCSI Active Probing...
  1412. TIMEOUT /T 2 /NOBREAK > NUL
  1413. REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing /t REG_DWORD /d 0 /f > NUL
  1414. CALL :AUX-RETURN "NCSI Active Probing is now disabled" -H -R -L "A restart is required to take effect."
  1415. REM -------------------------NCSI-END--------------------------
  1416. REM --------------------------NEWUSER--------------------------
  1417. :NEWUSER-MENU
  1418. SETLOCAL
  1419. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.
  1420. POWERSHELL -NoP -C "Write-Host """ [1] Create a New User`n [2] Remove Existing User`n`n [0] Return to Menu`n [X] Exit`n`n __________________________________________________________`n`n Choose a menu option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C 120X /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1421. IF %ERRORLEVEL%==1 GOTO NEWUSER-CREATE
  1422. IF %ERRORLEVEL%==2 GOTO NEWUSER-REMOVE
  1423. IF %ERRORLEVEL%==3 ENDLOCAL & GOTO HOME-MAINMENU
  1424. IF %ERRORLEVEL%==4 EXIT /B 0
  1425. :NEWUSER-CREATE
  1426. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1427. CALL :AUX-INPUTLOOP "newUsername" "Enter new username, or 'Cancel' to quit" "0" "7"
  1428. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  1429. CALL :AUX-INPUTLOOP "newPassword" "Enter new password, or 'Cancel' to quit" "%inpLenOut%" "6" -Secure
  1430. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  1431. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & SET /A "inpLenOut=0"
  1432. ECHO. & ECHO Creating user...
  1433. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  1434. NET user "%newUsername%" "%newPassword%" /add /y > NUL 2>&1
  1435. IF %ERRORLEVEL% NEQ 0 NET user "%newUsername%" /delete /y>NUL 2>&1 & CALL :AUX-RETURN "Failed to add new user." "NEWUSER-MENU" -E
  1436. IF %inpLenOut% GEQ 9 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1437. ECHO. & ECHO Configuring new user...
  1438. REM SCHTASKS /create /tn "[amecs]-NEWUSERREG" /tr "CMD /C 'FOR /F 'usebackq delims=' %%A IN (`REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications^^&REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Config`) DO REG DELETE '%%A' /f'" /sc MONTHLY /f /rl HIGHEST /ru "SYSTEM" > NUL
  1439. REM IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-NEWUSERREG" /F>NUL 2>&1 & NET user "%newUsername%" /delete /y>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (1)" -H -E
  1440. REM POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-NEWUSERREG' -Settings $TaskSet" > NUL 2>&1
  1441. REM IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-NEWUSERREG" /F>NUL 2>&1 & NET user "%newUsername%" /delete /y>NUL 2>&1 & CALL :AUX-RETURN "Failed to create scheduled task. (2)" -H -E
  1442. REM SCHTASKS /run /tn "[amecs]-NEWUSERREG" > NUL
  1443. REM SCHTASKS /delete /tn "[amecs]-NEWUSERREG" /f > NUL
  1444. FOR /F "usebackq tokens=3 delims= " %%A IN (`SC queryex "AppReadiness" 2^>^&1 ^| FINDSTR /R /X /c:"[ ]*PID[ ]*:[ ].*"`) DO (
  1445. IF NOT "%%A"=="0" TASKKILL /PID "%%A" /F > NUL 2>&1
  1446. SC delete "AppReadiness" > NUL 2>&1
  1447. )
  1448. REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\OOBE" /v DisablePrivacyExperience /t REG_DWORD /d 1 /f > NUL 2>&1
  1449. REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableFirstLogonAnimation /t REG_DWORD /d 0 /f > NUL 2>&1
  1450. REG LOAD "HKU\DefaultHiveMount" "%SYSTEMDRIVE%\Users\Default\NTUSER.DAT" > NUL 2>&1
  1451. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell" /t REG_SZ /f > NUL 2>&1
  1452. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\OpenShell" /t REG_SZ /f > NUL 2>&1
  1453. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\OpenShell\Settings" /t REG_SZ /f > NUL 2>&1
  1454. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu" /t REG_SZ /f > NUL 2>&1
  1455. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /t REG_SZ /f > NUL 2>&1
  1456. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\ClassicExplorer" /t REG_SZ /f > NUL 2>&1
  1457. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\ClassicExplorer\Settings" /t REG_SZ /f > NUL 2>&1
  1458. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\ClassicExplorer" /v "ShowedToolbar" /t REG_DWORD /d 1 /f > NUL 2>&1
  1459. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\ClassicExplorer" /v "NewLine" /t REG_DWORD /d 0 /f > NUL 2>&1
  1460. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\ClassicExplorer\Settings" /v "ShowStatusBar" /t REG_DWORD /d 0 /f > NUL 2>&1
  1461. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu" /v "ShowedStyle2" /t REG_DWORD /d 1 /f > NUL 2>&1
  1462. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu" /v "CSettingsDlg" /t REG_BINARY /d c80100001a0100000000000000000000360d00000100000000000000 /f > NUL 2>&1
  1463. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu" /v "OldItems" /t REG_BINARY /f > NUL 2>&1
  1464. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu" /v "ItemRanks" /t REG_BINARY /d 0 /f > NUL 2>&1
  1465. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\MRU" /v "0" /t REG_SZ /d "%SYSTEMDRIVE%\Windows\regedit.exe" /f > NUL 2>&1
  1466. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "Version" /t REG_DWORD /d 04040098 /f > NUL 2>&1
  1467. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "AllProgramsMetro" /t REG_DWORD /d 1 /f > NUL 2>&1
  1468. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "RecentMetroApps" /t REG_DWORD /d 1 /f > NUL 2>&1
  1469. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "StartScreenShortcut" /t REG_DWORD /d 0 /f > NUL 2>&1
  1470. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "SearchInternet" /t REG_DWORD /d 0 /f > NUL 2>&1
  1471. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "GlassOverride" /t REG_DWORD /d 1 /f > NUL 2>&1
  1472. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "GlassColor" /t REG_DWORD /d 0 /f > NUL 2>&1
  1473. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "SkinW7" /t REG_SZ /d "Fluent-Metro" /f > NUL 2>&1
  1474. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "SkinVariationW7" /t REG_SZ /f > NUL 2>&1
  1475. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "SkipMetro" /t REG_DWORD /d 1 /f > NUL 2>&1
  1476. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "MenuItems7" /t REG_MULTI_SZ /d "Item1.Command=user_files"\0"Item1.Settings=NOEXPAND"\0"Item2.Command=user_documents"\0"Item2.Settings=NOEXPAND"\0"Item3.Command=user_pictures"\0"Item3.Settings=NOEXPAND"\0"Item4.Command=user_music"\0"Item4.Settings=NOEXPAND"\0"Item5.Command=user_videos"\0"Item5.Settings=NOEXPAND"\0"Item6.Command=downloads"\0"Item6.Settings=NOEXPAND"\0"Item7.Command=homegroup"\0"Item7.Settings=ITEM_DISABLED"\0"Item8.Command=separator"\0"Item9.Command=games"\0"Item9.Settings=TRACK_RECENT|NOEXPAND|ITEM_DISABLED"\0"Item10.Command=favorites"\0"Item10.Settings=ITEM_DISABLED"\0"Item11.Command=recent_documents"\0"Item12.Command=computer"\0"Item12.Settings=NOEXPAND"\0"Item13.Command=network"\0"Item13.Settings=ITEM_DISABLED"\0"Item14.Command=network_connections"\0"Item14.Settings=ITEM_DISABLED"\0"Item15.Command=separator"\0"Item16.Command=control_panel"\0"Item16.Settings=TRACK_RECENT"\0"Item17.Command=pc_settings"\0"Item17.Settings=TRACK_RECENT"\0"Item18.Command=admin"\0"Item18.Settings=TRACK_RECENT|ITEM_DISABLED"\0"Item19.Command=devices"\0"Item19.Settings=ITEM_DISABLED"\0"Item20.Command=defaults"\0"Item20.Settings=ITEM_DISABLED"\0"Item21.Command=help"\0"Item21.Settings=ITEM_DISABLED"\0"Item22.Command=run"\0"Item23.Command=apps"\0"Item23.Settings=ITEM_DISABLED"\0"Item24.Command=windows_security"\0"Item24.Settings=ITEM_DISABLED"\0"" /f > NUL 2>&1
  1477. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\OpenShell\StartMenu\Settings" /v "SkinOptionsW7" /t REG_MULTI_SZ /d "DARK_MAIN=0"\0"METRO_MAIN=0"\0"LIGHT_MAIN=0"\0"AUTOMODE_MAIN=1"\0"DARK_SUBMENU=0"\0"METRO_SUBMENU=0"\0"LIGHT_SUBMENU=0"\0"AUTOMODE_SUBMENU=1"\0"SUBMENU_SEPARATORS=1"\0"DARK_SEARCH=0"\0"METRO_SEARCH=0"\0"LIGHT_SEARCH=0"\0"AUTOMODE_SEARCH=1"\0"SEARCH_FRAME=1"\0"SEARCH_COLOR=0"\0"MODERN_SEARCH=1"\0"SEARCH_ITALICS=0"\0"NONE=0"\0"SEPARATOR=0"\0"TWO_TONE=1"\0"CLASSIC_SELECTOR=1"\0"HALF_SELECTOR=0"\0"CURVED_MENUSEL=1"\0"CURVED_SUBMENU=0"\0"SELECTOR_REVEAL=1"\0"TRANSPARENT=0"\0"OPAQUE_SUBMENU=1"\0"OPAQUE_MENU=0"\0"OPAQUE=0"\0"STANDARD=0"\0"SMALL_MAIN2=1"\0"SMALL_ICONS=0"\0"COMPACT_SUBMENU=0"\0"PRESERVE_MAIN2=0"\0"LESS_PADDING=0"\0"EXTRA_PADDING=1"\0"24_PADDING=0"\0"LARGE_PROGRAMS=0"\0"TRANSPARENT_SHUTDOWN=0"\0"OUTLINE_SHUTDOWN=0"\0"BUTTON_SHUTDOWN=1"\0"EXPERIMENTAL_SHUTDOWN=0"\0"LARGE_FONT=0"\0"CONNECTED_BORDER=1"\0"FLOATING_BORDER=0"\0"LARGE_SUBMENU=0"\0"LARGE_LISTS=0"\0"THIN_MAIN2=0"\0"EXPERIMENTAL_MAIN2=1"\0"USER_IMAGE=1"\0"USER_OUTSIDE=0"\0"SCALING_USER=1"\0"56=0"\0"64=0"\0"TRANSPARENT_USER=0"\0"UWP_SCROLLBAR=0"\0"MODERN_SCROLLBAR=1"\0"SMALL_ARROWS=0"\0"ARROW_BACKGROUND=1"\0"ICON_FRAME=0"\0"SEARCH_SEPARATOR=0"\0"NO_PROGRAMS_BUTTON=0"\0"" /f > NUL 2>&1
  1478. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v SearchboxTaskbarMode /t REG_DWORD /d 0 /f > NUL 2>&1
  1479. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowTaskViewButton /t REG_DWORD /d 0 /f > NUL 2>&1
  1480. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v EnableAutoTray /t REG_DWORD /d 0 /f > NUL 2>&1
  1481. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" /v Enabled /t REG_DWORD /d 0 /f > NUL 2>&1
  1482. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost" /v EnableWebContentEvaluation /t REG_DWORD /d 0 /f > NUL 2>&1
  1483. REG ADD "HKEY_USERS\DefaultHiveMount\Control Panel\International\User Profile" /v HttpAcceptLanguageOptOut /t REG_DWORD /d 1 /f > NUL 2>&1
  1484. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v DisableNotificationCenter /t REG_DWORD /d 1 /f > NUL 2>&1
  1485. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f > NUL 2>&1
  1486. REG ADD "HKEY_USERS\DefaultHiveMount\System\GameConfigStore" /v GameDVR_Enabled /t REG_DWORD /d 0 /f > NUL 2>&1
  1487. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments" /v SaveZoneInformation /t REG_DWORD /d 1 /f > NUL 2>&1
  1488. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost" /v ContentEvaluation /t REG_DWORD /d 0 /f > NUL 2>&1
  1489. REG ADD "HKEY_USERS\DefaultHiveMount\Control Panel\Desktop" /v WaitToKillAppTimeOut /t REG_SZ /d 2000 /f > NUL 2>&1
  1490. REG DELETE "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense" /f > NUL 2>&1
  1491. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "BingSearchEnabled" /t REG_DWORD /d 0 /f > NUL 2>&1
  1492. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "CortanaConsent" /t REG_DWORD /d 0 /f > NUL 2>&1
  1493. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "CortanaInAmbientMode" /t REG_DWORD /d 0 /f > NUL 2>&1
  1494. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "HistoryViewEnabled" /t REG_DWORD 0 /f > NUL 2>&1
  1495. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "HasAboveLockTips" /t REG_DWORD /d 0 /f > NUL 2>&1
  1496. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "AllowSearchToUseLocation" /t REG_DWORD /d 0 /f > NUL 2>&1
  1497. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\SearchSettings" /v "SafeSearchMode" /t REG_DWORD /d 0 /f > NUL 2>&1
  1498. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v "DisableSearchBoxSuggestions" /t REG_DWORD /d 1 /f > NUL 2>&1
  1499. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\InputPersonalization" /v "RestrictImplicitTextCollection" /t REG_DWORD /d 1 /f > NUL 2>&1
  1500. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\InputPersonalization" /v "RestrictImplicitInkCollection" /t REG_DWORD /d 1 /f > NUL 2>&1
  1501. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" /v "AcceptedPrivacyPolicy" /t REG_DWORD /d 0 /f > NUL 2>&1
  1502. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" /v "HarvestContacts" /t REG_DWORD /d 0 /f > NUL 2>&1
  1503. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Personalization\Settings" /v "AcceptedPrivacyPolicy" /t REG_DWORD /d 0 /f > NUL 2>&1
  1504. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v "DisableSearchBoxSuggestions" /t REG_DWORD /d 1 /f > NUL 2>&1
  1505. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "NavPaneShowAllFolders" /t REG_DWORD /d 0 /f > NUL 2>&1
  1506. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v LaunchTo /t REG_DWORD /d 1 /f > NUL 2>&1
  1507. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 0 /f > NUL 2>&1
  1508. REG ADD "HKEY_USERS\DefaultHiveMount\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t REG_DWORD /d 1 /f > NUL 2>&1
  1509. REG UNLOAD "HKU\DefaultHiveMount" > NUL 2>&1
  1510. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  1511. CALL :AUX-RETURN "User created successfully" -H
  1512. :NEWUSER-REMOVE
  1513. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1514. CALL :AUX-INPUTLOOP "usernameRemove" "Enter user to be removed, or 'Cancel' to quit" "0" "8"
  1515. IF %ERRORLEVEL% EQU 3 ENDLOCAL & GOTO HOME-MAINMENU
  1516. IF "%usernameRemove%"=="%currentUsername%" (
  1517. POWERSHELL -NoP -C "Write-Host """The specified user is the current user ^(""""%currentUsername%""""^)`n Continue anyways? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1518. IF ERRORLEVEL 2 ENDLOCAL & GOTO NEWUSER-MENU
  1519. )
  1520. IF %inpLenOut% GEQ 11 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1521. ECHO. & ECHO Removing user...
  1522. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  1523. NET user "%usernameRemove%" /delete /y > NUL 2>&1
  1524. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "Failed to remove user." "NEWUSER-MENU" -E
  1525. CALL :AUX-RETURN "User removed successfully" -H
  1526. REM ------------------------NEWUSER-END------------------------
  1527. REM ----------------------------NVCP---------------------------
  1528. :NVCP-INSTALL
  1529. SETLOCAL
  1530. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1531. SC query "NVDisplay.ContainerLocalSystem" > NUL 2>&1
  1532. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "No NVIDIA driver detected." "HOME-EXTRA" -E
  1533. IF EXIST "%SYSTEMDRIVE%\Program Files\WindowsApps" (
  1534. FOR /F "usebackq delims=" %%A IN (`DIR /A:d /B "%SYSTEMDRIVE%\Program Files\WindowsApps" ^| FINDSTR /c:"NVIDIACorp.NVIDIAControlPanel"`) DO (
  1535. DIR /B "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" | FINDSTR /i /x /c:"nvcplui.exe" > NUL 2>&1
  1536. IF NOT ERRORLEVEL 1 (
  1537. ECHO. & ECHO Installing NVIDIA Control Panel...
  1538. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  1539. TAKEOWN /f "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" /r /a > NUL 2>&1
  1540. ICACLS "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" /grant Administrators:F /t > NUL 2>&1
  1541. ICACLS "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" /grant Users:RX /t > NUL 2>&1
  1542. RMDIR /Q /S "%SYSTEMDRIVE%\Program Files\%%A" > NUL 2>&1
  1543. RMDIR /Q /S "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel" > NUL 2>&1
  1544. MOVE /Y "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" "%SYSTEMDRIVE%\Program Files" > NUL 2>&1
  1545. IF ERRORLEVEL 1 GOTO NVCP-FETCH
  1546. RENAME "%SYSTEMDRIVE%\Program Files\%%A" "NVIDIA Control Panel" > NUL 2>&1
  1547. GOTO NVCP-CONFIG
  1548. )
  1549. )
  1550. )
  1551. :NVCP-FETCH
  1552. POWERSHELL -NoP -C "Write-Host """`n NVIDIA Control Panel must be downloaded`n Continue? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1553. IF %ERRORLEVEL%==2 ENDLOCAL & GOTO HOME-MAINMENU
  1554. ECHO. & ECHO Fetching download link...
  1555. CALL :AUX-GENRND "7"
  1556. CALL :AUX-FETCHLINK "HOME-EXTRA" "NVIDIA-Control-Panel" -Download "%TEMP%\[amecs]-NVCP%rndOut%.zip" "Downloading NVIDIA Control Panel"
  1557. IF %ERRORLEVEL% EQU 5 CALL :AUX-RETURN "%fetchMsgOut%" "HOME-WSL" -E
  1558. ECHO. & ECHO Installing NVIDIA Control Panel...
  1559. IF EXIST "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel" (
  1560. TASKKILL /FI "IMAGENAME eq nvcplui.exe" /F > NUL 2>&1
  1561. IF NOT ERRORLEVEL 1 (
  1562. TIMEOUT /T 3 /NOBREAK > NUL 2>&1
  1563. )
  1564. RMDIR /Q /S "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel" > NUL 2>&1
  1565. )
  1566. POWERSHELL -NoP -C "$ProgressPreference = 'SilentlyContinue'; Expand-Archive -LiteralPath '%TEMP%\[amecs]-NVCP%rndOut%.zip' -DestinationPath '%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel'"
  1567. IF NOT EXIST "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel\nvcplui.exe" (
  1568. RMDIR /Q /S "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel" > NUL 2>&1
  1569. CALL :AUX-RETURN "Download is missing critical executable." "HOME-EXTRA" -E
  1570. )
  1571. :NVCP-CONFIG
  1572. DEL /Q /F "%SYSTEMDRIVE%\ProgramData\Microsoft\Windows\Start Menu\Programs\NVIDIA Control Panel.lnk" > NUL 2>&1
  1573. POWERSHELL -NoP -C "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%SYSTEMDRIVE%\ProgramData\Microsoft\Windows\Start Menu\Programs\NVIDIA Control Panel.lnk'); $S.TargetPath = '%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel\nvcplui.exe'; $S.Save()" > NUL 2>&1
  1574. REG ADD "HKLM\System\CurrentControlSet\Services\nvlddmkm\Global\NVTweak" /v "DisableStoreNvCplNotifications" /t REG_DWORD /d 1 /f > NUL
  1575. SC config "NVDisplay.ContainerLocalSystem" start=auto > NUL 2>&1
  1576. SC start "NVDisplay.ContainerLocalSystem" > NUL 2>&1
  1577. CALL :AUX-RETURN "Installed NVIDIA Control Panel successfully" -H
  1578. :NVCP-UNINSTALL
  1579. SETLOCAL
  1580. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  1581. ECHO. & ECHO Uninstalling NVIDIA Control Panel...
  1582. TASKKILL /FI "IMAGENAME eq nvcplui.exe" /F /T > NUL 2>&1
  1583. IF %ERRORLEVEL% EQU 0 (
  1584. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  1585. )
  1586. TIMEOUT /T 1 /NOBREAK > NUL 2>&1
  1587. DEL /Q /F "%SYSTEMDRIVE%\ProgramData\Microsoft\Windows\Start Menu\Programs\NVIDIA Control Panel.lnk" > NUL 2>&1
  1588. RMDIR /Q /S "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel" > NUL 2>&1
  1589. CALL :AUX-RETURN "Uninstalled NVIDIA Control Panel successfully" -H
  1590. REM --------------------------NVCP-END-------------------------
  1591. REM ------------
  1592. REM Menu Options
  1593. REM ------------
  1594. REM -----------------------------------------------------------
  1595. :MO-MAINMENU
  1596. CALL :AUX-ELEVATIONCHECK
  1597. IF %ERRORLEVEL% EQU 0 (
  1598. SET "homeElevMsg=De-elevate User"
  1599. SET "homeElevLoc=ELEVATE-REVOKE"
  1600. ) ELSE (
  1601. SET "homeElevMsg=Elevate User to Administrator"
  1602. SET "homeElevLoc=ELEVATE-ELEVATE"
  1603. )
  1604. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername 2>&1 | FINDSTR /R /X /C:".*dontdisplaylastusername[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1605. IF %ERRORLEVEL% EQU 0 (
  1606. SET "homeNUMsg=Disable Username Login Requirement"
  1607. SET "homeNULoc=NOUSERNAME-DISABLE"
  1608. ) ELSE (
  1609. SET "homeNUMsg=Enable Username Login Requirement"
  1610. SET "homeNULoc=NOUSERNAME-ENABLE"
  1611. )
  1612. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /c:"%currentUsername%" > NUL 2>&1
  1613. IF %ERRORLEVEL% EQU 0 (
  1614. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  1615. IF NOT ERRORLEVEL 1 (
  1616. SET "homeALMsg=Disable AutoLogon"
  1617. SET "homeALLoc=AUTOLOGON-DISABLE"
  1618. ) ELSE (
  1619. SET "homeALMsg=Enable AutoLogon"
  1620. SET "homeALLoc=AUTOLOGON-ENABLE"
  1621. )
  1622. ) ELSE (
  1623. SET "homeALMsg=Enable AutoLogon"
  1624. SET "homeALLoc=AUTOLOGON-ENABLE"
  1625. )
  1626. EXIT /B 0
  1627. REM -----------------------------------------------------------
  1628. REM -----------------------------------------------------------
  1629. :MO-EXTRA
  1630. REG QUERY "HKU\%userSID%\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v ToastEnabled 2>&1 | FINDSTR /R /X /C:".*ToastEnabled[ ].*REG_DWORD[ ].*0x0" > NUL 2>&1
  1631. IF %ERRORLEVEL% NEQ 0 (
  1632. SET "homeNOTIFMsg=Disable Desktop Notifications"
  1633. SET "homeNOTIFLoc=NOTIF-DISABLE"
  1634. ) ELSE (
  1635. SET "homeNOTIFMsg=Enable Desktop Notifications"
  1636. SET "homeNOTIFLoc=NOTIF-ENABLE"
  1637. )
  1638. REG QUERY "HKU\%userSID%\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v DisableNotificationCenter 2>&1 | FINDSTR /R /X /C:".*DisableNotificationCenter[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1639. IF %ERRORLEVEL% EQU 0 (
  1640. SET "homeNOTIFCENMsg=Enable Notification Center"
  1641. SET "homeNOTIFCENLoc=NOTIFCEN-ENABLE"
  1642. ) ELSE (
  1643. SET "homeNOTIFCENMsg=Disable Notification Center"
  1644. SET "homeNOTIFCENLoc=NOTIFCEN-DISABLE"
  1645. )
  1646. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v HibernateEnabled 2>&1 | FINDSTR /R /X /C:".*HibernateEnabled[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1647. IF %ERRORLEVEL% EQU 0 (
  1648. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v HiberFileType 2>&1 | FINDSTR /R /X /C:".*HiberFileType[ ].*REG_DWORD[ ].*0x2" > NUL 2>&1
  1649. IF NOT ERRORLEVEL 1 (
  1650. SET "homeHIBMsg=Disable Hibernation"
  1651. SET "homeHIBLoc=HIBERNATE-DISABLE"
  1652. ) ELSE (
  1653. SET "homeHIBMsg=Enable Hibernation"
  1654. SET "homeHIBLoc=HIBERNATE-ENABLE"
  1655. )
  1656. ) ELSE (
  1657. SET "homeHIBMsg=Enable Hibernation"
  1658. SET "homeHIBLoc=HIBERNATE-ENABLE"
  1659. )
  1660. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x0" > NUL 2>&1
  1661. IF %ERRORLEVEL% EQU 0 (
  1662. REG QUERY "HKU\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1663. IF ERRORLEVEL 1 (
  1664. SET "homeWSHMsg=Enable Windows Script Host [WSH] (Legacy)"
  1665. SET "homeWSHLoc=WSH-ENABLE"
  1666. ) ELSE (
  1667. SET "homeWSHMsg=Disable Windows Script Host [WSH] (Legacy)"
  1668. SET "homeWSHLoc=WSH-DISABLE"
  1669. )
  1670. ) ELSE (
  1671. REG QUERY "HKU\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x0" > NUL 2>&1
  1672. IF NOT ERRORLEVEL 1 (
  1673. SET "homeWSHMsg=Enable Windows Script Host [WSH] (Legacy)"
  1674. SET "homeWSHLoc=WSH-ENABLE"
  1675. ) ELSE (
  1676. SET "homeWSHMsg=Disable Windows Script Host [WSH] (Legacy)"
  1677. SET "homeWSHLoc=WSH-DISABLE"
  1678. )
  1679. )
  1680. ASSOC .vbs 2>&1| FINDSTR /I /X /c:".vbs=VBSFile" > NUL 2>&1
  1681. IF %ERRORLEVEL% EQU 0 (
  1682. SET "homeVBSMsg=Disable Visual Basic Script [VBS] (Legacy)"
  1683. SET "homeVBSLoc=VBS-DISABLE"
  1684. ) ELSE (
  1685. SET "homeVBSMsg=Enable Visual Basic Script [VBS] (Legacy)"
  1686. SET "homeVBSLoc=VBS-ENABLE"
  1687. )
  1688. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing 2>&1 | FINDSTR /R /X /C:".*EnableActiveProbing[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1689. IF %ERRORLEVEL% EQU 0 (
  1690. SET "homeNCSIMsg=Disable NCSI Active Probing (Legacy)"
  1691. SET "homeNCSILoc=NCSI-DISABLE"
  1692. ) ELSE (
  1693. SET "homeNCSIMsg=Enable NCSI Active Probing (Legacy)"
  1694. SET "homeNCSILoc=NCSI-ENABLE"
  1695. )
  1696. SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel'"
  1697. IF EXIST "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel\nvcplui.exe" (
  1698. SET "homeNVCPLoc=NVCP-UNINSTALL"
  1699. SET "homeNVCPMsg=Write-Host ' [9] Uninstall NVIDIA Control Panel'"
  1700. ) ELSE (
  1701. SET "homeNVCPLoc=NVCP-INSTALL"
  1702. WMIC path win32_VideoController get name | FINDSTR "NVIDIA GeForce GTX RTX" > NUL 2>&1
  1703. IF ERRORLEVEL 1 (
  1704. CALL :MO-CHOICE -DelChoice 9
  1705. SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [No NVIDIA GPU]' -ForegroundColor Red"
  1706. ) ELSE (
  1707. SC query "NVDisplay.ContainerLocalSystem" > NUL 2>&1
  1708. IF ERRORLEVEL 1 (
  1709. CALL :MO-CHOICE -DelChoice 9
  1710. SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [No NVIDIA Driver]' -ForegroundColor Red"
  1711. ) ELSE (
  1712. IF EXIST "%SYSTEMDRIVE%\Program Files\WindowsApps" (
  1713. DIR /A:d /B "%SYSTEMDRIVE%\Program Files\WindowsApps" | FINDSTR /c:"NVIDIACorp.NVIDIAControlPanel" > NUL 2>&1
  1714. IF NOT ERRORLEVEL 1 (
  1715. FOR /F "usebackq delims=" %%A IN (`DIR /A:d /B "%SYSTEMDRIVE%\Program Files\WindowsApps" ^| FINDSTR /c:"NVIDIACorp.NVIDIAControlPanel"`) DO (
  1716. DIR /B "%SYSTEMDRIVE%\Program Files\WindowsApps\%%A" | FINDSTR /i /x /c:"nvcplui.exe" > NUL 2>&1
  1717. IF ERRORLEVEL 1 (
  1718. CURL store.rg-adguard.net 2>&1 | FINDSTR /I /c:"Cloudflare Ray ID" > NUL 2>&1
  1719. IF NOT ERRORLEVEL 1 CALL :MO-CHOICE -DelChoice 9 & SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Server Unavailable]' -ForegroundColor Red"
  1720. )
  1721. )
  1722. ) ELSE (
  1723. CURL store.rg-adguard.net 2>&1 | FINDSTR /I /c:"Cloudflare Ray ID" > NUL 2>&1
  1724. IF NOT ERRORLEVEL 1 CALL :MO-CHOICE -DelChoice 9 & SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Server Unavailable]' -ForegroundColor Red"
  1725. )
  1726. )
  1727. )
  1728. )
  1729. )
  1730. CMD /C WSL --help 2>&1 | FINDSTR /I /R /c:"-.-.i.n.s.t.a.l.l.*<.O.p.t.i.o.n.s.>" > NUL 2>&1
  1731. IF %ERRORLEVEL% EQU 0 (
  1732. CALL :MO-CHOICE -DelChoice 1
  1733. SET "homeExtWSLMsg="""" -ForegroundColor DarkGray -NoNewLine; Write-Host ' [Not Supported]' -ForegroundColor Red -NoNewLine; Write-Host """""
  1734. ) ELSE (
  1735. SET "homeExtWSLMsg="
  1736. )
  1737. EXIT /B 0
  1738. REM -----------------------------------------------------------
  1739. REM -----------------------------------------------------------
  1740. :MO-LANGUAGE
  1741. REM NULL
  1742. EXIT /B 0
  1743. REM -----------------------------------------------------------
  1744. REM -----------------------------------------------------------
  1745. :MO-WSL
  1746. SET "wslUnattend="
  1747. SET "homeWSLChPos=16"
  1748. SET "homeWSLStatus=`n"
  1749. DISM /Online /Get-FeatureInfo:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /x /c:"State : Enabled" > NUL 2>&1
  1750. IF %ERRORLEVEL% NEQ 0 (
  1751. SET "homeWSLMsg=Enable WSL"
  1752. SET "homeWSLLoc=WSL-ENABLE"
  1753. ) ELSE (
  1754. SET "homeWSLMsg=Disable WSL"
  1755. SET "homeWSLLoc=WSL-DISABLE"
  1756. WHERE WSL.exe > NUL 2>&1
  1757. IF ERRORLEVEL 1 (
  1758. SET "homeWSLStatus=""""; Write-Host """"`n$(' '.padleft('18', ' '))A restart is required for WSL functionality."""" -ForegroundColor Red -NoNewLine; Write-Host """""
  1759. SET "homeWSLChPos=17"
  1760. )
  1761. )
  1762. WHERE WSL.exe > NUL 2>&1
  1763. IF %ERRORLEVEL% NEQ 0 (
  1764. CALL :MO-CHOICE -DelChoice 2
  1765. CALL :MO-CHOICE -DelChoice 3
  1766. SET "homeWSLDistroMsgs=""""; Write-Host """"$(' '.padleft('17', ' '))[2] Install WSL Distro`n$(' '.padleft('17', ' '))[3] Remove WSL Distro`n"""" -ForegroundColor DarkGray; Write-Host """"$(' '.padleft('17', ' '))[U] Unattended Distro Install [Disabled]"""" -NoNewLine; Write-Host """" "
  1767. ) ELSE (
  1768. CALL :MO-CHOICE -DelChoice U
  1769. SET "homeWSLDistroMsgs=`n$(' '.padleft('17', ' '))[2] Install WSL Distro`n$(' '.padleft('17', ' '))[3] Remove WSL Distro`n"
  1770. )
  1771. EXIT /B 0
  1772. REM -----------------------------------------------------------
  1773. REM -----------------------------------------------------------
  1774. :MO-LIMMAINMENU
  1775. CALL :AUX-ELEVATIONCHECK
  1776. IF %ERRORLEVEL% EQU 0 (
  1777. SET "homeElevMsg=De-elevate User"
  1778. ) ELSE (
  1779. SET "homeElevMsg=Elevate User to Administrator"
  1780. )
  1781. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername 2>&1 | FINDSTR /R /X /C:".*dontdisplaylastusername[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1782. IF %ERRORLEVEL% EQU 0 (
  1783. SET "homeNUMsg=Disable Username Login Requirement"
  1784. ) ELSE (
  1785. SET "homeNUMsg=Enable Username Login Requirement"
  1786. )
  1787. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUsername" 2>&1 | FINDSTR /c:"%currentUsername%" > NUL 2>&1
  1788. IF %ERRORLEVEL% EQU 0 (
  1789. REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" 2>&1 | FINDSTR /R /X /C:".*AutoAdminLogon[ ].*REG_SZ.*[ ]1" > NUL 2>&1
  1790. IF NOT ERRORLEVEL 1 (
  1791. SET "homeALMsg=Disable AutoLogon"
  1792. ) ELSE (
  1793. SET "homeALMsg=Enable AutoLogon"
  1794. )
  1795. ) ELSE (
  1796. SET "homeALMsg=Enable AutoLogon"
  1797. )
  1798. EXIT /B 0
  1799. REM -----------------------------------------------------------
  1800. REM -----------------------------------------------------------
  1801. :MO-LIMEXTRA
  1802. REG QUERY "HKU\%userSID%\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v ToastEnabled 2>&1 | FINDSTR /R /X /C:".*ToastEnabled[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1803. IF %ERRORLEVEL% EQU 0 (
  1804. SET "homeNOTIFMsg=Disable Desktop Notifications"
  1805. SET "homeNOTIFLoc=NOTIF-DISABLE"
  1806. ) ELSE (
  1807. SET "homeNOTIFMsg=Enable Desktop Notifications"
  1808. SET "homeNOTIFLoc=NOTIF-ENABLE"
  1809. )
  1810. REG QUERY "HKU\%userSID%\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v DisableNotificationCenter 2>&1| FINDSTR /R /X /C:".*DisableNotificationCenter[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1811. IF %ERRORLEVEL% EQU 0 (
  1812. SET "homeNOTIFCENMsg=Enable Notification Center"
  1813. ) ELSE (
  1814. SET "homeNOTIFCENMsg=Disable Notification Center"
  1815. )
  1816. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v HibernateEnabled 2>&1 | FINDSTR /R /X /C:".*HibernateEnabled[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1817. IF %ERRORLEVEL% EQU 0 (
  1818. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v HiberFileType 2>&1 | FINDSTR /R /X /C:".*HiberFileType[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1819. IF NOT ERRORLEVEL 1 (
  1820. SET "homeHIBMsg=Disable Hibernation"
  1821. ) ELSE (
  1822. SET "homeHIBMsg=Enable Hibernation"
  1823. )
  1824. ) ELSE (
  1825. SET "homeHIBMsg=Enable Hibernation"
  1826. )
  1827. REG QUERY "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x0" > NUL 2>&1
  1828. IF %ERRORLEVEL% EQU 0 (
  1829. REG QUERY "HKEY_USERS\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1830. IF ERRORLEVEL 1 (
  1831. SET "homeWSHMsg=Enable Windows Script Host [WSH] (Legacy)"
  1832. ) ELSE (
  1833. SET "homeWSHMsg=Disable Windows Script Host [WSH] (Legacy)"
  1834. )
  1835. ) ELSE (
  1836. REG QUERY "HKEY_USERS\%userSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled 2>&1 | FINDSTR /R /X /C:".*Enabled[ ].*REG_DWORD[ ].*0x0" > NUL 2>&1
  1837. IF NOT ERRORLEVEL 1 (
  1838. SET "homeWSHMsg=Enable Windows Script Host [WSH] (Legacy)"
  1839. ) ELSE (
  1840. SET "homeWSHMsg=Disable Windows Script Host [WSH] (Legacy)"
  1841. )
  1842. )
  1843. ASSOC .vbs 2>&1| FINDSTR /I /X /c:".vbs=VBSFile" > NUL 2>&1
  1844. IF %ERRORLEVEL% EQU 0 (
  1845. SET "homeVBSMsg=Disable Visual Basic Script [VBS] (Legacy)"
  1846. SET "homeVBSLoc=VBS-DISABLE"
  1847. ) ELSE (
  1848. SET "homeVBSMsg=Enable Visual Basic Script [VBS] (Legacy)"
  1849. SET "homeVBSLoc=VBS-ENABLE"
  1850. )
  1851. REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing 2>&1 | FINDSTR /R /X /C:".*EnableActiveProbing[ ].*REG_DWORD[ ].*0x1" > NUL 2>&1
  1852. IF %ERRORLEVEL% EQU 0 (
  1853. SET "homeNCSIMsg=Disable NCSI Active Probing (Legacy)"
  1854. ) ELSE (
  1855. SET "homeNCSIMsg=Enable NCSI Active Probing (Legacy)"
  1856. )
  1857. SET "homeNVCPMsg=Write-Host ' [9] Install NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red"
  1858. IF EXIST "%SYSTEMDRIVE%\Program Files\NVIDIA Control Panel\nvcplui.exe" (
  1859. SET "homeNVCPMsg=Write-Host ' [9] Uninstall NVIDIA Control Panel' -NoNewLine -ForegroundColor DarkGray; Write-Host ' [Admin Required]' -ForegroundColor Red"
  1860. )
  1861. CMD /C WSL --help 2>&1 | FINDSTR /I /R /c:"-.-.i.n.s.t.a.l.l.*<.O.p.t.i.o.n.s.>" > NUL 2>&1
  1862. IF %ERRORLEVEL% EQU 0 (
  1863. SET "homeExtWSLMsg= -ForegroundColor DarkGray -NoNewLine; Write-Host ' [Not Supported]' -ForegroundColor Red"
  1864. ) ELSE (
  1865. SET "homeExtWSLMsg="
  1866. )
  1867. EXIT /B 0
  1868. REM -----------------------------------------------------------
  1869. REM -----------------------------------------------------------
  1870. :MO-LIMLANGUAGE
  1871. REM NULL
  1872. EXIT /B 0
  1873. REM -----------------------------------------------------------
  1874. REM -----------------------------------------------------------
  1875. :MO-LIMWSL
  1876. WHERE WSL.exe > NUL 2>&1
  1877. IF %ERRORLEVEL% NEQ 0 (
  1878. SET "homeWSLMsg=Enable WSL"
  1879. ) ELSE (
  1880. SET "homeWSLMsg=Disable WSL"
  1881. )
  1882. SET "homeLIMWSLCh=230X"
  1883. WHERE WSL.exe > NUL 2>&1
  1884. IF %ERRORLEVEL% NEQ 0 (
  1885. CALL :MO-CHOICE -DelChoice 2
  1886. CALL :MO-CHOICE -DelChoice 3
  1887. SET "homeWSLDistroMsgs=$(' '.padleft(17, ' '))[2] Install WSL Distro`n$(' '.padleft(17, ' '))[3] Remove WSL Distro`n`n$(' '.padleft(17, ' '))[U] Unattended Distro Install"""" -ForegroundColor DarkGray -NoNewLine; Write-Host ' [Admin Required]' -ForegroundColor Red -NoNewLine; Write-Host """""
  1888. ) ELSE (
  1889. SET "homeWSLDistroMsgs=$(' '.padleft(17, ' '))[2] Install WSL Distro`n$(' '.padleft(17, ' '))[3] Remove WSL Distro`n"
  1890. )
  1891. EXIT /B 0
  1892. REM -----------------------------------------------------------
  1893. :MO-CHOICE
  1894. IF "%~1"=="-InitChoices" CALL :INTERNAL-MO_CHOICE-InitChoices "%~2" "%~3"
  1895. IF "%~1"=="-DelChoice" CALL :INTERNAL-MO_CHOICE-DelChoice "%~2"
  1896. IF "%~1"=="-StartChoices" CALL :INTERNAL-MO_CHOICE-StartChoices "%~2"
  1897. EXIT /B 0
  1898. :INTERNAL-MO_CHOICE-InitChoices
  1899. SET "moChoices=%~1"
  1900. FOR /F "usebackq tokens=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 delims=+" %%A IN (`ECHO "%~2"`) DO SET "MOCHI1=%%A" & SET "MOCHI2=%%B" & SET "MOCHI3=%%C" & SET "MOCHI4=%%D" & SET "MOCHI5=%%E" & SET "MOCHI6=%%F" & SET "MOCHI7=%%G" & SET "MOCHI8=%%H" & SET "MOCHI9=%%I" & SET "MOCHI10=%%J" & SET "MOCHI11=%%K" & SET "MOCHI12=%%L" & SET "MOCHI13=%%M" & SET "MOCHI14=%%N" & SET "MOCHI15=%%O" & SET "MOCHI16=%%P"
  1901. EXIT /B 0
  1902. :INTERNAL-MO_CHOICE-DelChoice
  1903. FOR /F "usebackq tokens=1,2 delims=%~1" %%A IN (`ECHO %moChoices%`) DO (
  1904. SET "moChoices=%%A%%B"
  1905. IF NOT "%%B"=="" (
  1906. CALL :AUX-LENGTHFETCH "%%A:"
  1907. ) ELSE (
  1908. IF "%moChoices:~0,1%"=="%~1" (
  1909. SET "chRemove=1"
  1910. ) ELSE (
  1911. CALL :AUX-LENGTHFETCH "%%A:"
  1912. )
  1913. )
  1914. )
  1915. IF NOT "%chRemove%"=="1" SET "chRemove=%lenOut%"
  1916. SET /A "chShift=%chRemove%+1"
  1917. CALL SET "MOCHI%chRemove%=%%MOCHI%chShift%%%"
  1918. SET /A "chShiftAlt=%chShift%+1"
  1919. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1920. SET /A "chShift=%chShiftAlt%+1"
  1921. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1922. SET /A "chShiftAlt=%chShift%+1"
  1923. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1924. SET /A "chShift=%chShiftAlt%+1"
  1925. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1926. SET /A "chShiftAlt=%chShift%+1"
  1927. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1928. SET /A "chShift=%chShiftAlt%+1"
  1929. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1930. SET /A "chShiftAlt=%chShift%+1"
  1931. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1932. SET /A "chShift=%chShiftAlt%+1"
  1933. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1934. SET /A "chShiftAlt=%chShift%+1"
  1935. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1936. SET /A "chShift=%chShiftAlt%+1"
  1937. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1938. SET /A "chShiftAlt=%chShift%+1"
  1939. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1940. SET /A "chShift=%chShiftAlt%+1"
  1941. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1942. SET /A "chShiftAlt=%chShift%+1"
  1943. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1944. SET /A "chShift=%chShiftAlt%+1"
  1945. CALL SET "MOCHI%chShiftAlt%=%%MOCHI%chShift%%%"
  1946. SET /A "chShiftAlt=%chShift%+1"
  1947. CALL SET "MOCHI%chShift%=%%MOCHI%chShiftAlt%%%"
  1948. EXIT /B 0
  1949. :INTERNAL-MO_CHOICE-StartChoices
  1950. SETLOCAL ENABLEDELAYEDEXPANSION
  1951. POWERSHELL -NoP -C "Write-Host """"%~1`n$(' '.padleft(11, ' '))__________________________________________________________`n`n$(' '.padleft(11, ' '))Choose a menu option: """" -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C %moChoices% /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  1952. CALL SET "moChoice=%%MOCHI%ERRORLEVEL%%%"
  1953. SET "moChoice=%moChoice:|=^|%"
  1954. ENDLOCAL & (GOTO) 2>NUL & (GOTO) 2>NUL & %moChoice:""="%
  1955. REM -----------------------------------------------------------
  1956. REM ----------------
  1957. REM Script Functions
  1958. REM ----------------
  1959. REM -----------------------------------------------------------
  1960. :AUX-RETURN
  1961. SETLOCAL
  1962. IF /I "%~3"=="-C" (
  1963. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1964. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  1965. ) ELSE (
  1966. IF /I "%~4"=="-C" (
  1967. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1968. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  1969. ) ELSE (
  1970. IF /I "%~5"=="-C" (
  1971. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1972. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  1973. ) ELSE (
  1974. IF /I "%~6"=="-C" (
  1975. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1976. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  1977. ) ELSE (
  1978. IF /I "%~7"=="-C" (
  1979. DEL /Q /F "%TEMP%\[amecs]*%rndOut%.*" > NUL 2>&1
  1980. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  1981. )
  1982. )
  1983. )
  1984. )
  1985. )
  1986. CALL :AUX-CENTERTEXT "%~1"
  1987. SET "returnOutComm=%cenout%"
  1988. IF /I "%~3"=="-E" (
  1989. SET "errorColor= -ForegroundColor Red"
  1990. ) ELSE (
  1991. IF /I "%~4"=="-E" (
  1992. SET "errorColor= -ForegroundColor Red"
  1993. ) ELSE (
  1994. IF /I "%~5"=="-E" (
  1995. SET "errorColor= -ForegroundColor Red"
  1996. ) ELSE (
  1997. IF /I "%~6"=="-E" (
  1998. SET "errorColor= -ForegroundColor Red"
  1999. ) ELSE (
  2000. IF /I "%~7"=="-E" (
  2001. SET "errorColor= -ForegroundColor Red"
  2002. ) ELSE (
  2003. SET "errorColor="
  2004. )
  2005. )
  2006. )
  2007. )
  2008. )
  2009. SET "cenOut="
  2010. IF /I "%~3"=="-L" (
  2011. CALL :AUX-CENTERTEXT "%~4"
  2012. ) ELSE (
  2013. IF /I "%~4"=="-L" (
  2014. CALL :AUX-CENTERTEXT "%~5"
  2015. ) ELSE (
  2016. IF /I "%~5"=="-L" (
  2017. CALL :AUX-CENTERTEXT "%~6"
  2018. ) ELSE (
  2019. IF /I "%~6"=="-L" (
  2020. CALL :AUX-CENTERTEXT "%~7"
  2021. ) ELSE (
  2022. IF /I "%~7"=="-L" (
  2023. CALL :AUX-CENTERTEXT "%~8"
  2024. )
  2025. )
  2026. )
  2027. )
  2028. )
  2029. IF "%cenOut%"=="" (
  2030. SET "returnMsg=Write-Host """`n"""; Write-Host '%returnOutComm%'%errorColor%; Write-Host """ __________________________________________________________`n"""; "
  2031. ) ELSE (
  2032. SET "returnMsg=Write-Host """`n"""; Write-Host '%returnOutComm%'%errorColor%; Write-Host '%cenOut%'%errorColor%; Write-Host """ __________________________________________________________`n"""; "
  2033. )
  2034. IF /I "%~d3"=="R:" (
  2035. POWERSHELL -NoP -C "%returnMsg%Write-Host """ Would you like to $^('%~x3'.replace^('.'^, ''^).replace('-',' '^)^) now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2036. IF ERRORLEVEL 2 SHUTDOWN -%~n3 & EXIT 0
  2037. ) ELSE (
  2038. IF /I "%~d4"=="R:" (
  2039. POWERSHELL -NoP -C "%returnMsg%Write-Host """ Would you like to $^('%~x4'.replace^('.'^, ''^).replace('-',' '^)^) now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2040. IF ERRORLEVEL 2 SHUTDOWN -%~n4 & EXIT 0
  2041. ) ELSE (
  2042. IF /I "%~d5"=="R:" (
  2043. POWERSHELL -NoP -C "%returnMsg%Write-Host """ Would you like to $^('%~x5'.replace^('.'^, ''^).replace('-',' '^)^) now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2044. IF ERRORLEVEL 2 SHUTDOWN -%~n5 & EXIT 0
  2045. ) ELSE (
  2046. IF /I "%~d6"=="R:" (
  2047. POWERSHELL -NoP -C "%returnMsg%Write-Host """ Would you like to $^('%~x6'.replace^('.'^, ''^).replace('-',' '^)^) now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2048. IF ERRORLEVEL 2 SHUTDOWN -%~n6 & EXIT 0
  2049. ) ELSE (
  2050. IF /I "%~d7"=="R:" (
  2051. POWERSHELL -NoP -C "%returnMsg%Write-Host """ Would you like to $^('%~x7'.replace^('.'^, ''^).replace('-',' '^)^) now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2052. IF ERRORLEVEL 2 SHUTDOWN -%~n7 & EXIT 0
  2053. ) ELSE (
  2054. POWERSHELL -NoP -C "%returnMsg%Write-Host -NoNewLine ' Press any key to return to the Menu: '; [Console]::CursorVisible = $True; $NULL = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); [Console]::CursorVisible = $False"
  2055. )
  2056. )
  2057. )
  2058. )
  2059. )
  2060. IF "%wslUnattendRun%"=="true" (
  2061. SET "wslUnattendRun=false"
  2062. IF "%adminPrivs%"=="false" (
  2063. POWERSHELL -NoP -C "Start-Process '%scriptPath:'=''%' -Verb RunAs" > NUL 2>&1
  2064. IF ERRORLEVEL 1 (
  2065. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^|
  2066. POWERSHELL -NoP -C "Write-Host """`n`n`n Elevation canceled, run with limited functionality?`n [Y] [N]`n __________________________________________________________`n`n Choose an option: """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2067. IF ERRORLEVEL 2 (
  2068. EXIT 0
  2069. )
  2070. ) ELSE (
  2071. EXIT 0
  2072. )
  2073. )
  2074. )
  2075. IF /I "%~2"=="-H" (
  2076. ENDLOCAL & (GOTO) 2>NUL & ENDLOCAL & GOTO HOME-MAINMENU
  2077. ) ELSE (
  2078. IF "%~2"=="-HNR" (
  2079. ENDLOCAL & (GOTO) 2>NUL & GOTO HOME-MAINMENU
  2080. ) ELSE (
  2081. ENDLOCAL & (GOTO) 2>NUL & ENDLOCAL & GOTO %~2
  2082. )
  2083. )
  2084. REM -----------------------------------------------------------
  2085. :AUX-CENTERTEXT
  2086. SETLOCAL
  2087. SET "spaces= "
  2088. SET "cenSize=58"
  2089. SET /A "LEN=0"
  2090. CALL :AUX-LENGTHFETCH "%~1"
  2091. IF NOT "%~2"=="" (
  2092. IF %lenOut% GEQ 59 ENDLOCAL & ENDLOCAL & SET "cenOut= Output Error" & EXIT /B 0
  2093. ) ELSE (
  2094. IF %lenOut% GEQ 59 CALL :AUX-LENGTHFETCH "%~2"
  2095. )
  2096. IF %lenOut% GEQ 59 ENDLOCAL & ENDLOCAL & SET "cenOut= Output Error" & EXIT /B 0
  2097. SET /A "oddCheck=%lenOut% %% 2"
  2098. IF "%oddCheck%"=="0" (SET "space=") ELSE (SET "space= ")
  2099. IF "%lenOut%"=="58" SET "space="
  2100. SET /A "pref_len=%cenSize%-%lenOut%" & SET /A "pref_len/=2"
  2101. CALL SET "cenOut=%space% %%spaces:~0,%pref_len%%%%~1"
  2102. ENDLOCAL & SET "cenOut=%cenOut%"
  2103. EXIT /B 0
  2104. REM -----------------------------------------------------------
  2105. REM -----------------------------------------------------------
  2106. :AUX-GETUSERNAME
  2107. REM Grabs current username. %username% can be problematic and %userprofile%
  2108. REM is hard to filter properly, thus why this method is used.
  2109. FOR /F "usebackq tokens=1,* delims=\" %%A IN (`WMIC computersystem get username ^| FINDSTR /c:"\\"`) DO SET "currentUsername=%%B"
  2110. SET "currentUsername=%currentUsername:~0,-3%"
  2111. REM Detection for if user changed their username without restarting
  2112. IF "%currentUsername%"=="~0,-3" SET "currentUsername=RestartRequired"
  2113. SET "possibleUserDir=%currentUsername%"
  2114. EXIT /B 0
  2115. REM -----------------------------------------------------------
  2116. REM -----------------------------------------------------------
  2117. :AUX-GETUSERENV
  2118. FOR /F "usebackq tokens=2,* delims= " %%A IN (`REG QUERY "HKU\%userSID%\Volatile Environment" /v "APPDATA" 2^>^&1 ^| FINDSTR /R /X /C:".*APPDATA[ ]*REG_SZ[ ].*"`) DO SET "userAppData=%%B"
  2119. FOR /F "usebackq tokens=2,* delims= " %%A IN (`REG QUERY "HKU\%userSID%\Volatile Environment" /v "LOCALAPPDATA" 2^>^&1 ^| FINDSTR /R /X /C:".*LOCALAPPDATA[ ]*REG_SZ[ ].*"`) DO SET "userLocalAppData=%%B"
  2120. FOR /F "usebackq tokens=2,* delims= " %%A IN (`REG QUERY "HKU\%userSID%\Environment" /v "TEMP" 2^>^&1 ^| FINDSTR /R /X /C:".*TEMP[ ]*REG_EXPAND_SZ[ ].*"`) DO SET "userTemp=%%B"
  2121. FOR /F "usebackq tokens=2,* delims= " %%A IN (`REG QUERY "HKU\%userSID%\Volatile Environment" /v "USERPROFILE" 2^>^&1 ^| FINDSTR /R /X /C:".*USERPROFILE[ ]*REG_SZ[ ].*"`) DO SET "userUserProfile=%%B"
  2122. SET "userUserProfileTmp=%userUserProfile:!=:AINV:%"
  2123. SETLOCAL ENABLEDELAYEDEXPANSION
  2124. SET "userTemp=!userTemp:%%USERPROFILE%%=%userUserProfileTmp%!"
  2125. ENDLOCAL & SET "userTemp=%userTemp::AINV:=!%"
  2126. EXIT /B 0
  2127. REM -----------------------------------------------------------
  2128. REM -----------------------------------------------------------
  2129. :AUX-ELEVATIONCHECK
  2130. IF "%currentUsername%"=="RestartRequired" SET "userStatus=Unknown" & SET "userRestart=true" & EXIT /B 0
  2131. NET user "%currentUsername%" /y | FINDSTR /R /X /C:".*[ ][ ][ ][ ][ ][ ]\*Administrators[ ][ ][ ][ ][ ][ ][ ].*" > NUL 2>&1
  2132. IF %ERRORLEVEL% NEQ 0 (
  2133. SET "userStatus=Not Elevated" & EXIT /B 1
  2134. ) ELSE (
  2135. SET "userStatus=Elevated" & EXIT /B 0
  2136. )
  2137. REM -----------------------------------------------------------
  2138. REM -----------------------------------------------------------
  2139. :AUX-NETWORKCHECK
  2140. IF NOT "%firstLoop%"=="true" SETLOCAL & SET "firstLoop=true" & SET /A "count=0"
  2141. IF %count% GTR 8 EXIT /B 1
  2142. PING -n 1 archlinux.org -w 20000 > NUL 2>&1
  2143. IF %ERRORLEVEL% GTR 0 (
  2144. PING -n 1 wikipedia.org -w 20000 > NUL 2>&1
  2145. IF ERRORLEVEL 1 (
  2146. PING -n 1 github.com -w 20000 > NUL 2>&1
  2147. IF ERRORLEVEL 1 (
  2148. IF /I "%~1"=="-L" SET /A "count=%count%+1" & TIMEOUT /T 3 /NOBREAK>NUL 2>&1 & GOTO :AUX-NETWORKCHECK
  2149. ENDLOCAL & EXIT /B 1
  2150. )
  2151. )
  2152. )
  2153. ENDLOCAL & EXIT /B 0
  2154. REM -----------------------------------------------------------
  2155. REM -----------------------------------------------------------
  2156. :AUX-BACKLINE
  2157. POWERSHELL -NoP -C "$posY = $host.UI.RawUI.CursorPosition.Y; $origPosY = $posY - 1; [Console]::SetCursorPosition(%~1,$origPosY); Write-Host """None`r""" -ForegroundColor DarkGray"
  2158. EXIT /B 0
  2159. REM -----------------------------------------------------------
  2160. REM -----------------------------------------------------------
  2161. :AUX-INPUTLOOP
  2162. SET "lenOut="
  2163. IF NOT "%firstLoop%"=="false" (
  2164. SETLOCAL
  2165. SET /A "count=%~3"
  2166. SET /A "countAdd=0"
  2167. SET "input=%inpTextOut%"
  2168. SET "varSet=%~1"
  2169. SET "prompt=%~2"
  2170. CALL :AUX-LENGTHFETCH "%~2"
  2171. SET "filter=%~4"
  2172. SET "firstLoop=false"
  2173. SET "tmpRND=%rndOut%"
  2174. CALL :AUX-GENRND "15"
  2175. )
  2176. IF NOT "%lenOut%"=="" (
  2177. SET /A "promptLen=%lenOut%+2"
  2178. SET "inpOutFile=%rndOut%"
  2179. SET "rndOut=%tmpRND%"
  2180. )
  2181. SET "input=%input::AINV:=''''%"
  2182. IF %count% GEQ 12 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO.%input::QUOTE:="%%relayMsg% & SET /A "count=2+%countAdd%"
  2183. SET /A "countAdd=0"
  2184. SET /A "count=%count%+2"
  2185. SET "relayMsg="
  2186. SET "tmpVar="
  2187. SET "tmpVarDec="
  2188. IF "%~5"=="-Secure" (
  2189. POWERSHELL -NoP -C "Write-Host """`n %prompt%: """ -NoNewLine; [Console]::CursorVisible = $True; $SecIn = Read-Host -AsSecureString; [Console]::CursorVisible = $False; $SecConv = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecIn); [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($SecConv) | Out-File '%TEMP%\%inpOutFile%' -Encoding default" & SET /P "tmpVar=" < "%TEMP%\%inpOutFile%"
  2190. ) ELSE (
  2191. POWERSHELL -NoP -C "Write-Host """`n %prompt%: """ -NoNewLine; [Console]::CursorVisible = $True; Read-Host | Out-File '%TEMP%\%inpOutFile%' -Encoding default; [Console]::CursorVisible = $False" & SET /P "tmpVar=" < "%TEMP%\%inpOutFile%"
  2192. )
  2193. DEL /Q /F "%TEMP%\%rndOut%" > NUL 2>&1
  2194. SET "tmpVar=%tmpVar:"=:AINV:%"
  2195. SET "tmpVar=%tmpVar:"=:AINV:%"
  2196. IF "%tmpVar%"==":AINV:=:AINV:" SET "tmpVar="
  2197. CALL :AUX-LENGTHFETCH "%tmpVar%"
  2198. SET /A "lineLen=%lenOut%+%promptLen%"
  2199. IF %lineLen% GEQ 69 SET /A "count=%count%+1" & SET /A "countAdd=%countAdd%+1"
  2200. SET /A "extLen=%lineLen%-69"
  2201. SET /A "extLenDiv=%extLen%/80"
  2202. IF NOT "%extLen:~0,1%"=="-" SET /A "count=%count%+%extLenDiv%+1" & SET /A "countAdd=%countAdd%+1"
  2203. SET /A "inSpace=69-%promptLen%"
  2204. IF %lenOut% GTR %inSpace% SET "tmpVarDec=..." & SET /A "inSpace=%inSpace%-4"
  2205. IF %count% GEQ 11 (
  2206. SET "cancelOut= > NUL"
  2207. ) ELSE (
  2208. SET "cancelOut="
  2209. )
  2210. CALL :FILTERCALL-%filter%
  2211. IF %ERRORLEVEL% EQU 5 (
  2212. ENDLOCAL & SET "inpLenOut=%count%" & SET "inpTextOut=%input%" & SET "%varSet%=:None:" & EXIT /B 5
  2213. )
  2214. IF %ERRORLEVEL% EQU 3 (
  2215. ENDLOCAL & EXIT /B 3
  2216. )
  2217. IF %ERRORLEVEL% EQU 1 (
  2218. SET /A "count=%count%+1"
  2219. SET /A "countAdd=%countAdd%+1"
  2220. ECHO %relayMsg:~8%%cancelOut%
  2221. GOTO :AUX-INPUTLOOP
  2222. ) ELSE (
  2223. ENDLOCAL & SET "inpLenOut=%count%" & SET "inpTextOut=%input%" & SET "%varSet%=%tmpVar%"
  2224. EXIT /B 0
  2225. )
  2226. REM -----------------------------------------------------------
  2227. REM -----------------------------------------------------------
  2228. :AUX-LENGTHFETCH
  2229. SET "auxLenStr=%~1"
  2230. IF "%auxLenStr%"=="" SET "lenOut=0" & SET "lenAstOut=" & EXIT /B 0
  2231. SET "auxLenStr=%auxLenStr::AINV:=.%"
  2232. IF /I "%~2"=="-L" (
  2233. SET "auxLenStr=%auxLenStr:\\=.%"
  2234. ) ELSE (
  2235. IF /I "%~3"=="-L" SET "auxLenStr=%auxLenStr:\\=.%"
  2236. )
  2237. SET /A "auxLen=0"
  2238. SET "auxAsterisks=****************************************************************************************************"
  2239. FOR /F "usebackq delims=" %%A IN (`POWERSHELL -NoP -C "'%auxLenStr:'=''%'.Length"`) DO SET "auxLen=%%A"
  2240. SET /A "auxLenRem=%auxLen%%%100"
  2241. SET /A "auxAstDiv=%auxLen%/100"
  2242. CALL SET "auxLenAst=%%auxAsterisks:~0,%auxLenRem%%%"
  2243. :LENGTHFETCH-LOOP
  2244. IF %auxAstDiv% LEQ 0 GOTO LENGTHFETCH-LOOPEND
  2245. SET /A "auxAstDiv=%auxAstDiv%-1"
  2246. CALL SET "auxLenAst=%auxLenAst%%auxAsterisks%"
  2247. GOTO :LENGTHFETCH-LOOP
  2248. :LENGTHFETCH-LOOPEND
  2249. IF /I "%~2"=="-Mask" (
  2250. ENDLOCAL & SET "lenAstOut=%auxLenAst%" & SET "lenOut=%auxLen%"
  2251. EXIT /B 0
  2252. ) ELSE (
  2253. IF /I "%~3"=="-Mask" (
  2254. ENDLOCAL & SET "lenAstOut=%auxLenAst%" & SET "lenOut=%auxLen%"
  2255. EXIT /B 0
  2256. )
  2257. )
  2258. ENDLOCAL & SET "lenOut=%auxLen%"
  2259. EXIT /B 0
  2260. REM -----------------------------------------------------------
  2261. REM -----------------------------------------------------------
  2262. :AUX-WAITLOOP
  2263. SETLOCAL
  2264. SET "arg1=%~1"
  2265. SET "arg1=%arg1:-C:=%"
  2266. IF NOT "%arg1%"=="%~1" SET "findArgs=/c:"
  2267. SET "arg1Tmp=%arg1:-X:=%"
  2268. IF NOT "%arg1%"=="%arg1Tmp%" SET "findArgs=/X /c:"
  2269. IF "%~3"=="-TME" (
  2270. SET "time=%~4"
  2271. ) ELSE (
  2272. IF "%~5"=="-TME" (
  2273. SET "time=%~6"
  2274. ) ELSE (
  2275. IF "%~7"=="-TME" (
  2276. SET "time=%~8"
  2277. ) ELSE (
  2278. SET "time=1500"
  2279. )
  2280. )
  2281. )
  2282. IF "%~3"=="-ALT" (
  2283. SET "alt=%~4"
  2284. ) ELSE (
  2285. IF "%~5"=="-ALT" (
  2286. SET "alt=%~6"
  2287. ) ELSE (
  2288. IF "%~7"=="-ALT" (
  2289. SET "alt=%~8"
  2290. ) ELSE (
  2291. SET "alt=|:AME-NULL:|"
  2292. )
  2293. )
  2294. )
  2295. :WAITLOOP-MARKER
  2296. SET /A "auxWaitCount=%auxWaitCount%+1"
  2297. IF %auxWaitCount% GTR %time% ENDLOCAL & EXIT /B 1
  2298. TIMEOUT /T 1 /NOBREAK > NUL 2>&1
  2299. IF "%~3"=="-PID" (
  2300. WMIC process where "name='cmd.exe' and ProcessId='%~4' or name='WindowsTerminal.exe' and ProcessId='%~4'" get name 2>&1 | FINDSTR /c:"No Instance(s) Available.">NUL 2>&1 && SET /A "auxWaitCount=%auxWaitCount%+500"
  2301. ) ELSE (
  2302. IF "%~5"=="-PID" (
  2303. WMIC process where "name='cmd.exe' and ProcessId='%~6' or name='WindowsTerminal.exe' and ProcessId='%~6'" get name 2>&1 | FINDSTR /c:"No Instance(s) Available.">NUL 2>&1 && SET /A "auxWaitCount=%auxWaitCount%+500"
  2304. ) ELSE (
  2305. IF "%~7"=="-PID" (
  2306. WMIC process where "name='cmd.exe' and ProcessId='%~8' or name='WindowsTerminal.exe' and ProcessId='%~8'" get name 2>&1 | FINDSTR /c:"No Instance(s) Available.">NUL 2>&1 && SET /A "auxWaitCount=%auxWaitCount%+500"
  2307. )
  2308. )
  2309. )
  2310. IF /i "%arg1:"=:AINV:%"=="-WindowTitle" (
  2311. FOR /F "usebackq tokens=2 delims= " %%A IN (`TASKLIST /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq %~2" /FO list /svc ^| FINDSTR /b /c:"PID: " ^|^| ECHO RESULT NULL`) DO (
  2312. IF NOT "%%A"=="NULL" (
  2313. ECHO "%%A" | FINDSTR "1 2 3 4 5 6 7 8 9 0">NUL 2>&1 && ENDLOCAL && SET "waitPIDOut=%%A" && EXIT /B 0
  2314. ENDLOCAL & EXIT /B 1
  2315. )
  2316. )
  2317. GOTO WAITLOOP-MARKER
  2318. )
  2319. FINDSTR /c:"%alt%" "%~2" > NUL 2>&1
  2320. IF %ERRORLEVEL% EQU 0 (
  2321. WSL -d %wslDistro% < "%TEMP%\[amecs]-WSLLin%rndOut%.txt" 2>&1 | FINDSTR /c:"|AME-WSLUSERTAKEN|" /c:"|AME-WSLGROUPTAKEN|">NUL 2>&1 && ECHO UserGroupCheck: Taken> "%TEMP%\[amecs]-WSLCom%rndOut%.txt" || ECHO UserGroupCheck: Open> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2322. )
  2323. FINDSTR %findArgs%"%arg1%" "%~2" > NUL 2>&1 && ENDLOCAL && EXIT /B 0
  2324. FINDSTR /X /c:"AME-ERROR" "%~2" > NUL 2>&1 && ENDLOCAL && EXIT /B 2
  2325. FINDSTR /X /c:"AME-ERROR1" "%~2" > NUL 2>&1 && ENDLOCAL && EXIT /B 3
  2326. FINDSTR /X /c:"AME-ERROR2" "%~2" > NUL 2>&1 && ENDLOCAL && EXIT /B 4
  2327. GOTO WAITLOOP-MARKER
  2328. REM -----------------------------------------------------------
  2329. REM -----------------------------------------------------------
  2330. :AUX-FETCHLINK
  2331. SETLOCAL
  2332. SET /A "count0=0"
  2333. CALL :AUX-NETWORKCHECK
  2334. IF %ERRORLEVEL% NEQ 0 ENDLOCAL & SET "fetchMsgOut=Internet is required for this action." & EXIT /B 5
  2335. SET "name=%~2"
  2336. PING -n 1 git.ameliorated.info -w 20000 > NUL 2>&1
  2337. IF %ERRORLEVEL% NEQ 0 (
  2338. ENDLOCAL & SET "fetchMsgOut=Link database unavailable."
  2339. EXIT /B 5
  2340. )
  2341. FOR /F "usebackq tokens=2,4,6,8,10 delims=|" %%A IN (`POWERSHELL -NoP -C "$ProgressPreference = 'SilentlyContinue'; (Invoke-WebRequest https://git.ameliorated.info/Styris/amecs/src/branch/master/links.txt -UseBasicParsing | Select-Object -Property Content).Content" ^| FINDSTR /i /c:"%name% ="`) DO (
  2342. SET "link=%%~A"
  2343. SET "arg=%%~B"
  2344. IF NOT "%%~C"=="" (
  2345. SET "alt=true"
  2346. SET "altLink=%%~C"
  2347. SET "altArg=%%~D"
  2348. SET "altName=%%~E"
  2349. )
  2350. )
  2351. :FETCHLINK-MARKER
  2352. SET "link=%link:"=:AINV:%"
  2353. SET "link=%link:"=:AINV:%"
  2354. ECHO "%link%" | FINDSTR /c:""""""" " /c:":AINV:" > NUL 2>&1
  2355. IF %ERRORLEVEL% EQU 0 ENDLOCAL & SET "fetchMsgOut=Download link is invalid." & EXIT /B 5
  2356. IF "%link%"=="REMOVED" ENDLOCAL & SET "fetchMsgOut=Download no longer available." & EXIT /B 5
  2357. ECHO "%link%" | FINDSTR /i /c:"apps.microsoft.com" > NUL 2>&1
  2358. IF %ERRORLEVEL% EQU 0 (
  2359. PING -n 1 store.rg-adguard.net -w 20000 > NUL 2>&1
  2360. IF ERRORLEVEL 1 (
  2361. ENDLOCAL & SET "fetchMsgOut=Failed to fetch download link. (2)" & EXIT /B 5
  2362. )
  2363. FOR /F usebackq^ tokens^=4^,13^ delims^=^" %%A IN (`POWERSHELL -NoP -C "$ProgressPreference = 'SilentlyContinue'; (Invoke-WebRequest -Method 'POST' -Uri 'https://store.rg-adguard.net/api/GetFiles' -Body 'type=url&url=%link%&ring=Retail' -UseBasicParsing | Select-Object -Property Content).Content" ^| FINDSTR /i "%arg%"`) DO (
  2364. SET "link=%%~A"
  2365. SET "size=%%~B"
  2366. SET "haveLink=true"
  2367. )
  2368. ) ELSE (
  2369. SET "size=%Arg%"
  2370. SET "haveLink=true"
  2371. )
  2372. IF %count0% GEQ 3 (
  2373. IF NOT "%retry1%"=="true" (
  2374. IF "%alt%"=="true" (
  2375. ECHO. & ECHO Failed to process link, trying another link...
  2376. SET "retry1=true"
  2377. SET "link=%altLink%"
  2378. SET "arg=%altArg%"
  2379. SET "name=%altName%"
  2380. GOTO FETCHLINK-MARKER
  2381. )
  2382. )
  2383. ENDLOCAL & SET "fetchMsgOut=Failed to fetch download link. (1)" & EXIT /B 5
  2384. )
  2385. IF NOT "%haveLink%"=="true" SET /A "count0=%count0%+1" & GOTO FETCHLINK-MARKER
  2386. SET "size=%size:</td></tr>=%"
  2387. SET "size=%size:>=%"
  2388. ECHO "%size%" | FINDSTR "MB KB GB">NUL 2>&1 || SET "size=0 MB"
  2389. IF NOT "%~3"=="-Download" ENDLOCAL & SET "linkOut=%link%" & SET "sizeOut=%size%" & SET "wslDistro=%name%" & EXIT /B 0
  2390. CALL :AUX-CENTERTEXT "%~5 (%size%)..."
  2391. ECHO. & ECHO %cenOut%
  2392. DEL /Q /F "%~4" > NUL 2>&1
  2393. CURL -L --progress-bar "%link%" --output "%~4"
  2394. FOR %%A IN ("%~4") DO SET "compareSize=%%~zA"
  2395. IF "%compareSize%"=="" SET "compareSize=0"
  2396. CALL :AUX-KILOBYTEFETCH "%size%" -Compare "%compareSize%"
  2397. IF %ERRORLEVEL% EQU 1 (
  2398. IF NOT "%retry2%"=="true" (
  2399. IF "%alt%"=="true" (
  2400. ECHO "%altLink%" | FINDSTR /i /c:"apps.microsoft.com" > NUL 2>&1
  2401. IF NOT ERRORLEVEL 1 (
  2402. IF NOT "%homeWSLUnavailable1%"==" :REP:" ENDLOCAL & SET "fetchMsgOut=Failed to download files. (2)" & EXIT /B 5
  2403. )
  2404. ECHO. & ECHO Download failed, trying another link...
  2405. SET "retry2=true"
  2406. SET "link=%altLink%"
  2407. SET "arg=%altArg%"
  2408. SET "name=%altName%"
  2409. SET /A "count0=0"
  2410. GOTO FETCHLINK-MARKER
  2411. )
  2412. )
  2413. DEL /Q /F "%~4" > NUL
  2414. ENDLOCAL & SET "fetchMsgOut=Failed to download files. (1)" & EXIT /B 5
  2415. )
  2416. ENDLOCAL & SET "wslDistro=%name%"
  2417. EXIT /B 0
  2418. REM -----------------------------------------------------------
  2419. REM -----------------------------------------------------------
  2420. :AUX-KILOBYTEFETCH
  2421. SETLOCAL ENABLEDELAYEDEXPANSION
  2422. SET "num1=%~1"
  2423. SET "num1=%num1: =.%"
  2424. FOR /F "usebackq delims=. tokens=1,2,3" %%A IN (`ECHO %num1%`) DO (
  2425. SET "whole=%%A"
  2426. IF "%%C"=="" (
  2427. SET "type=%%B"
  2428. ) ELSE (
  2429. CALL :AUX-LENGTHFETCH "%%B"
  2430. SET "deci=%%B"
  2431. SET "type=%%C"
  2432. )
  2433. )
  2434. IF "%type%"=="MB" SET "zeros=000"
  2435. IF "%type%"=="GB" SET "zeros=000000"
  2436. SET "add=!zeros:~%lenOut%!"
  2437. ECHO "%add%" | FINDSTR /c:"~">NUL 2>&1 && SET "add="
  2438. SET "kilobytes=%whole%%deci%%add%"
  2439. IF NOT "%~2"=="-Compare" ENDLOCAL & SET "kiloOut=%kilobytes%" & EXIT /B 0
  2440. SET /A "num1Div=%kilobytes%/10"
  2441. SET /A "num1=%kilobytes%-%num1Div%"
  2442. SET "num2=%~3"
  2443. IF "%num2%"=="" SET "num2=0"
  2444. SET "num2=%num2:~0,-3%"
  2445. IF "%num2%"=="" SET "num2=0"
  2446. IF "%num2%" LSS "%num1%" (
  2447. ENDLOCAL & EXIT /B 1
  2448. ) ELSE (
  2449. ENDLOCAL & EXIT /B 0
  2450. )
  2451. REM -----------------------------------------------------------
  2452. REM -----------------------------------------------------------
  2453. :AUX-GENRND
  2454. SETLOCAL ENABLEDELAYEDEXPANSION
  2455. :GENRND-MARKER
  2456. SET "RNDConsist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  2457. SET /A "RND=%RANDOM% %% 36"
  2458. SET "RNDResult=!RNDResult!!RNDConsist:~%RND%,1!"
  2459. IF "!RNDResult:~%~1!"=="" GOTO GENRND-MARKER
  2460. ENDLOCAL & SET "rndOut=%RNDResult%" & EXIT /B 0
  2461. REM -----------------------------------------------------------
  2462. REM -----------------------------------------------------------
  2463. :AUX-ALTSTART
  2464. SETLOCAL
  2465. SET "taskRun=%~2"
  2466. CALL :AUX-GENRND "7"
  2467. CALL SET "taskRun=%%taskRun:|Script|=%userTemp%\[amecs]-amecs%rndOut%.cmd%%"
  2468. CALL SET "taskRun=%%taskRun:|rndOut|=%rndOut%%%"
  2469. COPY /Y "%scriptPath%" "%userTemp%\[amecs]-amecs%rndOut%.cmd" > NUL
  2470. SCHTASKS /CREATE /tn "[amecs]-%~1" /tr "%taskRun%" /sc ONLOGON /ru "%currentUsername%" /it /f > NUL
  2471. IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-%~1" /F>NUL 2>&1 & EXIT /B 1
  2472. POWERSHELL -NoP -C "$TaskSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; Set-ScheduledTask -TaskName '[amecs]-%~1' -Settings $TaskSet" > NUL 2>&1
  2473. IF %ERRORLEVEL% NEQ 0 SCHTASKS /DELETE /TN "[amecs]-%~1" /F>NUL 2>&1 & EXIT /B 2
  2474. REM RUNAS will work, however it requires the user to enter a password, and won't accept a blank one. This is a lot more simple and reliable
  2475. SCHTASKS /RUN /tn "[amecs]-%~1" > NUL
  2476. SCHTASKS /DELETE /tn "[amecs]-%~1" /f > NUL 2>&1
  2477. ENDLOCAL & SET "rndOut=%rndOut%" & EXIT /B 0
  2478. REM -----------------------------------------------------------
  2479. REM ------------
  2480. REM Filter Calls
  2481. REM ------------
  2482. REM -----------------------------------------------------------
  2483. :FILTERCALL-1
  2484. REM WSL password filter
  2485. IF "%tmpVar%"=="" CALL :AUX-BACKLINE "36" && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ' -NoNewLine; Write-Host 'None' -ForegroundColor DarkGray:QUOTE:" && EXIT /B 5
  2486. CALL :AUX-LENGTHFETCH "%tmpVar%" -Mask
  2487. CALL SET "tmpVarIn=%%lenAstOut:~0,%inSpace%%%%tmpVarDec%"
  2488. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt%: %tmpVarIn:'=''%':QUOTE:"
  2489. SET "tmpVar=%tmpVar:\=\\%"
  2490. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain double quotes." && EXIT /B 1
  2491. EXIT /B 0
  2492. :FILTERCALL-2
  2493. REM WSL username filter
  2494. IF "%tmpVar%"=="" CALL :AUX-BACKLINE "36" && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ' -NoNewLine; Write-Host 'None' -ForegroundColor DarkGray:QUOTE:" && EXIT /B 5
  2495. CALL SET "tmpVarIn=%%tmpVar:~0,%inSpace%%%%tmpVarDec%"
  2496. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2497. ECHO "%tmpVar%" | FINDSTR "\\ :AINV: ( ) ~ ` ! @ # %% ^ & * + = [ ] { } : ; , . < > ' | / ?">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain special characters except '_' ^& '-'." && EXIT /B 1
  2498. ECHO "%tmpVar%" | FINDSTR "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain capital letters." && EXIT /B 1
  2499. ECHO "%tmpVar%"| FINDSTR /c:" ">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain spaces." && EXIT /B 1
  2500. CALL :AUX-LENGTHFETCH "%tmpVar%"
  2501. IF %lenOut% GEQ 32 SET "relayMsg= & ECHO Input cannot exceed 32 characters." && EXIT /B 1
  2502. ECHO "%tmpVar:~0,1%" | FINDSTR /c:"-">NUL 2>&1 && SET "relayMsg= & ECHO Input must follow the NAME_REGEX pattern." && EXIT /B 1
  2503. ECHO "%tmpVar:~0,-1%" | FINDSTR /c:"$">NUL 2>&1 && SET "relayMsg= & ECHO Input must follow the NAME_REGEX pattern." && EXIT /B 1
  2504. ECHO getent groups ^| grep "^%tmpVar%" ^|^| getent group ^| grep "^%tmpVar%:" ^&^& echo "|AME-WSLUSERTAKEN|"; getent passwd ^| grep "^%tmpVar%:" ^&^& echo "|AME-WSLGROUPTAKEN|" > "%TEMP%\[amecs]-WSLLin%rndOut%.txt"
  2505. WSL -d %wslDistro% < "%TEMP%\[amecs]-WSLLin%rndOut%.txt" 2>&1 | FINDSTR /c:"|AME-WSLUSERTAKEN|" /c:"|AME-WSLGROUPTAKEN|" > NUL 2>&1
  2506. IF %ERRORLEVEL% EQU 0 SET "relayMsg= & ECHO Username or group name already taken." && EXIT /B 1
  2507. EXIT /B 0
  2508. :FILTERCALL-3
  2509. REM WSL ALTRUN username filter
  2510. IF "%tmpVar%"=="" CALL :AUX-BACKLINE "36" && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ' -NoNewLine; Write-Host 'None' -ForegroundColor DarkGray:QUOTE:" && EXIT /B 5
  2511. CALL SET "tmpVarIn=%%tmpVar:~0,%inSpace%%%%tmpVarDec%"
  2512. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2513. ECHO "%tmpVar%" | FINDSTR "\\ :AINV: ( ) ~ ` ! @ # %% ^ & * + = [ ] { } : ; , . < > ' | / ?">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain special characters except '_' ^& '-'." && EXIT /B 1
  2514. ECHO "%tmpVar%" | FINDSTR "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain capital letters." && EXIT /B 1
  2515. ECHO "%tmpVar%"| FINDSTR /c:" ">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain spaces." && EXIT /B 1
  2516. CALL :AUX-LENGTHFETCH "%tmpVar%"
  2517. IF %lenOut% GEQ 32 SET "relayMsg= & ECHO Input cannot exceed 32 characters." && EXIT /B 1
  2518. ECHO "%tmpVar:~0,1%" | FINDSTR /c:"-">NUL 2>&1 && SET "relayMsg= & ECHO Input must follow the NAME_REGEX pattern." && EXIT /B 1
  2519. ECHO "%tmpVar:~0,-1%" | FINDSTR /c:"$">NUL 2>&1 && SET "relayMsg= & ECHO Input must follow the NAME_REGEX pattern." && EXIT /B 1
  2520. ECHO getent groups ^| grep "^%tmpVar%" ^|^| getent group ^| grep "^%tmpVar%:" ^&^& echo "|AME-WSLUSERTAKEN|"; getent passwd ^| grep "^%tmpVar%:" ^&^& echo "|AME-WSLGROUPTAKEN|" > "%userTemp%\[amecs]-WSLLin%rndOut%.txt"
  2521. ECHO AME-USERCHECK > "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2522. CALL :AUX-WAITLOOP "-C:UserGroupCheck: " "%userTemp%\[amecs]-WSLCom%rndOut%.txt" -PID "%altRunPID%" -TME "12"
  2523. IF %ERRORLEVEL% EQU 0 (
  2524. FINDSTR /c:"UserGroupCheck: Taken" "%userTemp%\[amecs]-WSLCom%rndOut%.txt">NUL 2>&1 && SET "relayMsg= & ECHO Username or group name already taken." && EXIT /B 1
  2525. ) ELSE (
  2526. ECHO WAITLOOP Error!
  2527. )
  2528. EXIT /B 0
  2529. :FILTERCALL-4
  2530. REM Windows password change filter
  2531. IF "%tmpVar%"=="" (
  2532. CALL :AUX-BACKLINE "52"
  2533. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ':QUOTE:"
  2534. NET user "%C4Username%" "%tmpVar%" /y > NUL 2>&1
  2535. IF ERRORLEVEL 1 SET "relayMsg= & ECHO Failed to change user password." && EXIT /B 1
  2536. EXIT /B 0
  2537. )
  2538. CALL :AUX-LENGTHFETCH "%tmpVar%" -Mask
  2539. CALL SET "tmpVarIn=%%lenAstOut:~0,%inSpace%%%%tmpVarDec%"
  2540. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2541. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2542. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain quotes." && EXIT /B 1
  2543. NET user "%C4Username%" "%tmpVar%" /y > NUL 2>&1
  2544. IF %ERRORLEVEL% NEQ 0 SET "relayMsg= & ECHO An error occured or the input was invalid." && EXIT /B 1
  2545. EXIT /B 0
  2546. :FILTERCALL-5
  2547. REM Windows username change filter
  2548. IF "%tmpVar%"=="" SET "relayMsg= & ECHO Input cannot be blank." && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ':QUOTE:" && EXIT /B 1
  2549. CALL SET "tmpVarIn=%%tmpVar:~0,%inSpace%%%%tmpVarDec%"
  2550. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2551. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2552. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain double quotes." && EXIT /B 1
  2553. TIMEOUT /T 1 /NOBREAK > NUL
  2554. FOR /F "usebackq tokens=3" %%A IN (`WMIC useraccount where "name='%currentUsername:'=\'%'" rename "%tmpVar%" 2^>^&1 ^| FINDSTR /c:"0;" /c:"Available." /c:"9;"`) DO SET "wmicOutput=%%A" > NUL 2>&1
  2555. IF "%wmicOutput%"=="0;" EXIT /B 0
  2556. REM This should only happen if the user changes their username AND closes/re-opens the .cmd before restarting.
  2557. IF "%wmicOutput%"=="Available." SET "relayMsg= & ECHO You must restart before changing your username again." && EXIT /B 1
  2558. IF "%wmicOutput%"=="9;" SET "relayMsg= & ECHO Invalid input." && EXIT /B 1
  2559. SET "relayMsg= & ECHO Failed to parse WMIC output."
  2560. EXIT /B 1
  2561. :FILTERCALL-6
  2562. REM Windows password filter backline
  2563. IF /I "%tmpVar%"=="" CALL :AUX-BACKLINE "52" && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ' -NoNewLine; Write-Host 'None' -ForegroundColor DarkGray:QUOTE:" && EXIT /B 0
  2564. CALL :AUX-LENGTHFETCH "%tmpVar%" -Mask
  2565. CALL SET "tmpVarIn=%%lenAstOut:~0,%inSpace%%%%tmpVarDec%"
  2566. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2567. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2568. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain quotes." && EXIT /B 1
  2569. EXIT /B 0
  2570. :FILTERCALL-7
  2571. REM Windows username add filter
  2572. IF "%tmpVar%"=="" SET "relayMsg= & ECHO Input cannot be blank." && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ':QUOTE:" && EXIT /B 1
  2573. CALL :AUX-LENGTHFETCH "%tmpVar%" -Mask
  2574. CALL SET "tmpVarIn=%%tmpVar:~0,%inSpace%%%%tmpVarDec%"
  2575. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2576. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2577. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain double quotes." && EXIT /B 1
  2578. NET user "%tmpVar%" /y > NUL 2>&1
  2579. IF %ERRORLEVEL% EQU 0 SET "relayMsg= & ECHO User already exists." & EXIT /B 1
  2580. NET user "%tmpVar%" /add /y > NUL 2>&1
  2581. IF %ERRORLEVEL% NEQ 0 SET "relayMsg= & ECHO Invalid input." && EXIT /B 1
  2582. NET user "%tmpVar%" /delete /y > NUL 2>&1
  2583. EXIT /B 0
  2584. :FILTERCALL-8
  2585. REM Windows username remove filter
  2586. IF "%tmpVar%"=="" SET "relayMsg= & ECHO Input cannot be blank." && SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ':QUOTE:" && EXIT /B 1
  2587. CALL SET "tmpVarIn=%%tmpVar:~0,%inSpace%%%%tmpVarDec%"
  2588. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2589. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2590. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain double quotes." && EXIT /B 1
  2591. NET user "%tmpVar%" /y > NUL 2>&1
  2592. IF %ERRORLEVEL% NEQ 0 SET "relayMsg= & ECHO User does not exist." & EXIT /B 1
  2593. EXIT /B 0
  2594. :FILTERCALL-9
  2595. REM User password filter
  2596. IF "%tmpVar%"=="" (
  2597. CALL :AUX-BACKLINE "59"
  2598. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: ' -NoNewLine; Write-Host 'None' -ForegroundColor DarkGray:QUOTE:"
  2599. SCHTASKS /CREATE /TN "[amecs]-USERPASSCHECK" /TR "CMD /C 'SCHTASKS /DELETE /TN '[amecs]-USERPASSCHECK' /F'" /SC ONSTART /RU "%currentUsername%" /RP "" /F<NUL 2>&1 | FINDSTR /c:"blank passwords aren't allowed" > NUL 2>&1
  2600. IF ERRORLEVEL 1 (
  2601. SCHTASKS /DELETE /TN '[amecs]-USERPASSCHECK' /F > NUL 2>&1
  2602. SET "relayMsg= & ECHO Password is invalid." & EXIT /B 1
  2603. )
  2604. EXIT /B 0
  2605. )
  2606. CALL :AUX-LENGTHFETCH "%tmpVar%" -Mask
  2607. CALL SET "tmpVarIn=%%lenAstOut:~0,%inSpace%%%%tmpVarDec%"
  2608. SET "input= & POWERSHELL -NoP -C :QUOTE:Write-Host ' %prompt:'=''%: %tmpVarIn:'=''%':QUOTE:"
  2609. IF /I "%tmpVar%"=="Cancel" EXIT /B 3
  2610. ECHO "%tmpVar%" | FINDSTR /c:":AINV:">NUL 2>&1 && SET "relayMsg= & ECHO Input cannot contain double quotes." && EXIT /B 1
  2611. SCHTASKS /CREATE /TN "[amecs]-USERPASSCHECK" /TR "CMD /C 'SCHTASKS /DELETE /TN '[amecs]-USERPASSCHECK' /F'" /SC ONSTART /RU "%currentUsername%" /RP "%tmpVar%" /F<NUL > NUL 2>&1
  2612. IF %ERRORLEVEL% NEQ 0 (
  2613. SCHTASKS /DELETE /TN "[amecs]-USERPASSCHECK" /F > NUL 2>&1
  2614. SET "relayMsg= & ECHO Password is invalid." & EXIT /B 1
  2615. )
  2616. SCHTASKS /DELETE /TN "[amecs]-USERPASSCHECK" /F > NUL 2>&1
  2617. EXIT /B 0
  2618. REM -----------------------------------------------------------
  2619. REM ------
  2620. REM ALTRUN
  2621. REM ------
  2622. REM -----------------------------------------------------------
  2623. :ALTPARENT-WSL-DISTROINSTALL
  2624. SETLOCAL
  2625. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  2626. IF "%wslUnattend%"=="true" GOTO :WSL-DISTROUNATTEND
  2627. DISM /Online /Get-FeatureInfo:Microsoft-Windows-Subsystem-Linux /English | FINDSTR /x /c:"State : Enabled" > NUL 2>&1
  2628. IF %ERRORLEVEL% NEQ 0 (
  2629. POWERSHELL -NoP -C "Write-Host """`n`n WSL is disabled.""" -ForegroundColor Red; Write-Host """ __________________________________________________________`n`n Would you like to enable it now? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2630. IF ERRORLEVEL 2 ENDLOCAL & GOTO HOME-WSL
  2631. IF ERRORLEVEL 1 ENDLOCAL & GOTO WSL-ENABLE
  2632. )
  2633. WHERE wsl.exe > NUL 2>&1
  2634. IF %ERRORLEVEL% NEQ 0 CALL :AUX-RETURN "A restart is required for WSL functionality." "HOME-WSL" -E
  2635. REM ::::::::::::::::::::::::::::P-WSL1-AR::::::::::::::::::::::::::::
  2636. ECHO. & ECHO Launching alt installer...
  2637. CALL :AUX-ALTSTART "WSLDistroInstall" "CMD /C 'START /min '' POWERSHELL -NoP -C 'Start-Process ''''|Script|'''' -ArgumentList ''''wslInstall'''',''''|rndOut|'''' -WindowStyle Hidden'"
  2638. IF %ERRORLEVEL% EQU 1 CALL :AUX-RETURN "Failed to create scheduled task. (1)" "HOME-WSL" -E -C
  2639. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Failed to create scheduled task. (2)" "HOME-WSL" -E -C
  2640. REM CALL :AUX-ALTSTART "WSLDistroInstall" "CMD /K '|Script| wslInstall |rndOut|'"
  2641. CALL :AUX-WAITLOOP -WindowTitle "AMECS-AltRun-%rndOut%" -TME "30"
  2642. IF ERRORLEVEL 1 CALL :AUX-RETURN "Failed to launch alt process." "HOME-WSL" -E -C
  2643. SET "altRunPID=%waitPIDOut%"
  2644. ECHO "Distro: |%wslDistro%|">> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2645. ECHO "PID: |%scriptPID%|">> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2646. CALL :AUX-WAITLOOP "-C:Reg: " "%userTemp%\[amecs]-WSLCom%rndOut%.txt" -PID "%altRunPID%"
  2647. IF NOT ERRORLEVEL 1 (
  2648. FINDSTR /c:"Reg: True" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" > NUL && SET "distroReg=true"
  2649. FINDSTR /c:"Reg: False" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" > NUL && SET "distroReg=false"
  2650. ) ELSE (
  2651. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2652. )
  2653. REM :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2654. DIR /B /A:d "%userLocalAppData%\AME-WSL" 2>&1 | FINDSTR /X /c:"%wslDistro%" > NUL 2>&1 && SET "distroFiles=true"
  2655. IF "%distroReg%"=="true" (
  2656. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2657. CALL :AUX-RETURN "Distro is already installed." "HOME-WSL" -C -E
  2658. ) ELSE (
  2659. IF "%distroFiles%"=="true" (
  2660. POWERSHELL -NoP -C "Write-Host """`n`n Traces of previous distro installation found.""" -ForegroundColor Red; Write-Host """ __________________________________________________________`n`n Remove installation files and reinstall distro? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C NY /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2661. IF ERRORLEVEL 2 (
  2662. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  2663. ECHO. & ECHO Removing installation files...
  2664. TIMEOUT /T 1 /NOBREAK > NUL 2>&1
  2665. FOR /F "usebackq delims=" %%A IN (`DIR /B /A:d "%userLocalAppData%\AME-WSL" 2^>^&1 ^| FINDSTR /X /c:"%wslDistro%"`) DO (
  2666. FOR /F "usebackq delims=" %%B IN (`DIR /S /B "%userLocalAppData%\AME-WSL\%%A\*.exe" 2^>^&1`) DO (
  2667. FOR /F "usebackq delims=" %%C IN (`POWERSHELL -NoP -C "Get-Process | Where-Object {$_.Path -eq '%%~B'} | Select-Object -ExpandProperty Id" 2^>^&1`) DO (
  2668. TASKKILL /F /T /PID "%%~C" > NUL 2>&1
  2669. )
  2670. )
  2671. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%%A" > NUL
  2672. )
  2673. ) ELSE (
  2674. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2675. DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*" > NUL 2>&1
  2676. ENDLOCAL & GOTO HOME-WSL
  2677. )
  2678. )
  2679. )
  2680. IF "%wslDistro%"=="Alpine" (
  2681. SET "wslLShell=/bin/ash"
  2682. SET "sudo="
  2683. ) ELSE (
  2684. SET "wslLShell=/bin/bash"
  2685. SET "sudo=sudo "
  2686. )
  2687. POWERSHELL -NoP -C "Write-Host """`n A Linux distro must be downloaded`n Continue? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2688. IF %ERRORLEVEL%==2 TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1 & DEL /Q /F "%userTemp%\[amecs]*%rndOut%.*">NUL 2>&1 & ENDLOCAL & GOTO HOME-MAINMENU
  2689. ECHO. & ECHO Fetching download link...
  2690. CALL :AUX-FETCHLINK "HOME-WSL" "%wslDistro%" -Download "%TEMP%\[amecs]-%wslDistro%%rndOut%.zip" "Downloading distro"
  2691. IF %ERRORLEVEL% EQU 5 TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1 & CALL :AUX-RETURN "%fetchMsgOut%" "HOME-WSL" -E -C
  2692. ECHO. & ECHO Preparing distro for installation...
  2693. IF NOT EXIST "%userLocalAppData%\AME-WSL" MKDIR "%userLocalAppData%\AME-WSL"
  2694. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp" > NUL 2>&1
  2695. MKDIR "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp"
  2696. POWERSHELL -NoP -C "Expand-Archive -LiteralPath '%TEMP%\[amecs]-%wslDistro%%rndOut%.zip' -DestinationPath '%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp'"
  2697. DEL /Q /F "%TEMP%\[amecs]-%wslDistro%%rndOut%.zip"
  2698. FOR /F "usebackq delims=" %%A IN (`DIR /B "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp" ^| FINDSTR /i ".*_x64\.appx .*_x64\.msix .*\.exe"`) DO (
  2699. IF /i "%%~xA"==".exe" (
  2700. RENAME "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp" "%wslDistro%"
  2701. SET "wslExe=%userLocalAppData%\AME-WSL\%wslDistro%\%%~A"
  2702. SET "wslExeName=%%~nxA"
  2703. ) ELSE (
  2704. RENAME "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp\%%~A" "%%~nA.zip"
  2705. MKDIR "%userLocalAppData%\AME-WSL\%wslDistro%"
  2706. POWERSHELL -NoP -C "$ProgressPreference = 'SilentlyContinue'; Expand-Archive -LiteralPath '%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp\%%~nA.zip' -DestinationPath '%userLocalAppData%\AME-WSL\%wslDistro%'"
  2707. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp"
  2708. FOR /F "usebackq delims=" %%B IN (`DIR /B "%userLocalAppData%\AME-WSL\%wslDistro%" ^| FINDSTR /i ".*\.exe"`) DO (
  2709. IF /i "%%~B"=="PengwinUI.exe" (
  2710. COPY "%userLocalAppData%\AME-WSL\%wslDistro%\DistroLauncher\pengwin.exe" "%userLocalAppData%\AME-WSL\%wslDistro%\pengwin.exe" /y > NUL
  2711. SET "wslExe=%userLocalAppData%\AME-WSL\%wslDistro%\pengwin.exe"
  2712. SET "wslExeName=pengwin.exe"
  2713. ) ELSE (
  2714. SET "wslExe=%userLocalAppData%\AME-WSL\%wslDistro%\%%~B"
  2715. SET "wslExeName=%%~nxB"
  2716. )
  2717. )
  2718. )
  2719. )
  2720. IF "%wslExe%"=="" (
  2721. TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1
  2722. DEL /Q /F "%userTemp%\[amecs]-%wslDistro%%rndOut%.zip" > NUL
  2723. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%wslDistro%%rndOut%-Tmp" > NUL 2>&1
  2724. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%wslDistro%" > NUL 2>&1
  2725. CALL :AUX-RETURN "Failed to locate distro executable." "HOME-WSL" -E -C
  2726. )
  2727. REM ::::::::::::::::::::::::::::P-WSL2-AR::::::::::::::::::::::::::::
  2728. ECHO "Exe: |%wslExe%|" >> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2729. REM :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2730. SET "count1=0"
  2731. ECHO. & ECHO Installing distro, this may take awhile...
  2732. :ALTPARENT-WSL-DISTROPROGRESS
  2733. IF %count1% GTR 800 (
  2734. IF "%distroPID%"=="" (
  2735. IF "%distroHostPID%"=="" (
  2736. TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1
  2737. CALL :AUX-RETURN "Failed to fetch distro process IDs." "HOME-WSL" -C -E
  2738. )
  2739. )
  2740. TASKKILL /F /T /PID "%altRunPID%" /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  2741. CALL :AUX-RETURN "Distro installation timed out." "HOME-WSL" -C -E
  2742. )
  2743. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%userTemp%\[amecs]-DistroHostPID%rndOut%.txt" > NUL 2>&1
  2744. IF %ERRORLEVEL% EQU 0 SET /P "distroHostPID=" < "%userTemp%\[amecs]-DistroHostPID%rndOut%.txt"
  2745. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%userTemp%\[amecs]-DistroPID%rndOut%.txt" > NUL 2>&1
  2746. IF %ERRORLEVEL% EQU 0 SET /P "distroPID=" < "%userTemp%\[amecs]-DistroPID%rndOut%.txt"
  2747. FINDSTR /X /c:"AME-ERROR" "%userTemp%\[amecs]-WSLCom%rndOut%.txt">NUL 2>&1 && SET /A "count2=%count2%+500"
  2748. FINDSTR /X /c:"AME-INPUTREQ" "%userTemp%\[amecs]-WSLCom%rndOut%.txt">NUL 2>&1 && GOTO ALTPARENT-WSL-CONFIG
  2749. TASKLIST /FI "IMAGENAME eq cmd.exe" /FI "PID eq %altRunPID%" 2>&1 | FINDSTR /i /c:"cmd.exe">NUL 2>&1 || SET /A "count1=%count1%+70"
  2750. TIMEOUT /T 2 /NOBREAK > NUL 2>&1
  2751. SET /A "count1=%count2%+1"
  2752. GOTO ALTPARENT-WSL-DISTROPROGRESS
  2753. :ALTPARENT-WSL-CONFIG
  2754. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  2755. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  2756. CALL :AUX-INPUTLOOP "wslRootPass" "Enter new root password" "0" "1" -Secure
  2757. CALL :AUX-INPUTLOOP "wslUser" "Enter new UNIX username" "%inpLenOut%" "3"
  2758. IF NOT "%wslUser%"==":None:" CALL :AUX-INPUTLOOP "wslUserPass" "Enter new UNIX password" "%inpLenOut%" "1" -Secure
  2759. IF NOT "%wslRootPass%"==":None:" SET "wslRootArg=echo -e """"%wslRootPass%\n%wslRootPass%"""" | passwd """"root"""" && "
  2760. IF NOT "%wslUser%"==":None:" SET "wslUserArg=useradd -m -G %wslGroups% -s %wslLShell% """"%wslUser%"""" && echo -e """"\n[user]\ndefault=%wslUser%"""" >> """"/etc/wsl.conf"""" && "
  2761. IF NOT "%wslUserPass%"==":None:" SET "wslUserPassArg=echo -e """"%wslUserPass%\n%wslUserPass%"""" | passwd """"%wslUser%"""" && "
  2762. POWERSHELL -NoP -C "Write-Host -NoNewLine '%wslRootArg%%sudo%%wslUserArg%%wslUserPassArg%echo """"Blank""""'" > "%userTemp%\[amecs]-WSLLin%rndOut%.txt" 2>&1
  2763. ECHO "Username: |%wslUser%|" > "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2764. ECHO AME-INPUTSENT>> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2765. CALL :AUX-WAITLOOP "-C:AME-DONE" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" -PID "%altRunPID%" -TME "150"
  2766. IF %ERRORLEVEL% NEQ 0 (
  2767. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2768. CALL :AUX-RETURN "Distro account setup timed out." "HOME-WSL" -C -E
  2769. )
  2770. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2771. ECHO "%wslDistro%" | FINDSTR /b /c:""""SUSE-Linux-Enterprise" /c:""""SLES-" > NUL 2>&1
  2772. IF %ERRORLEVEL% EQU 0 CALL :AUX-RETURN "Distro installed successfully" "HOME-WSL" -L "Use the SUSEConnect command to license this distro." -C
  2773. CALL :AUX-RETURN "Distro installed successfully" -H -C
  2774. REM -----------------------------------------------------------
  2775. REM |
  2776. REM |
  2777. REM |
  2778. REM -----------------------------------------------------------
  2779. :ALTCHILD-WSL-DISTROINSTALL
  2780. REM ::::::::::::::::::::::::::::C-WSL1-2A::::::::::::::::::::::::::::
  2781. SET "rndOut=%~2"
  2782. TITLE AMECS-AltRun-%rndOut%
  2783. SET /A "count0=0" & SET /A "count1=0"
  2784. CALL :AUX-WAITLOOP "-C:Distro: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2785. IF NOT ERRORLEVEL 1 (
  2786. FOR /F "usebackq tokens=2 delims=|" %%A IN (`FINDSTR /c:"Distro: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO (
  2787. SET "wslDistro=%%A"
  2788. FOR /F "usebackq tokens=2 delims=|" %%B IN (`FINDSTR /c:"PID: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO (
  2789. SET "parentPID=%%B"
  2790. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%%A'">NUL 2>&1 && ECHO "Reg: True" >> "%TEMP%\[amecs]-WSLCom%rndOut%.txt" || ECHO "Reg: False" >> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2791. CALL :AUX-WAITLOOP "-C:Exe: " "%TEMP%\[amecs]-WSLCom%rndOut%.txt" -PID "%%B" -TME "86400"
  2792. IF NOT ERRORLEVEL 1 (
  2793. FOR /F "usebackq tokens=2 delims=|" %%C IN (`FINDSTR /c:"Exe: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO SET "wslExe=%%C"
  2794. ) ELSE (
  2795. EXIT 1
  2796. )
  2797. )
  2798. )
  2799. ) ELSE (
  2800. EXIT 1
  2801. )
  2802. REM :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2803. POWERSHELL -NoP -C "(Start-Process 'CMD' -ArgumentList '/K','POWERSHELL -NoP -C """"(Start-Process ''%wslExe:'=''''%'' -NoNewWindow -PassThru).Id | Out-File -LiteralPath ''%TEMP:'=''''%\[amecs]-DistroPID%rndOut%.txt'' -Encoding default""""' -WindowStyle Hidden -PassThru).Id" 1> "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt"
  2804. :ALTCHILD-WSL-DISTROPROGRESS
  2805. TIMEOUT /T 2 /NOBREAK > NUL
  2806. IF %count0% GEQ 15 (
  2807. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  2808. ECHO AME-ERROR>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2809. )
  2810. IF %count1% GTR 500 (
  2811. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  2812. ECHO AME-ERROR>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2813. )
  2814. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt" > NUL 2>&1
  2815. IF %ERRORLEVEL% NEQ 0 (
  2816. SET /A "count0=%count0%+1"
  2817. GOTO ALTCHILD-WSL-DISTROPROGRESS
  2818. ) ELSE (
  2819. SET /P "distroHostPID=" < "%TEMP%\[amecs]-DistroHostPID%rndOut%.txt"
  2820. )
  2821. FINDSTR "1 2 3 4 5 6 7 8 9 0" "%TEMP%\[amecs]-DistroPID%rndOut%.txt" > NUL 2>&1
  2822. IF %ERRORLEVEL% NEQ 0 (
  2823. SET /A "count0=%count0%+1"
  2824. GOTO ALTCHILD-WSL-DISTROPROGRESS
  2825. ) ELSE (
  2826. SET /P "distroPID=" < "%TEMP%\[amecs]-DistroPID%rndOut%.txt"
  2827. )
  2828. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%wslDistro%'" > NUL 2>&1
  2829. IF %ERRORLEVEL% EQU 0 (
  2830. TASKKILL /F /T /PID "%distroPID%" /PID "%distroHostPID%" > NUL 2>&1
  2831. GOTO ALTCHILD-WSL-CONFIG
  2832. )
  2833. TASKLIST /FI "IMAGENAME eq cmd.exe" /FI "PID eq %distroHostPID%" 2>&1 | FINDSTR /i /c:"cmd.exe">NUL 2>&1 || SET /A "count1=%count1%+50"
  2834. SET /A "count1=%count1%+1"
  2835. GOTO ALTCHILD-WSL-DISTROPROGRESS
  2836. :ALTCHILD-WSL-CONFIG
  2837. ECHO AME-INPUTREQ>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2838. CALL :AUX-WAITLOOP "-C:AME-INPUTSENT" "%TEMP%\[amecs]-WSLCom%rndOut%.txt" -PID "%parentPID%" -ALT "AME-USERCHECK" -TME "86400"
  2839. IF %ERRORLEVEL% GEQ 1 EXIT 0
  2840. FOR /F "usebackq tokens=2 delims=|" %%A IN (`FINDSTR /c:"Username: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO SET "wslUser=%%A"
  2841. WSL -d %wslDistro% < "%TEMP%\[amecs]-WSLLin%rndOut%.txt" > NUL 2>&1
  2842. WSL -t %wslDistro% > NUL 2>&1
  2843. ECHO AME-DONE>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt" & EXIT 0
  2844. REM -----------------------------------------------------------
  2845. REM -----------------------------------------------------------
  2846. :ALTPARENT-WSL-DISTROREMOVE
  2847. CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO.
  2848. ECHO. & ECHO Checking installed distros...
  2849. CALL :AUX-ALTSTART "WSLDistroRemove" "CMD /C 'START /min '' POWERSHELL -NoP -C 'Start-Process ''''|Script|'''' -ArgumentList ''''wslRemove'''',''''|rndOut|'''' -WindowStyle Hidden'"
  2850. IF %ERRORLEVEL% EQU 1 CALL :AUX-RETURN "Failed to create scheduled task. (1)" "HOME-WSL" -E -C
  2851. IF %ERRORLEVEL% EQU 2 CALL :AUX-RETURN "Failed to create scheduled task. (2)" "HOME-WSL" -E -C
  2852. REM CALL :AUX-ALTSTART "WSLDistroRemove" "CMD /K '|Script| wslRemove |rndOut|'"
  2853. CALL :AUX-WAITLOOP -WindowTitle "AMECS-AltRun-%rndOut%" -TME "30"
  2854. IF ERRORLEVEL 1 CALL :AUX-RETURN "Failed to launch alt process." "HOME-WSL" -C -E
  2855. SET "altRunPID=%waitPIDOut%"
  2856. ECHO "Distro: |%wslDistro%|">> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2857. ECHO "PID: |%scriptPID%|">> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2858. CALL :AUX-WAITLOOP "-C:Reg: " "%userTemp%\[amecs]-WSLCom%rndOut%.txt" -PID "%altRunPID%"
  2859. IF NOT ERRORLEVEL 1 (
  2860. FINDSTR /c:"Reg: True" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" > NUL && SET "distroReg=true"
  2861. FINDSTR /c:"Reg: False" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" > NUL && SET "distroReg=false"
  2862. ) ELSE (
  2863. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2864. )
  2865. IF "%distroReg%"=="" TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1 & CALL :AUX-RETURN "Failed to check registered distros." "HOME-WSL" -C -E
  2866. DIR /B /A:d "%userLocalAppData%\AME-WSL" 2>&1 | FINDSTR /X /c:"%wslDistro%" > NUL 2>&1 && SET "distroRemFiles=true"
  2867. IF NOT "%distroReg%"=="true" (
  2868. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2869. IF NOT "%distroRemFiles%"=="true" CALL :AUX-RETURN "Distro is not installed." "HOME-WSL" -C -E
  2870. )
  2871. POWERSHELL -NoP -C "Write-Host """`n Are you sure you want to remove this distro? ^(Y/N^): """ -NoNewLine; [Console]::CursorVisible = $True; CHOICE /C YN /N /M '%BS%'; [Console]::CursorVisible = $False; EXIT $LastExitCode"
  2872. IF %ERRORLEVEL%==2 TASKKILL /F /T /PID "%altRunPID%">NUL 2>&1 & ENDLOCAL & GOTO HOME-MAINMENU
  2873. ECHO. & ECHO Removing distro...
  2874. IF "%distroReg%"=="true" (
  2875. ECHO "Remove: |True|">> "%userTemp%\[amecs]-WSLCom%rndOut%.txt"
  2876. CALL :AUX-WAITLOOP "-C:AME-REMDONE" "%userTemp%\[amecs]-WSLCom%rndOut%.txt" -PID "%altRunPID%"
  2877. IF NOT ERRORLEVEL 1 (
  2878. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2879. ) ELSE (
  2880. TASKKILL /F /T /PID "%altRunPID%" > NUL 2>&1
  2881. CALL :AUX-RETURN "Failed to unregister distro." "HOME-WSL" -E
  2882. )
  2883. )
  2884. FOR /F "usebackq delims=" %%A IN (`DIR /B /A:d "%userLocalAppData%\AME-WSL" 2^>^&1 ^| FINDSTR /X /c:"%wslDistro%"`) DO (
  2885. FOR /F "usebackq delims=" %%B IN (`DIR /S /B "%userLocalAppData%\AME-WSL\%%A\*.exe" 2^>^&1`) DO (
  2886. FOR /F "usebackq delims=" %%C IN (`POWERSHELL -NoP -C "Get-Process | Where-Object {$_.Path -eq '%%~B'} | Select-Object -ExpandProperty Id" 2^>^&1`) DO (
  2887. TASKKILL /F /T /PID "%%~C" > NUL 2>&1
  2888. )
  2889. )
  2890. RMDIR /Q /S "%userLocalAppData%\AME-WSL\%%A" > NUL
  2891. )
  2892. FOR /F "usebackq delims=" %%A IN (`DIR /B "%userLocalAppData%\AME-WSL" 2^>^&1`) DO SET "contentsEmpty=false"
  2893. IF NOT "%contentsEmpty%"=="false" RMDIR /Q /S "%userLocalAppData%\AME-WSL" > NUL 2>&1
  2894. TIMEOUT /T 1 /NOBREAK > NUL
  2895. CALL :AUX-RETURN "Distro removed successfully" -H -C
  2896. REM -----------------------------------------------------------
  2897. REM |
  2898. REM |
  2899. REM |
  2900. REM -----------------------------------------------------------
  2901. :ALTCHILD-WSL-DISTROREMOVE
  2902. SET "rndOut=%~2"
  2903. TITLE AMECS-AltRun-%rndOut%
  2904. CALL :AUX-WAITLOOP "-C:Distro: |" "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2905. IF NOT ERRORLEVEL 1 (
  2906. FOR /F "usebackq tokens=2 delims=|" %%A IN (`FINDSTR /c:"Distro: " "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO (
  2907. SET SET "wslDistro=%%A"
  2908. FOR /F "usebackq tokens=2 delims=|" %%B IN (`FINDSTR /c:"PID: " "%TEMP%\[amecs]-WSLCom%rndOut%.txt"`) DO (
  2909. SET "parentPID=%%B"
  2910. POWERSHELL -NoP -C "[console]::OutputEncoding = [Text.UnicodeEncoding]::Unicode; WSL -l -q | FINDSTR /X /c:'%%A'">NUL 2>&1 && ECHO "Reg: True" >> "%TEMP%\[amecs]-WSLCom%rndOut%.txt" || ECHO "Reg: False" >> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2911. IF ERRORLEVEL 1 EXIT 0
  2912. CALL :AUX-WAITLOOP "-C:Remove: |True|" "%TEMP%\[amecs]-WSLCom%rndOut%.txt" -PID "%%B" -TME "86400"
  2913. IF NOT ERRORLEVEL 1 (
  2914. WSL --unregister %%A > NUL 2>&1
  2915. IF NOT ERRORLEVEL 0 (
  2916. ECHO AME-ERROR>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2917. ) ELSE (
  2918. ECHO AME-REMDONE>> "%TEMP%\[amecs]-WSLCom%rndOut%.txt"
  2919. )
  2920. ) ELSE (
  2921. EXIT 0
  2922. )
  2923. )
  2924. )
  2925. ) ELSE (
  2926. EXIT 0
  2927. )
  2928. REM -----------------------------------------------------------
  2929. REM -------------------
  2930. REM Encoded Executables
  2931. REM -------------------
  2932. REM -----------------------------------------------------------
  2933. REM Encoded AutoLogon executable modifed/forked from https://github.com/rzander/AutoLogon developed by Roger Zander
  2934. -----BEGIN CERTIFICATE-----
  2935. TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  2936. AAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v
  2937. dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDADrD0GIAAAAA
  2938. AAAAAOAAAgELAQsAABQAAAAIAAAAAAAAnjIAAAAgAAAAQAAAAABAAAAgAAAAAgAA
  2939. BAAAAAAAAAAEAAAAAAAAAACAAAAAAgAAAAAAAAMAQIUAABAAABAAAAAAEAAAEAAA
  2940. AAAAABAAAAAAAAAAAAAAAEQyAABXAAAAAEAAANgEAAAAAAAAAAAAAAAAAAAAAAAA
  2941. AGAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  2942. AAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAA
  2943. pBIAAAAgAAAAFAAAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAANgEAAAAQAAA
  2944. AAYAAAAWAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAGAAAAACAAAAHAAA
  2945. AAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAACAMgAAAAAAAEgAAAACAAUA
  2946. iCQAALwNAAABAAAACAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  2947. AAAAAAAAAAAAAAAAAAAAACYAAv4VAwAAAioAABMwBACmAQAAAQAAEQAWagp+BwAA
  2948. CgsWDAgoCAAACgsSA/4VAwAAAh8gEwR+BwAAChMFEgb+FQQAAAISBhZ9BAAABBIG
  2949. fgcAAAp9BQAABBIGFn0HAAAEEgZ+BwAACn0IAAAEEgZ+BwAACn0JAAAEEgMSBhEE
  2950. EgUoAgAABhMHEQcoBAAABm4KBhZq/gETCxELLSQAcgEAAHAGjA4AAAEoCQAACigK
  2951. AAAKAB0oCwAACgAAOO4AAAAAF40DAAACEwgRCBaPAwAAAv4VAwAAAhEIFo8DAAAC
  2952. AigMAAAKfQMAAAQRCBaPAwAAAgJvDQAAChha0X0BAAAEEQgWjwMAAAICbw0AAAoX
  2953. WBha0X0CAAAEF40DAAACEwkRCRaPAwAAAv4VAwAAAhEJFo8DAAACAygMAAAKfQMA
  2954. AAQRCRaPAwAAAgNvDQAAChha0X0BAAAEEQkWjwMAAAIDbw0AAAoXWBha0X0CAAAE
  2955. EQURCBEJKAMAAAYmBhZq/gETCxELLR8AcikAAHAGjA4AAAEoCQAACigKAAAKAB0o
  2956. CwAACgAAEQUoBQAABiYABygBAAAGJgYTCisAEQoqAAAbMAQALgIAAAIAABEAcw4A
  2957. AAoKAAITBRYTBisgEQURBpoLAAYHKA8AAApvEAAACm8RAAAKJgARBhdYEwYRBhEF
  2958. jmn+BBMHEQct0gZyYwAAcG8SAAAKFv4BEwcRBzqeAAAAAAB+EwAACgwIcm0AAHAX
  2959. bxQAAAoMCHLZAABwcvkAAHBvFQAACgAIcvsAAHAWbxYAAAoACHIZAQBwFm8WAAAK
  2960. AAhyNwEAcBZvFgAACgAIclUBAHAWbxYAAAoACHJrAQBwFm8WAAAKAHJrAQBwcvkA
  2961. AHAoBwAABiYA3iINAHKLAQBwCW8XAAAKKBgAAAooCgAACgAdKAsAAAoAAN4AAAAG
  2962. bxkAAAoY/gQTBxEHOigBAAAAAH4TAAAKDAhybQAAcBdvFAAACgwIctkAAHACFppv
  2963. FQAACgAIcpsBAHAoGgAACm8VAAAKAAhy+wAAcHK/AQBwbxUAAAoACHJrAQBwFm8W
  2964. AAAKAAZvGQAAChj+Ahb+ARMHEQctTQACGJoSBCgbAAAKFv4BEwcRBy02ABEEFv4C
  2965. Fv4BEwcRBy0XAAhyGQEAcBEEjBcAAAFvFQAACgAAKw8ACHIZAQBwFm8WAAAKAAAA
  2966. ACsPAAhyGQEAcBZvFgAACgAABnLDAQBwbxIAAAoW/gETBxEHLRMACHJVAQBwcr8B
  2967. AHBvFQAACgAAcmsBAHACF5ooBwAABiZy2wEAcCgKAAAKAADeIg0AcosBAHAJbxcA
  2968. AAooGAAACigKAAAKAB0oCwAACgAA3gAAACoAAEE0AAAAAAAAVgAAAHkAAADPAAAA
  2969. IgAAABYAAAEAAAAABgEAAAMBAAAJAgAAIgAAABYAAAEeAigcAAAKKkJTSkIBAAEA
  2970. AAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAAAwEAAAjfgAAeAQAAJQFAAAjU3Ry
  2971. aW5ncwAAAAAMCgAADAIAACNVUwAYDAAAEAAAACNHVUlEAAAAKAwAAJQBAAAjQmxv
  2972. YgAAAAAAAAACAAABVx8CFAkCAAAA+iUzABYAAAEAAAAXAAAABgAAABcAAAAJAAAA
  2973. DQAAAAEAAAAcAAAADQAAAAMAAAACAAAAAgAAAAUAAAABAAAAAQAAAAMAAAAAAAoA
  2974. AQAAAAAABgCEAH0ABgCLAH0ABgCVAH0ABgChAH0ABgAdA/4CBgBkA30ABgCaA3oD
  2975. BgC6A3oDBgDYA/4CBgABBP4CBgAXBP4CBgAiBH0ABgAuBP4CBgBDBH0ABgBJBH0A
  2976. BgBXBH0ABgBpBH0ABgCrBJgEBgDKBLUEBgAQBQAFBgAZBQAFBgBSBX0ABgCCBX0A
  2977. AAAAAAEAAAAAAAEAAQCAARAAFgAAAAUAAQABAAoBEAAoAAAACQABAAYACgEQADsA
  2978. AAAJAAQABwACAQAAUQAAABEACgAHAAAAEABiAGoABQAYAAcABgDvADEABgD2ADEA
  2979. BgAEATQABgDvADsABgATATQABgAhAT4ABgAsAUIABgA3ATQABgBKATQABgZjAUUA
  2980. VoBrAUgAVoCJAUgAVoCnAUgAVoDGAUgAVoDZAUgAVoDvAUgAVoAEAkgAVoAcAkgA
  2981. VoA8AkgAVoBaAkgAVoBxAkgAVoCFAkgAVoCZAkgAAAAAAIAAliCmAAoAAQAAAAAA
  2982. gACWIK4ADwACAAAAAACAAJYgvAAcAAYAAAAAAIAAliDQACcACQAAAAAAgACWIOYA
  2983. LAAKAFAgAAAAAOYBCwE3AAsAXCAAAAAAlgCtAsEACwAQIgAAAACRALcCxwANAIAk
  2984. AAAAAIYYvAI3AA4AAAABAMICAAABAMcCAAACANICAAADAOMCAgAEAPECAAABAPEC
  2985. AAACACoDAAADADIDAAABAD4DAAABAEUDAAABAFIDAAACAFoDAAABAF8DAwANACkA
  2986. vAI3ADEAvALNADkAvALSAEEAvAI3AEkAvALXAFEAvALcAGEAKQQ0AGkANgTiAHkA
  2987. UATnAIEAXwTtAIkAdQTyAGkAegT3AHkAjQT8AJEAvAI3AJkA1gQVAXkA6wQaAZEA
  2988. 8wQgAZEA9wQlAaEAJQUqAakAMgUuAakAPQU1AakARgU7AbEAXAVBAXkAUARFAZEA
  2989. aAX8AIkAcgVLAbkAiAVPAQkAvAI3AAoALABMAAoAMABVAAoANABeAAoAOABnAAoA
  2990. PABwAAoAQAB5AAoARACCAAoASACLAAoATACUAAoAUACdAAoAVACmAAoAWACvAAoA
  2991. XAC4AC4AEwBlAS4AGwBrAS4AIwB0AQABVgHrA/QDAAEDAKYAAQAAAQUArgACAEAB
  2992. BwC8AAIAAAEJANAAAgAAAQsA5gACAASAAAAAAAAAAAAAAAAAAAAAAGIAAAAEAAAA
  2993. AAAAAAAAAAABAHQAAAAAAAMAAgAEAAIABQACAAAAAAAAPE1vZHVsZT4AUHJvZ3Jh
  2994. bS5leGUAU2FmZU5hdGl2ZU1ldGhvZHMATFNBX1VOSUNPREVfU1RSSU5HAExTQV9P
  2995. QkpFQ1RfQVRUUklCVVRFUwBMU0FfQWNjZXNzUG9saWN5AFByb2dyYW0AQXV0b0xv
  2996. Z29uAG1zY29ybGliAFN5c3RlbQBPYmplY3QAVmFsdWVUeXBlAElEaXNwb3NhYmxl
  2997. AEVudW0ARnJlZVNpZABMc2FPcGVuUG9saWN5AExzYVN0b3JlUHJpdmF0ZURhdGEA
  2998. THNhTnRTdGF0dXNUb1dpbkVycm9yAExzYUNsb3NlAExlbmd0aABNYXhpbXVtTGVu
  2999. Z3RoAEJ1ZmZlcgBEaXNwb3NlAFJvb3REaXJlY3RvcnkAT2JqZWN0TmFtZQBBdHRy
  3000. aWJ1dGVzAFNlY3VyaXR5RGVzY3JpcHRvcgBTZWN1cml0eVF1YWxpdHlPZlNlcnZp
  3001. Y2UAdmFsdWVfXwBQT0xJQ1lfVklFV19MT0NBTF9JTkZPUk1BVElPTgBQT0xJQ1lf
  3002. VklFV19BVURJVF9JTkZPUk1BVElPTgBQT0xJQ1lfR0VUX1BSSVZBVEVfSU5GT1JN
  3003. QVRJT04AUE9MSUNZX1RSVVNUX0FETUlOAFBPTElDWV9DUkVBVEVfQUNDT1VOVABQ
  3004. T0xJQ1lfQ1JFQVRFX1NFQ1JFVABQT0xJQ1lfQ1JFQVRFX1BSSVZJTEVHRQBQT0xJ
  3005. Q1lfU0VUX0RFRkFVTFRfUVVPVEFfTElNSVRTAFBPTElDWV9TRVRfQVVESVRfUkVR
  3006. VUlSRU1FTlRTAFBPTElDWV9BVURJVF9MT0dfQURNSU4AUE9MSUNZX1NFUlZFUl9B
  3007. RE1JTgBQT0xJQ1lfTE9PS1VQX05BTUVTAFBPTElDWV9OT1RJRklDQVRJT04AU3Rv
  3008. cmVEYXRhAE1haW4ALmN0b3IAcFNpZABTeXN0ZW1OYW1lAE9iamVjdEF0dHJpYnV0
  3009. ZXMARGVzaXJlZEFjY2VzcwBQb2xpY3lIYW5kbGUAU3lzdGVtLlJ1bnRpbWUuSW50
  3010. ZXJvcFNlcnZpY2VzAE91dEF0dHJpYnV0ZQBLZXlOYW1lAFByaXZhdGVEYXRhAHN0
  3011. YXR1cwBPYmplY3RIYW5kbGUAa2V5TmFtZQBEYXRhAGFyZ3MAQ0xTQ29tcGxpYW50
  3012. QXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAQ29tcGls
  3013. YXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0
  3014. dHJpYnV0ZQBEbGxJbXBvcnRBdHRyaWJ1dGUAYWR2YXBpMzIAYWR2YXBpMzIuZGxs
  3015. AFN0cnVjdExheW91dEF0dHJpYnV0ZQBMYXlvdXRLaW5kAEludFB0cgBaZXJvAE1h
  3016. cnNoYWwAQWxsb2NIR2xvYmFsAEludDY0AFN0cmluZwBDb25jYXQAQ29uc29sZQBX
  3017. cml0ZUxpbmUARW52aXJvbm1lbnQARXhpdABTdHJpbmdUb0hHbG9iYWxVbmkAZ2V0
  3018. X0xlbmd0aABTeXN0ZW0uQ29sbGVjdGlvbnMAQXJyYXlMaXN0AFN5c3RlbS5HbG9i
  3019. YWxpemF0aW9uAEN1bHR1cmVJbmZvAGdldF9JbnZhcmlhbnRDdWx0dXJlAFRvVXBw
  3020. ZXIAQWRkAENvbnRhaW5zAE1pY3Jvc29mdC5XaW4zMgBSZWdpc3RyeQBSZWdpc3Ry
  3021. eUtleQBMb2NhbE1hY2hpbmUAT3BlblN1YktleQBTZXRWYWx1ZQBEZWxldGVWYWx1
  3022. ZQBFeGNlcHRpb24AZ2V0X01lc3NhZ2UAZ2V0X0NvdW50AGdldF9NYWNoaW5lTmFt
  3023. ZQBJbnQzMgBUcnlQYXJzZQAAAAAAJ08AcABlAG4AUABvAGwAaQBjAHkAIABmAGEA
  3024. aQBsAGUAZAA6ACAAADlMAHMAYQBTAHQAbwByAGUAUAByAGkAdgBhAHQAZQBEAGEA
  3025. dABhACAAZgBhAGkAbABlAGQAOgAgAAAJLwBEAEUATAAAa1MATwBGAFQAVwBBAFIA
  3026. RQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwAgAE4AVABcAEMA
  3027. dQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFcAaQBuAGwAbwBnAG8AbgAAH0QA
  3028. ZQBmAGEAdQBsAHQAVQBzAGUAcgBOAGEAbQBlAAABAB1BAHUAdABvAEEAZABtAGkA
  3029. bgBMAG8AZwBvAG4AAB1BAHUAdABvAEwAbwBnAG8AbgBDAG8AdQBuAHQAAB1GAG8A
  3030. cgBjAGUAQQB1AHQAbwBMAG8AZwBvAG4AABVEAGkAcwBhAGIAbABlAEMAQQBEAAAf
  3031. RABlAGYAYQB1AGwAdABQAGEAcwBzAHcAbwByAGQAAA9FAHIAcgBvAHIAOgAgAAAj
  3032. RABlAGYAYQB1AGwAdABEAG8AbQBhAGkAbgBOAGEAbQBlAAADMQAAFy8ARABJAFMA
  3033. QQBCAEwARQBDAEEARAAALUEAdQB0AG8AbABvAGcAbwBuACAAYQBjAHQAaQB2AGEA
  3034. dABlAGQALgAuAC4AAAAAAFaAIBFOwL1Hhay/5JRgKxwACLd6XFYZNOCJBAABGBgM
  3035. AAQJEBEMEBEQCBAYCgADCRgdEQwdEQwEAAEJCQQAAQkYAgYHAgYYAyAAAQIGCAMG
  3036. EQwCBgkCBgoDBhEUCAEAAAAAAAAACAIAAAAAAAAACAQAAAAAAAAACAgAAAAAAAAA
  3037. CBAAAAAAAAAACCAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACAABAAAAAAAACAAC
  3038. AAAAAAAACAAEAAAAAAAACAAIAAAAAAAACAAQAAAAAAAABQACCg4OBQABAR0OBCAB
  3039. AQIEIAEBCAQgAQEOBSABAREtBAABGAgFAAIOHBwEAAEBDgQAAQEIBAABGA4DIAAI
  3040. FAcMChgIEQwIGBEQCR0RDB0RDAoCBAAAEk0FIAEOEk0EIAEIHAQgAQIcAwYSVQYg
  3041. AhJVDgIFIAIBDhwFIAIBDgIDIAAOBQACDg4OAwAADgYAAgIOEAgOBwgSSQ4SVRJZ
  3042. CB0OCAIFAQABAAAIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJv
  3043. d3MBAGwyAAAAAAAAAAAAAI4yAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAMgAA
  3044. AAAAAAAAAAAAAAAAAAAAAAAAX0NvckV4ZU1haW4AbXNjb3JlZS5kbGwAAAAAAP8l
  3045. ACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3046. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3047. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3048. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3049. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3050. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3051. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3052. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAQAAAAIAAAgBgAAAA4AACA
  3053. AAAAAAAAAAAAAAAAAAABAAEAAABQAACAAAAAAAAAAAAAAAAAAAABAAEAAABoAACA
  3054. AAAAAAAAAAAAAAAAAAABAAAAAACAAAAAAAAAAAAAAAAAAAAAAAABAAAAAACQAAAA
  3055. oEAAAEQCAAAAAAAAAAAAAOhCAADqAQAAAAAAAAAAAABEAjQAAABWAFMAXwBWAEUA
  3056. UgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAAAAAAAAAAAAAAAAAAA
  3057. PwAAAAAAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUA
  3058. SQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAE
  3059. pAEAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAgAEAAAEAMAAwADAA
  3060. MAAwADQAYgAwAAAALAACAAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4A
  3061. AAAAACAAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADAALgAwAC4A
  3062. MAAuADAAAAA4AAwAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFAAcgBvAGcA
  3063. cgBhAG0ALgBlAHgAZQAAACgAAgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgA
  3064. dAAAACAAAABAAAwAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAA
  3065. UAByAG8AZwByAGEAbQAuAGUAeABlAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUA
  3066. cgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwA
  3067. eQAgAFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAAAAAAO+7vzw/eG1s
  3068. IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMi
  3069. Pz4NCjxhc3NlbWJseSB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTph
  3070. c20udjEiIG1hbmlmZXN0VmVyc2lvbj0iMS4wIj4NCiAgPGFzc2VtYmx5SWRlbnRp
  3071. dHkgdmVyc2lvbj0iMS4wLjAuMCIgbmFtZT0iTXlBcHBsaWNhdGlvbi5hcHAiLz4N
  3072. CiAgPHRydXN0SW5mbyB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTph
  3073. c20udjIiPg0KICAgIDxzZWN1cml0eT4NCiAgICAgIDxyZXF1ZXN0ZWRQcml2aWxl
  3074. Z2VzIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MyI+DQog
  3075. ICAgICAgIDxyZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbCBsZXZlbD0iYXNJbnZva2Vy
  3076. IiB1aUFjY2Vzcz0iZmFsc2UiLz4NCiAgICAgIDwvcmVxdWVzdGVkUHJpdmlsZWdl
  3077. cz4NCiAgICA8L3NlY3VyaXR5Pg0KICA8L3RydXN0SW5mbz4NCjwvYXNzZW1ibHk+
  3078. DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3079. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3080. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3081. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3082. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3083. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3084. AAAAAAAAAAAAAAAAAAAAAAAwAAAMAAAAoDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3085. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3086. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3087. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3088. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3089. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3090. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3091. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3092. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3093. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3094. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3095. -----END CERTIFICATE-----
  3096. REM -----------------------------------------------------------