From 29eb5bd60d3bdc892f20bb0458a9a4bf8b2af1bb Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Sun, 28 Jul 2024 06:54:15 +0530 Subject: Generate clean logs on desktop on edition change failure and other fixes --- MAS/Separate-Files-Version/Change_Edition.cmd | 776 +++++++++++++++----------- 1 file changed, 455 insertions(+), 321 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 5622663..2e7b173 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -1,15 +1,12 @@ @set masver=2.6 -@setlocal DisableDelayedExpansion @echo off ::============================================================================ :: -:: This script is a part of 'Microsoft-Activation-Scripts' (MAS) project. -:: :: Homepage: mass grave[.]dev -:: Email: windowsaddict@protonmail.com +:: Email: mas.help@outlook.com :: ::============================================================================ @@ -22,26 +19,32 @@ set _stg=0 ::======================================================================================================================================== -:: Set Path variable, it helps if it is misconfigured in the system +:: Set Environment variables, it helps if they are misconfigured in the system + +setlocal EnableExtensions +setlocal DisableDelayedExpansion -set "PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" +set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" + +set "SysPath=%SystemRoot%\System32" +set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" if exist "%SystemRoot%\Sysnative\reg.exe" ( -set "PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%" +set "SysPath=%SystemRoot%\Sysnative" +set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%" ) -:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows -:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows +set "ComSpec=%SysPath%\cmd.exe" +set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules" set "_cmdf=%~f0" for %%# in (%*) do ( if /i "%%#"=="r1" set r1=1 if /i "%%#"=="r2" set r2=1 -if /i "%%#"=="-qedit" ( -reg add HKCU\Console /v QuickEdit /t REG_DWORD /d "1" /f %nul1% -rem check the code below admin elevation to understand why it's here -) ) +:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows +:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows + if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( setlocal EnableDelayedExpansion start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* r1" @@ -69,10 +72,10 @@ echo: echo Null service is not running, script may crash... echo: echo: -echo Help - %mas%troubleshoot.html +echo Help - %mas%troubleshoot echo: echo: -ping 127.0.0.1 -n 10 +ping 127.0.0.1 -n 20 ) cls @@ -81,9 +84,13 @@ cls pushd "%~dp0" >nul findstr /v "$" "%~nx0" && ( echo: -echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing. +echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing. +echo: +echo: +echo Help - %mas%troubleshoot +echo: echo: -ping 127.0.0.1 -n 6 >nul +ping 127.0.0.1 -n 20 >nul popd exit /b ) @@ -97,6 +104,7 @@ title Change Windows Edition %masver% set _args= set _elev= +set _unattended=0 set _args=%* if defined _args set _args=%_args:"=% @@ -111,37 +119,8 @@ set "nul2=2>nul" set "nul6=2^>nul" set "nul=>nul 2>&1" -set psc=powershell.exe -set winbuild=1 -for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G - -set _NCS=1 -if %winbuild% LSS 10586 set _NCS=0 -if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0" %nul1% && (set _NCS=0) - -if %_NCS% EQU 1 ( -for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" -set "Red="41;97m"" -set "Gray="100;97m"" -set "Green="42;97m"" -set "Blue="44;97m"" -set "_White="40;37m"" -set "_Green="40;92m"" -set "_Yellow="40;93m"" -) else ( -set "Red="Red" "white"" -set "Gray="Darkgray" "white"" -set "Green="DarkGreen" "white"" -set "Blue="Blue" "white"" -set "_White="Black" "Gray"" -set "_Green="Black" "Green"" -set "_Yellow="Black" "Yellow"" -) - -set "nceline=echo: &echo ==== ERROR ==== &echo:" -set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:" +call :dk_setvar set "line=echo ___________________________________________________________________________________________" -if %~z0 GEQ 200000 (set "_exitmsg=Go back") else (set "_exitmsg=Exit") ::======================================================================================================================================== @@ -149,13 +128,7 @@ if %winbuild% LSS 7600 ( %nceline% echo Unsupported OS version detected [%winbuild%]. echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. -goto ced_done -) - -for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" ( -%nceline% -echo Unable to find powershell.exe in the system. -goto ced_done +goto dk_done ) ::======================================================================================================================================== @@ -169,6 +142,7 @@ set "_batf=%~f0" set "_batp=%_batf:'=''%" set _PSarg="""%~f0""" -el %_args% +set _PSarg=%_PSarg:'=''% set "_ttemp=%userprofile%\AppData\Local\Temp" @@ -183,36 +157,89 @@ echo Script is launched from the temp folder, echo Most likely you are running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. -goto ced_done +goto dk_done ) ) ::======================================================================================================================================== +:: Check PowerShell + +REM :PowerShellTest: $ExecutionContext.SessionState.LanguageMode :PowerShellTest: + +cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PowerShellTest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || ( +%eline% +cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" +echo: +cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && ( +echo Failed to run Powershell command but Powershell is working. +call :dk_color %Blue% "Check if your antivirus is blocking the script." +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +) || ( +echo PowerShell is not working. Aborting... +echo If you have applied restrictions on Powershell then undo those changes. +echo: +set fixes=%fixes% %mas%fix_powershell +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell" +) +goto dk_done +) + +::======================================================================================================================================== + :: Elevate script as admin and pass arguments and preventing loop %nul1% fltmc || ( -if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b +if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. echo To do so, right click on this script and select 'Run as administrator'. -goto ced_done +goto dk_done ) ::======================================================================================================================================== -:: This code disables QuickEdit for this cmd.exe session only without making permanent changes to the registry -:: It is added because clicking on the script window pauses the operation and leads to the confusion that script stopped due to an error +:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app -for %%# in (%_args%) do (if /i "%%#"=="-qedit" set quedit=1) +if %winbuild% GEQ 17763 ( +set terminal=1 +) else ( +set terminal= +) -reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% || if not defined quedit ( -reg add HKCU\Console /v QuickEdit /t REG_DWORD /d "0" /f %nul1% -start cmd.exe /c ""!_batf!" %_args% -qedit" -rem quickedit reset code is added at the starting of the script instead of here because it takes time to reflect in some cases -exit /b +:: Check if script is running in Terminal app + +set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0); +set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128); +set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128); +set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow(); +set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero); + +if defined terminal ( +%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal= ) +if %_unattended%==1 goto :skipQE +for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE) + +if defined terminal ( +set "launchcmd=start conhost.exe %psc%" +) else ( +set "launchcmd=%psc%" +) + +:: Disable QuickEdit in current session + +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" + +%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1) +:skipQE + ::======================================================================================================================================== :: Check for updates @@ -227,9 +254,10 @@ if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo You are running outdated version MAS %masver% +echo Version %masver% of MAS is outdated. echo ________________________________________________ echo: +if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: @@ -238,114 +266,109 @@ choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) ) +) + +::======================================================================================================================================== + +setlocal DisableDelayedExpansion + +:: Check desktop location + +set desktop= +for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b" +if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a" + +if not defined desktop ( +%eline% +echo Desktop location was not detected, aborting... +goto dk_done +) + +setlocal EnableDelayedExpansion ::======================================================================================================================================== cls -mode 98, 30 +if not defined terminal mode 98, 30 +title Change Windows Edition %masver% echo: echo Initializing... echo: -call :dk_product -call :dk_ckeckwmic -:: Show info for potential script stuck scenario - -sc start sppsvc %nul% -if %errorlevel% NEQ 1056 if %errorlevel% NEQ 0 ( -echo: -echo Error code: %errorlevel% -call :dk_color %Red% "Failed to start [sppsvc] service, rest of the process may take a long time..." +for %%# in ( +sppsvc.exe +dism.exe +) do ( +if not exist %SysPath%\%%# ( +%eline% +echo [%SysPath%\%%#] file is missing. Aborting... echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) ) ::======================================================================================================================================== -:: Check Activation IDs +set spp=SoftwareLicensingProduct +set sps=SoftwareLicensingService -call :dk_actids -if not defined applist ( -net stop sppsvc /y %nul% -cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% -if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% -call :dk_refresh -call :dk_actids -if not defined applist ( -%eline% -echo Activation IDs not found. Aborting... -echo: -echo Check this page for help. %mas%troubleshoot -goto ced_done +call :dk_reflection +call :dk_ckeckwmic +call :dk_sppissue + +for /f "tokens=6-7 delims=[]. " %%i in ('ver') do if not "%%j"=="" ( +set fullbuild=%%i.%%j +) else ( +for /f "tokens=3" %%G in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR" %nul6%') do if not errorlevel 1 set /a "UBR=%%G" +for /f "skip=2 tokens=3,4 delims=. " %%G in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx') do ( +if defined UBR (set "fullbuild=%%G.!UBR!") else (set "fullbuild=%%G.%%H") ) ) ::======================================================================================================================================== -call :dk_checksku +:: Check Activation ID -if not defined osSKU ( +call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f +if not defined apps ( %eline% -echo SKU value was not detected properly. Aborting... -goto ced_done +echo Either key is not insalled or failed to get installed key activation ID. Aborting... +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done ) ::======================================================================================================================================== -:: Check Windows Edition +:: Check Windows Edition and branch -set osedition= +set osedition=0 set dismedition= set dismnotworking= -set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformation', 'slc.dll', 22, 1, [int], @([String], [int], [int].MakeByRefType(), [String].MakeByRefType()), 1, 3); -set d1=%d1% $editionName = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformation('Kernel-EditionName', 0, [ref]0, [ref]$editionName); $editionName -if %winbuild% GEQ 14393 for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set osedition=%%s) -if "%osedition%"=="0" set osedition= - -if not defined osedition ( -for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "osedition=%%a" -) - -:: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional - -if %osSKU%==164 set osedition=ProfessionalEducation -if %osSKU%==165 set osedition=ProfessionalEducationN +if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" +%chkedi% do if not errorlevel 1 (call set "osedition=%%a") -for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition %nul6% ^| find /i "Current Edition :"') do set "dismedition=%%a" -if not defined dismedition set dismnotworking=1 - -if defined dismedition if not defined osedition set osedition=%dismedition% - -if not defined osedition ( +if %osedition%==0 ( %eline% -DISM /English /Online /Get-CurrentEdition %nul% -cmd /c exit /b !errorlevel! -echo DISM command failed [Error Code - 0x!=ExitCode!] -echo OS Edition was not detected properly. Aborting... +echo Failed to detect OS Edition. Aborting... echo: -echo Check this page for help. %mas%troubleshoot -goto ced_done +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done ) -::======================================================================================================================================== +for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition %nul6% ^| find /i "Current Edition :"') do set "dismedition=%%a" +if not defined dismedition set dismnotworking=1 set branch= for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch %nul6%') do set "branch=%%b" -:: Check PowerShell - -%psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i "Full" %nul1% || ( -%eline% -%psc% $ExecutionContext.SessionState.LanguageMode -echo: -echo PowerShell is not working. Aborting... -echo If you have applied restrictions on Powershell then undo those changes. -echo: -echo Check this page for help. %mas%troubleshoot -goto ced_done -) - ::======================================================================================================================================== :: Get Target editions list @@ -361,20 +384,25 @@ if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllT if %winbuild% GEQ 10240 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" ( call :ced_edilist -if /i "%osedition:~0,4%"=="Core" (set "_wtarget= Professional !_wtarget! ") -set "_dtarget= %_dtarget% !_wtarget! " +if /i "%osedition:~0,4%"=="Core" set _pro=Professional +if /i "%osedition%"=="CoreN" set _pro=ProfessionalN +set "_dtarget= %_dtarget% !_wtarget! !_pro! " ) ::======================================================================================================================================== -:: Block the change to/from CloudEdition editions - -for %%# in (202 203) do if %osSKU%==%%# ( -%eline% -echo [%winos% ^| SKU:%osSKU% ^| %winbuild%] -echo It's not recommended to change this installed edition to any other. -echo Aborting... -goto ced_done +for %%# in (CloudEdition CloudEditionN ServerRdsh) do if /i %osedition%==%%# ( +cls +echo: +call :dk_color %Red% "==== Note ====" +echo: +echo [EditionID:%osedition% ^| %fullbuild%] +echo: +echo Changing this edition to any other may not remove "%osedition%" specific features. +echo: +call :dk_color %_Yellow% "Press 7 key to continue..." +choice /c 7 /n +cls ) for %%# in ( %_dtarget% %_ptarget% ) do if /i not "%%#"=="%osedition%" ( @@ -383,18 +411,18 @@ echo "!_target!" | find /i " %%# " %nul1% || set "_target= !_target! %%# " if defined _target ( for %%# in (%_target%) do ( -echo %%# | findstr /i "CountrySpecific CloudEdition ServerRdsh" %nul% || (set "_ntarget=!_ntarget! %%#") +echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (set "_ntarget=!_ntarget! %%#") ) ) if not defined _ntarget ( %line% echo: -if defined dismnotworking call :dk_color %Red% "DISM.exe is not responding." +if defined dismnotworking call :dk_color %Red% "DISM.exe is not working." call :dk_color %Gray% "Target Edition not found." echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition. %line% -goto ced_done +goto dk_done ) ::======================================================================================================================================== @@ -402,7 +430,7 @@ goto ced_done :cedmenu2 cls -mode 98, 30 +if not defined terminal mode 98, 30 set inpt= set counter=0 set verified=0 @@ -410,9 +438,9 @@ set targetedition= %line% echo: -call :dk_color %Gray% "You can change the Edition [%osedition%] [%winbuild%] to one of the following." +call :dk_color %Gray% "You can change the Edition [%osedition%] [%fullbuild%] to one of the following." if defined dismnotworking ( -call :dk_color %_Yellow% "Note - DISM.exe is not responding." +call :dk_color %_Yellow% "Note - DISM.exe is not working." if /i "%osedition:~0,4%"=="Core" call :dk_color %_Yellow% " - You will see more edition options to choose once its changed to Pro." ) %line% @@ -442,17 +470,36 @@ if %winbuild% LSS 10240 goto :cbsmethod if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" goto :ced_change_server cls -mode con cols=105 lines=32 +if not defined terminal mode con cols=105 lines=32 + +if /i "%targetedition%"=="ServerRdsh" ( +echo: +call :dk_color %Red% "==== Note ====" +echo: +echo Once the edition is changed to "%targetedition%", +echo system may not be able to properly change edition to any other later. +echo: +echo [1] Continue +echo [0] Go Back +echo: +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +choice /C:10 /N +if !errorlevel!==2 goto cedmenu2 +if !errorlevel!==1 rem +) +cls set key= set _chan= set _dismapi=0 :: Check if DISM Api or slmgr.vbs is required for edition upgrade -if not exist "%SystemRoot%\System32\spp\tokens\skus\%targetedition%\" ( +if not exist "%SysPath%\spp\tokens\skus\%targetedition%\" ( +echo %_wtarget% | find /i " %targetedition% " || ( set _dismapi=1 ) +) set "keyflow=Retail OEM:NONSLP OEM:DM Volume:MAK Volume:GVLK" @@ -460,14 +507,19 @@ call :ced_targetSKU %targetedition% if defined targetSKU call :ced_windowskey if defined key if defined pkeychannel set _chan=%pkeychannel% if not defined key call :changeeditiondata +if not defined key if %_dismapi%==1 if /i "%targetedition%"=="Professional" ( +set key=VK7JG-NPHTM-C97JM-9MPGT-3V6%h%6T +set _chan=Retail +) if not defined key ( %eline% echo [%targetedition% ^| %winbuild%] echo Unable to get product key from pkeyhelper.dll echo: -echo Check this page for help. %mas%troubleshoot -goto ced_done +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done ) ::======================================================================================================================================== @@ -476,21 +528,16 @@ goto ced_done :: In other cases, editions can be changed instantly with "slmgr /ipk" if %_dismapi%==1 ( -mode con cols=105 lines=40 -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':checkrebootflag\:.*';iex ($f[1]);" | find /i "True" %nul% && ( -%eline% -echo Pending Reboot flags found. -echo: -echo Restart the system and try again. -goto ced_done -) +if not defined terminal mode con cols=105 lines=40 +call :ced_rebootflag +if defined rebootreq goto dk_done ) cls %line% echo: -if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not responding." -echo Changing the Current Edition [%osedition%] %winbuild% to [%targetedition%] +if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not working." +echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: if %_dismapi%==1 ( @@ -510,22 +557,22 @@ if !errorlevel!==1 exit /b if %_dismapi%==0 ( echo Installing %_chan% Key [%key%] echo: -if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS='SoftwareLicensingService' call InstallProductKey ProductKey="%key%" %nul% -if %_wmic% EQU 0 %psc% "(([WMISEARCHER]'SELECT Version FROM SoftwareLicensingService').Get()).InstallProductKey('%key%')" %nul% -if not !errorlevel!==0 cscript //nologo %windir%\system32\slmgr.vbs /ipk %key% %nul% - -set error_code=!errorlevel! -cmd /c exit /b !error_code! -if !error_code! NEQ 0 set "error_code=[0x!=ExitCode!]" +if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call InstallProductKey ProductKey="%key%" %nul% +if %_wmic% EQU 0 %psc% "try { $null=(([WMISEARCHER]'SELECT Version FROM %sps%').Get()).InstallProductKey('%key%'); exit 0 } catch { exit $_.Exception.InnerException.HResult }" %nul% +set keyerror=!errorlevel! +cmd /c exit /b !keyerror! +if !keyerror! NEQ 0 set "keyerror=[0x!=ExitCode!]" -if !error_code! EQU 0 ( +if !keyerror! EQU 0 ( call :dk_refresh call :dk_color %Green% "[Successful]" echo: call :dk_color %Gray% "Reboot is required to properly change the Edition." ) else ( -call :dk_color %Red% "[Unsuccessful] [Error Code: 0x!=ExitCode!]" -echo Check this page for help. %mas%troubleshoot +call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]" +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) ) @@ -533,34 +580,33 @@ if %_dismapi%==1 ( echo: echo Applying the DISM API method with %_chan% Key %key%. Please wait... echo: -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':dismapi\:.*';& ([ScriptBlock]::Create($f[1])) %targetedition% %key%;" -timeout /t 3 %nul1% -echo: -call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%change_edition_issues" + +call :ced_prep +if defined preperror goto dk_done + +%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':dismapi\:.*';& ([ScriptBlock]::Create($f[1])) %targetedition% %key%" +call :ced_postprep ) %line% -goto ced_done +goto dk_done ::======================================================================================================================================== :cbsmethod cls +if not defined terminal ( mode con cols=105 lines=32 %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" +) -REM %psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':checkrebootflag\:.*';iex ($f[1]);" | find /i "True" %nul% && ( -REM %eline% -REM echo Pending reboot flags found. -REM echo: -REM echo Restart the system and try again. -REM goto ced_done -REM ) +call :ced_rebootflag +if defined rebootreq goto dk_done echo: -if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not responding." -echo Changing the Current Edition [%osedition%] %winbuild% to [%targetedition%] +if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." +echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: call :dk_color %Blue% "Important - Save your work before continue, system will auto reboot." echo: @@ -571,22 +617,25 @@ echo: echo Initializing... echo: +call :ced_prep +if defined preperror goto dk_done + if %_stg%==0 (set stage=) else (set stage=-StageCurrent) -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -SetEdition %targetedition% %stage%;" -echo: -call :dk_color %Blue% "Incase of errors, you must restart your system before trying again." -echo Check this page for help. %mas%troubleshoot +%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -SetEdition %targetedition% %stage%" +call :ced_postprep %line% -goto ced_done +goto dk_done ::======================================================================================================================================== :ced_change_server cls +if not defined terminal ( mode con cols=105 lines=32 %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" +) set key= set _chan= @@ -602,97 +651,168 @@ if not defined key ( echo [%targetedition% ^| %winbuild%] echo Unable to get product key from pkeyhelper.dll echo: -echo Check this page for help. %mas%troubleshoot -goto ced_done +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done ) -::======================================================================================================================================== - -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':checkrebootflag\:.*';iex ($f[1]);" | find /i "True" %nul% && ( -%eline% -echo Pending reboot flags found. -echo: -echo Restart the system and try again. -goto ced_done -) +call :ced_rebootflag +if defined rebootreq goto dk_done cls echo: -if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not responding." -echo Changing the Current Edition [%osedition%] %winbuild% to [%targetedition%] +if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." +echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: + +call :ced_prep +if defined preperror goto dk_done + echo Applying the command with %_chan% Key echo DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula -call :dk_color %Blue% "You must restart the system at this stage." -echo Help: %mas%troubleshoot +call :ced_postprep ::======================================================================================================================================== -:ced_done +:ced_prep + +set _time= +set preperror= + +for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a + +if not defined _time ( +%eline% +echo Failed to get time with Powershell command. +set preperror=1 +exit /b +) + +%psc% Stop-Service TrustedInstaller -force %nul% +%psc% Stop-Service TrustedInstaller -force %nul% + +sc query TrustedInstaller | find /i "RUNNING" %nul% && ( +%eline% +echo Failed to stop TrustedInstaller service. +echo Try again or Restart your system and then try again. +set preperror=1 +exit /b +) + +copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\backup_cbs_%_time%.log" %nul% +copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\backup_dism_%_time%.log" %nul% + +del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% +del /f /q "%SystemRoot%\logs\DISM\dism.log" %nul% + +for %%# in (%SystemRoot%\logs\cbs\cbs.log %SystemRoot%\logs\DISM\dism.log) do if exist %%# ( +%eline% +echo Failed to backup and delete %%# +echo Try again or Restart your system and then try again. +set preperror=1 +exit /b +) + +:: Initiate this to appear in fresh logs + +dism /online /english /Get-CurrentEdition %nul% +dism /online /english /Get-TargetEditions %nul% +exit /b + +::======================================================================================================================================== + +:ced_postprep + +timeout /t 5 %nul1% + +if not exist "!desktop!\ChangeEdition_Logs\" md "!desktop!\ChangeEdition_Logs\" %nul% +copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "!desktop!\ChangeEdition_Logs\CBS_%_time%.log" %nul% +copy /y /b "%SystemRoot%\logs\DISM\dism.log" "!desktop!\ChangeEdition_Logs\DISM_%_time%.log" %nul% echo: -call :dk_color %_Yellow% "Press any key to %_exitmsg%..." -pause %nul1% +echo Log files are copied to the ChangeEdition_Logs folder on the dekstop. +echo: +call :dk_color %Blue% "In case of errors, you must restart your system before trying again." +echo: +set fixes=%fixes% %mas%change_edition_issues +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" exit /b ::======================================================================================================================================== -:: Check SKU value +:: Set variables -:dk_checksku +:dk_setvar -set osSKU= -set slcSKU= -set wmiSKU= -set regSKU= +set psc=powershell.exe +set winbuild=1 +for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G -if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) -set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SLGetWindowsInformationDWORD', 'slc.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); -set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType()::SLGetWindowsInformationDWORD('%info%', [ref]$Sku); $Sku -for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set slcSKU=%%s) -if "%slcSKU%"=="0" set slcSKU= -if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= +set _NCS=1 +if %winbuild% LSS 10586 set _NCS=0 +if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0" %nul1% && (set _NCS=0) -for /f "tokens=3 delims=." %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v OSProductPfn %nul6%') do set "regSKU=%%a" -if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic Path Win32_OperatingSystem Get OperatingSystemSKU /format:LIST" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" -if %_wmic% EQU 0 for /f "tokens=1" %%a in ('%psc% "([WMI]'Win32_OperatingSystem=@').OperatingSystemSKU" %nul6%') do if not errorlevel 1 set "wmiSKU=%%a" +if %_NCS% EQU 1 ( +for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" +set "Red="41;97m"" +set "Gray="100;97m"" +set "Green="42;97m"" +set "Blue="44;97m"" +set "_Red="40;91m"" +set "_White="40;37m"" +set "_Green="40;92m"" +set "_Yellow="40;93m"" +) else ( +set "Red="Red" "white"" +set "Gray="Darkgray" "white"" +set "Green="DarkGreen" "white"" +set "Blue="Blue" "white"" +set "_Red="Black" "Red"" +set "_White="Black" "Gray"" +set "_Green="Black" "Green"" +set "_Yellow="Black" "Yellow"" +) -set osSKU=%slcSKU% -if not defined osSKU set osSKU=%wmiSKU% -if not defined osSKU set osSKU=%regSKU% +set "nceline=echo: &echo ==== ERROR ==== &echo:" +set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:" +if %~z0 GEQ 200000 ( +set "_exitmsg=Go back" +set "_fixmsg=Go back to Main Menu, select Troubleshoot and run Fix Licensing option." +) else ( +set "_exitmsg=Exit" +set "_fixmsg=In MAS folder, run Troubleshoot script and select Fix Licensing option." +) exit /b +::======================================================================================================================================== + :: Refresh license status :dk_refresh -if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS='SoftwareLicensingService' call RefreshLicenseStatus %nul% -if %_wmic% EQU 0 %psc% "$null=(([WMICLASS]'SoftwareLicensingService').GetInstances()).RefreshLicenseStatus()" %nul% +if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call RefreshLicenseStatus %nul% +if %_wmic% EQU 0 %psc% "$null=(([WMICLASS]'%sps%').GetInstances()).RefreshLicenseStatus()" %nul% exit /b -:: Get Windows Activation IDs +:: Get installed products Activation IDs -:dk_actids +:dk_actid -set applist= -if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path SoftwareLicensingProduct where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f') get ID /VALUE" %nul6%')" -if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT ID FROM SoftwareLicensingProduct WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f''').Get()).ID ^| %% {echo ('ID='+$_)}" %nul6%')" -%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set "applist=%%a")) +set apps= +if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='%1' and PartialProductKey is not null) get ID /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT ID FROM %spp% WHERE ApplicationID=''%1'' AND PartialProductKey IS NOT NULL').Get()).ID ^| %% {echo ('ID='+$_)}" %nul6%')" +%chkapp% do (if defined apps (call set "apps=!apps! %%a") else (call set "apps=%%a")) exit /b :: Get Edition list :ced_edilist -if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path SoftwareLicensingProduct where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f') get LicenseFamily /VALUE" %nul6%')" -if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM SoftwareLicensingProduct WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f''').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" -%chkedi% do ( -call if exist %Systemdrive%\Windows\System32\spp\tokens\skus\%%a ( -call set "_wtarget= !_wtarget! %%a " -) -) +if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL) get LicenseFamily /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" +%chkedi% do call set "_wtarget= !_wtarget! %%a " exit /b :: Check wmic.exe @@ -705,23 +825,20 @@ wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "co ) exit /b -:: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used) - -:dk_product +:: Show info for potential script stuck scenario -call :dk_reflection +:dk_sppissue -set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3); -set d1=%d1% $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%') +sc start sppsvc %nul% +set spperror=%errorlevel% -set winos= -for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s) -echo "%winos%" | find /i "Windows" %nul1% || ( -for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName %nul6%') do set "winos=%%b" -if %winbuild% GEQ 22000 ( -set winos=!winos:Windows 10=Windows 11! -) +if %spperror% NEQ 1056 if %spperror% NEQ 0 ( +%eline% +echo sc start sppsvc [Error Code: %spperror%] ) + +echo: +%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 20)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}" exit /b :: Common lines used in PowerShell reflection code @@ -737,31 +854,26 @@ exit /b :: Check pending reboot flags -:checkrebootflag: -function Test-PendingReboot -{ - if (Test-Path -Path "$env:windir\WinSxS\pending.xml") { return $true } - if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA SilentlyContinue) { return $true } - if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA SilentlyContinue) { return $true } - try { - $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities" - $status = $util.DetermineIfRebootPending() - if(($status -ne $null) -and $status.RebootPending){ - return $true - } - }catch{} - - return $false -} -Test-PendingReboot -:checkrebootflag: +:ced_rebootflag + +set rebootreq= +reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" %nul% && set rebootreq=1 +reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" %nul% && set rebootreq=1 + +if defined rebootreq ( +%eline% +echo Pending Reboot flags found. +echo: +echo Make sure Windows is fully updated, restart the system and try again. +) +exit /b ::======================================================================================================================================== :: Get Product Key from pkeyhelper.dll for future new editions :: It works on Windows 10 1803 (17134) and later builds. -:dk_pkey +:k_pkey call :dk_reflection @@ -772,14 +884,13 @@ set pkey= for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a) exit /b - :: Get channel name for the key which was extracted from pkeyhelper.dll -:dk_pkeychannel +:k_pkeychannel set k=%1 set m=[Runtime.InteropServices.Marshal] -set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms +set p=$env:SysPath\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3); set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8); @@ -793,8 +904,8 @@ exit /b for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b for %%# in (%keyflow%) do ( -call :dk_pkey %targetSKU% '%%#' -if defined pkey call :dk_pkeychannel !pkey! +call :k_pkey %targetSKU% '%%#' +if defined pkey call :k_pkeychannel !pkey! if /i [!pkeychannel!]==[%%#] ( set key=!pkey! exit /b @@ -841,6 +952,29 @@ exit /b ::======================================================================================================================================== +:dk_done + +echo: +if %_unattended%==1 timeout /t 2 & exit /b + +if defined fixes ( +call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +choice /C:10 /N +if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) +) + +if defined terminal ( +call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +choice /c 0 /n +) else ( +call :dk_color %_Yellow% "Press any key to %_exitmsg%..." +pause %nul1% +) + +exit /b + +::======================================================================================================================================== + :: https://github.com/Gamers-Against-Weed/Set-WindowsCbsEdition :cbsxml:[ @@ -1113,45 +1247,45 @@ if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*. set h= for %%# in ( -XGV%h%PP-NM%h%H47-7TT%h%HJ-W%h%3FW7-8HV%h%2C__OEM:NONSLP_Enterprise -D6R%h%D9-D4%h%N8T-RT9%h%QX-Y%h%W6YT-FCW%h%WJ______Retail_Starter -3V6%h%Q6-NQ%h%XCX-V8Y%h%XR-9%h%QCYV-QPF%h%CT__Volume:MAK_EnterpriseN -3NF%h%XW-2T%h%27M-2BD%h%W6-4%h%GHRV-68X%h%RX______Retail_StarterN -VK7%h%JG-NP%h%HTM-C97%h%JM-9%h%MPGT-3V6%h%6T______Retail_Professional -2B8%h%7N-8K%h%FHP-DKV%h%6R-Y%h%2C8J-PKC%h%KT______Retail_ProfessionalN -4CP%h%RK-NM%h%3K3-X6X%h%XQ-R%h%XX86-WXC%h%HW______Retail_CoreN -N24%h%34-X9%h%D7W-8PF%h%6X-8%h%DV9T-8TY%h%MD______Retail_CoreCountrySpecific -BT7%h%9Q-G7%h%N6G-PGB%h%YW-4%h%YWX6-6F4%h%BT______Retail_CoreSingleLanguage -YTM%h%G3-N6%h%DKC-DKB%h%77-7%h%M9GH-8HV%h%X7______Retail_Core -XKC%h%NC-J2%h%6Q9-KFH%h%D2-F%h%KTHY-KD7%h%2Y__OEM:NONSLP_PPIPro -YNM%h%GQ-8R%h%YV3-4PG%h%Q3-C%h%8XTP-7CF%h%BY______Retail_Education -84N%h%GF-MH%h%BT6-FXB%h%X8-Q%h%WJK7-DRR%h%8H______Retail_EducationN -NK9%h%6Y-D9%h%CD8-W44%h%CQ-R%h%8YTK-DYJ%h%WX__OEM:NONSLP_EnterpriseS_RS1 -FWN%h%7H-PF%h%93Q-4GG%h%P8-M%h%8RF3-MDW%h%WW__OEM:NONSLP_EnterpriseS_TH -2DB%h%W3-N2%h%PJG-MVH%h%W3-G%h%7TDK-9HK%h%R4__Volume:MAK_EnterpriseSN_RS1 -NTX%h%6B-BR%h%YC2-K67%h%86-F%h%6MVQ-M7V%h%2X__Volume:MAK_EnterpriseSN_TH -G3K%h%NM-CH%h%G6T-R36%h%X3-9%h%QDG6-8M8%h%K9______Retail_ProfessionalSingleLanguage -HNG%h%CC-Y3%h%8KG-QVK%h%8D-W%h%MWRK-X86%h%VK______Retail_ProfessionalCountrySpecific -DXG%h%7C-N3%h%6C4-C4H%h%TG-X%h%4T3X-2YV%h%77______Retail_ProfessionalWorkstation -WYP%h%NQ-8C%h%467-V2W%h%6J-T%h%X4WX-WT2%h%RQ______Retail_ProfessionalWorkstationN -8PT%h%T6-RN%h%W4C-6V7%h%J2-C%h%2D3X-MHB%h%PB______Retail_ProfessionalEducation -GJT%h%YN-HD%h%MQY-FRR%h%76-H%h%VGC7-QPF%h%8P______Retail_ProfessionalEducationN -C4N%h%TJ-CX%h%6Q2-VXD%h%MR-X%h%VKGM-F9D%h%JC__Volume:MAK_EnterpriseG -46P%h%N6-R9%h%BK9-CVH%h%KB-H%h%WQ9V-MBJ%h%Y8__Volume:MAK_EnterpriseGN -NJC%h%F7-PW%h%8QT-332%h%4D-6%h%88JX-2YV%h%66______Retail_ServerRdsh -V3W%h%VW-N2%h%PV2-CGW%h%C3-3%h%4QGF-VMJ%h%2C______Retail_Cloud -NH9%h%J3-68%h%WK7-6FB%h%93-4%h%K3DF-DJ4%h%F6______Retail_CloudN -2HN%h%6V-HG%h%TM8-6C9%h%7C-R%h%K67V-JQP%h%FD______Retail_CloudE -WC2%h%BQ-8N%h%RM3-FDD%h%YY-2%h%BFGV-KHK%h%QY_Volume:GVLK_ServerStandard%Cor%_RS1 -CB7%h%KF-BW%h%N84-R7R%h%2Y-7%h%93K2-8XD%h%DG_Volume:GVLK_ServerDatacenter%Cor%_RS1 -JCK%h%RF-N3%h%7P4-C2D%h%82-9%h%YXRT-4M6%h%3B_Volume:GVLK_ServerSolution_RS1 -QN4%h%C6-GB%h%JD2-FB4%h%22-G%h%HWJK-GJG%h%2R_Volume:GVLK_ServerCloudStorage_RS1 -VP3%h%4G-4N%h%PPG-79J%h%TQ-8%h%64T4-R3M%h%QX_Volume:GVLK_ServerAzureCor_RS1 -9JQ%h%NQ-V8%h%HQ6-PKB%h%8H-G%h%GHRY-R62%h%H6______Retail_ServerAzureNano_RS1 -VN8%h%D3-PR%h%82H-DB6%h%BJ-J%h%9P4M-92F%h%6J______Retail_ServerStorageStandard_RS1 -48T%h%QX-NV%h%K3R-D8Q%h%R3-G%h%THHM-8FH%h%XC______Retail_ServerStorageWorkgroup_RS1 -2HX%h%DN-KR%h%XHB-GPY%h%C7-Y%h%CKFJ-7FV%h%DG_Volume:GVLK_ServerDatacenterACor_RS3 -PTX%h%N8-JF%h%HJM-4WC%h%78-M%h%PCBR-9W4%h%KR_Volume:GVLK_ServerStandardACor_RS3 +XGVPP-NMH47-7TTHJ-W3FW7-8HV%h%2C__OEM:NONSLP_Enterprise +D6RD9-D4N8T-RT9QX-YW6YT-FCW%h%WJ______Retail_Starter +3V6Q6-NQXCX-V8YXR-9QCYV-QPF%h%CT__Volume:MAK_EnterpriseN +3NFXW-2T27M-2BDW6-4GHRV-68X%h%RX______Retail_StarterN +VK7JG-NPHTM-C97JM-9MPGT-3V6%h%6T______Retail_Professional +2B87N-8KFHP-DKV6R-Y2C8J-PKC%h%KT______Retail_ProfessionalN +4CPRK-NM3K3-X6XXQ-RXX86-WXC%h%HW______Retail_CoreN +N2434-X9D7W-8PF6X-8DV9T-8TY%h%MD______Retail_CoreCountrySpecific +BT79Q-G7N6G-PGBYW-4YWX6-6F4%h%BT______Retail_CoreSingleLanguage +YTMG3-N6DKC-DKB77-7M9GH-8HV%h%X7______Retail_Core +XKCNC-J26Q9-KFHD2-FKTHY-KD7%h%2Y__OEM:NONSLP_PPIPro +YNMGQ-8RYV3-4PGQ3-C8XTP-7CF%h%BY______Retail_Education +84NGF-MHBT6-FXBX8-QWJK7-DRR%h%8H______Retail_EducationN +NK96Y-D9CD8-W44CQ-R8YTK-DYJ%h%WX__OEM:NONSLP_EnterpriseS_RS1 +FWN7H-PF93Q-4GGP8-M8RF3-MDW%h%WW__OEM:NONSLP_EnterpriseS_TH +2DBW3-N2PJG-MVHW3-G7TDK-9HK%h%R4__Volume:MAK_EnterpriseSN_RS1 +NTX6B-BRYC2-K6786-F6MVQ-M7V%h%2X__Volume:MAK_EnterpriseSN_TH +G3KNM-CHG6T-R36X3-9QDG6-8M8%h%K9______Retail_ProfessionalSingleLanguage +HNGCC-Y38KG-QVK8D-WMWRK-X86%h%VK______Retail_ProfessionalCountrySpecific +DXG7C-N36C4-C4HTG-X4T3X-2YV%h%77______Retail_ProfessionalWorkstation +WYPNQ-8C467-V2W6J-TX4WX-WT2%h%RQ______Retail_ProfessionalWorkstationN +8PTT6-RNW4C-6V7J2-C2D3X-MHB%h%PB______Retail_ProfessionalEducation +GJTYN-HDMQY-FRR76-HVGC7-QPF%h%8P______Retail_ProfessionalEducationN +C4NTJ-CX6Q2-VXDMR-XVKGM-F9D%h%JC__Volume:MAK_EnterpriseG +46PN6-R9BK9-CVHKB-HWQ9V-MBJ%h%Y8__Volume:MAK_EnterpriseGN +NJCF7-PW8QT-3324D-688JX-2YV%h%66______Retail_ServerRdsh +V3WVW-N2PV2-CGWC3-34QGF-VMJ%h%2C______Retail_Cloud +NH9J3-68WK7-6FB93-4K3DF-DJ4%h%F6______Retail_CloudN +2HN6V-HGTM8-6C97C-RK67V-JQP%h%FD______Retail_CloudE +WC2BQ-8NRM3-FDDYY-2BFGV-KHK%h%QY_Volume:GVLK_ServerStandard%Cor%_RS1 +CB7KF-BWN84-R7R2Y-793K2-8XD%h%DG_Volume:GVLK_ServerDatacenter%Cor%_RS1 +JCKRF-N37P4-C2D82-9YXRT-4M6%h%3B_Volume:GVLK_ServerSolution_RS1 +QN4C6-GBJD2-FB422-GHWJK-GJG%h%2R_Volume:GVLK_ServerCloudStorage_RS1 +VP34G-4NPPG-79JTQ-864T4-R3M%h%QX_Volume:GVLK_ServerAzureCor_RS1 +9JQNQ-V8HQ6-PKB8H-GGHRY-R62%h%H6______Retail_ServerAzureNano_RS1 +VN8D3-PR82H-DB6BJ-J9P4M-92F%h%6J______Retail_ServerStorageStandard_RS1 +48TQX-NVK3R-D8QR3-GTHHM-8FH%h%XC______Retail_ServerStorageWorkgroup_RS1 +2HXDN-KRXHB-GPYC7-YCKFJ-7FV%h%DG_Volume:GVLK_ServerDatacenterACor_RS3 +PTXN8-JFHJM-4WC78-MPCBR-9W4%h%KR_Volume:GVLK_ServerStandardACor_RS3 ) do ( for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C ( -- cgit v1.2.3 From 816925bfef9715ff730190ee704b4dcde64d0cfc Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Sun, 28 Jul 2024 08:03:09 +0530 Subject: Ignore log deletion error --- MAS/Separate-Files-Version/Change_Edition.cmd | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 2e7b173..21681f7 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -683,13 +683,6 @@ set preperror= for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a -if not defined _time ( -%eline% -echo Failed to get time with Powershell command. -set preperror=1 -exit /b -) - %psc% Stop-Service TrustedInstaller -force %nul% %psc% Stop-Service TrustedInstaller -force %nul% @@ -707,14 +700,6 @@ copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\backup_dism del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% del /f /q "%SystemRoot%\logs\DISM\dism.log" %nul% -for %%# in (%SystemRoot%\logs\cbs\cbs.log %SystemRoot%\logs\DISM\dism.log) do if exist %%# ( -%eline% -echo Failed to backup and delete %%# -echo Try again or Restart your system and then try again. -set preperror=1 -exit /b -) - :: Initiate this to appear in fresh logs dism /online /english /Get-CurrentEdition %nul% -- cgit v1.2.3 From 89bff68b285e2dfecbcef09ac84e3eb8e80d5582 Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Sun, 28 Jul 2024 22:33:18 +0530 Subject: Fix pkeyconfig path --- MAS/Separate-Files-Version/Change_Edition.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 21681f7..44ba387 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -875,7 +875,7 @@ exit /b set k=%1 set m=[Runtime.InteropServices.Marshal] -set p=$env:SysPath\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms +set p=%SysPath%\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3); set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8); -- cgit v1.2.3 From be45752a216f20ba1d9766f35d752d49f7d1aaff Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Tue, 30 Jul 2024 06:21:01 +0530 Subject: Add info about edition ID difference --- MAS/Separate-Files-Version/Change_Edition.cmd | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 44ba387..e945d4e 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -363,6 +363,11 @@ call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" goto dk_done ) +for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "regedition=%%a" +if /i not "%osedition%"=="%regedition%" ( +set "showeditionerror=call :dk_color %_Yellow% "Mismatch found [WMI-%osedition%] [Reg-%regedition%]."" +) + for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition %nul6% ^| find /i "Current Edition :"') do set "dismedition=%%a" if not defined dismedition set dismnotworking=1 @@ -439,6 +444,7 @@ set targetedition= %line% echo: call :dk_color %Gray% "You can change the Edition [%osedition%] [%fullbuild%] to one of the following." +%showeditionerror% if defined dismnotworking ( call :dk_color %_Yellow% "Note - DISM.exe is not working." if /i "%osedition:~0,4%"=="Core" call :dk_color %_Yellow% " - You will see more edition options to choose once its changed to Pro." @@ -536,6 +542,7 @@ if defined rebootreq goto dk_done cls %line% echo: +%showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not working." echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: @@ -605,6 +612,7 @@ call :ced_rebootflag if defined rebootreq goto dk_done echo: +%showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: @@ -661,6 +669,7 @@ if defined rebootreq goto dk_done cls echo: +%showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] echo: -- cgit v1.2.3 From 98027af16deca9cc1183ba67031fa1eb0f94da72 Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Tue, 30 Jul 2024 08:41:48 +0530 Subject: Compress generated logs --- MAS/Separate-Files-Version/Change_Edition.cmd | 41 +++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index e945d4e..dcccf3a 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -693,7 +693,7 @@ set preperror= for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a %psc% Stop-Service TrustedInstaller -force %nul% -%psc% Stop-Service TrustedInstaller -force %nul% +timeout /t 5 %nul1% sc query TrustedInstaller | find /i "RUNNING" %nul% && ( %eline% @@ -719,14 +719,15 @@ exit /b :ced_postprep -timeout /t 5 %nul1% +copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\cbs_%_time%.log" %nul% +copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\dism_%_time%.log" %nul% if not exist "!desktop!\ChangeEdition_Logs\" md "!desktop!\ChangeEdition_Logs\" %nul% -copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "!desktop!\ChangeEdition_Logs\CBS_%_time%.log" %nul% -copy /y /b "%SystemRoot%\logs\DISM\dism.log" "!desktop!\ChangeEdition_Logs\DISM_%_time%.log" %nul% +call :compresslog cbs\cbs_%_time%.log ChangeEdition_Logs\CBS %nul% +call :compresslog DISM\dism_%_time%.log ChangeEdition_Logs\DISM %nul% echo: -echo Log files are copied to the ChangeEdition_Logs folder on the dekstop. +echo Log files are copied to the ChangeEdition_Logs folder on the desktop. echo: call :dk_color %Blue% "In case of errors, you must restart your system before trying again." echo: @@ -734,6 +735,36 @@ set fixes=%fixes% %mas%change_edition_issues call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" exit /b +:compresslog + +:: https://stackoverflow.com/a/46268232 + +set "ddf="%SystemRoot%\Temp\ddf"" +%nul% del /q /f %ddf% +echo/.New Cabinet>%ddf% +echo/.set Cabinet=ON>>%ddf% +echo/.set CabinetFileCountThreshold=0;>>%ddf% +echo/.set Compress=ON>>%ddf% +echo/.set CompressionType=LZX>>%ddf% +echo/.set CompressionLevel=7;>>%ddf% +echo/.set CompressionMemory=21;>>%ddf% +echo/.set FolderFileCountThreshold=0;>>%ddf% +echo/.set FolderSizeThreshold=0;>>%ddf% +echo/.set GenerateInf=OFF>>%ddf% +echo/.set InfFileName=nul>>%ddf% +echo/.set MaxCabinetSize=0;>>%ddf% +echo/.set MaxDiskFileCount=0;>>%ddf% +echo/.set MaxDiskSize=0;>>%ddf% +echo/.set MaxErrors=1;>>%ddf% +echo/.set RptFileName=nul>>%ddf% +echo/.set UniqueFiles=ON>>%ddf% +for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%SystemRoot%\logs\%1"') do ( + echo/"%%~fD" /inf=no;>>%ddf% +) +makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate="!desktop!\%2_%_time%.cab" +del /q /f %ddf% +exit /b + ::======================================================================================================================================== :: Set variables -- cgit v1.2.3 From 66e8cda508671778f478d5577969abe2c0f274ec Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Tue, 30 Jul 2024 08:43:48 +0530 Subject: Add timeout --- MAS/Separate-Files-Version/Change_Edition.cmd | 1 + 1 file changed, 1 insertion(+) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index dcccf3a..3bedfa8 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -719,6 +719,7 @@ exit /b :ced_postprep +timeout /t 5 %nul1% copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\cbs_%_time%.log" %nul% copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\dism_%_time%.log" %nul% -- cgit v1.2.3 From 6c71e82ef338a37ed912b11e06ccffb11e4ee304 Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Tue, 30 Jul 2024 08:56:25 +0530 Subject: Fig a bug in server section --- MAS/Separate-Files-Version/Change_Edition.cmd | 3 +++ 1 file changed, 3 insertions(+) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 3bedfa8..634fe2e 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -682,6 +682,9 @@ echo DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula call :ced_postprep +%line% + +goto dk_done ::======================================================================================================================================== -- cgit v1.2.3 From 3a050f2da742f7b1ec347a3c563bde025094dc6b Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Sun, 4 Aug 2024 14:06:08 +0530 Subject: Fix eval edition change and show .net 3.5 status --- MAS/Separate-Files-Version/Change_Edition.cmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 634fe2e..3657de0 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -507,14 +507,14 @@ set _dismapi=1 ) ) -set "keyflow=Retail OEM:NONSLP OEM:DM Volume:MAK Volume:GVLK" +set "keyflow=Retail Volume:GVLK Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" call :ced_targetSKU %targetedition% if defined targetSKU call :ced_windowskey if defined key if defined pkeychannel set _chan=%pkeychannel% if not defined key call :changeeditiondata if not defined key if %_dismapi%==1 if /i "%targetedition%"=="Professional" ( -set key=VK7JG-NPHTM-C97JM-9MPGT-3V6%h%6T +set key=VK7JG-NPHTM-C97JM-9MPGT-3V66T set _chan=Retail ) @@ -647,7 +647,7 @@ mode con cols=105 lines=32 set key= set _chan= -set "keyflow=Volume:GVLK Retail Volume:MAK OEM:NONSLP OEM:DM" +set "keyflow=Volume:GVLK Retail Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" call :ced_targetSKU %targetedition% if defined targetSKU call :ced_windowskey @@ -696,7 +696,6 @@ set preperror= for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a %psc% Stop-Service TrustedInstaller -force %nul% -timeout /t 5 %nul1% sc query TrustedInstaller | find /i "RUNNING" %nul% && ( %eline% @@ -731,9 +730,10 @@ call :compresslog cbs\cbs_%_time%.log ChangeEdition_Logs\CBS %nul% call :compresslog DISM\dism_%_time%.log ChangeEdition_Logs\DISM %nul% echo: +if %winbuild% GEQ 9200 %psc% "if ((Get-WindowsOptionalFeature -Online -FeatureName NetFx3).State -eq 'Enabled') {Write-Host 'Checking .NET Framework 3.5 Status - Enabled'}" echo Log files are copied to the ChangeEdition_Logs folder on the desktop. echo: -call :dk_color %Blue% "In case of errors, you must restart your system before trying again." +call :dk_color %Blue% "In case of errors, restart system before trying again." echo: set fixes=%fixes% %mas%change_edition_issues call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" -- cgit v1.2.3 From b983bd41dabe0d683c851e7e4d3d9f6c1a13904d Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Mon, 19 Aug 2024 05:29:19 +0530 Subject: Replace square brackets with double quotes in string comparison --- .../Activators/HWID_Activation.cmd | 4 +-- .../Activators/KMS38_Activation.cmd | 4 +-- .../Activators/Ohook_Activation_AIO.cmd | 42 +++++++++++----------- .../Activators/Online_KMS_Activation.cmd | 36 +++++++++---------- MAS/Separate-Files-Version/Change_Edition.cmd | 4 +-- MAS/Separate-Files-Version/Extract_OEM_Folder.cmd | 2 +- MAS/Separate-Files-Version/Troubleshoot.cmd | 4 +-- 7 files changed, 48 insertions(+), 48 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd index e7ff464..25c6754 100644 --- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd @@ -290,7 +290,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -395,7 +395,7 @@ call :dk_showosinfo set _int= for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int ( -for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _int=1) +for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set _int=1) ) if not defined _int ( diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd index 9e25df5..93ca46d 100644 --- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd @@ -293,7 +293,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -1190,7 +1190,7 @@ for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b for %%# in (Volume:GVLK) do ( call :k_pkey %osSKU% '%%#' if defined pkey call :k_pkeychannel !pkey! -if /i [!pkeychannel!]==[%%#] ( +if /i "!pkeychannel!"=="%%#" ( set key=!pkey! exit /b ) diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd index f7046a7..4dcc8f1 100644 --- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd +++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd @@ -283,7 +283,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -520,11 +520,11 @@ echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ") set "_oLPath=%_oRoot%\Licenses" set "_oIntegrator=%_oRoot%\integration\integrator.exe" -if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") -if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") -if not [%osarch%]==[x86] ( -if [%_oArch%]==[x64] set "_sppcPath=%SystemRoot%\System32\sppc.dll" -if [%_oArch%]==[x86] set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" +if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") +if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") +if not "%osarch%"=="x86" ( +if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll" +if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" ) else ( set "_sppcPath=%SystemRoot%\System32\sppc.dll" ) @@ -570,11 +570,11 @@ set _o16c2rIds=%_oIds% set "_oLPath=%_oRoot%\Licenses16" set "_oIntegrator=%_oRoot%\integration\integrator.exe" -if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") -if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") -if not [%osarch%]==[x86] ( -if [%_oArch%]==[x64] set "_sppcPath=%SystemRoot%\System32\sppc.dll" -if [%_oArch%]==[x86] set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" +if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%\vfs\System" & set "_hook=sppc64.dll") +if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%\vfs\SystemX86" & set "_hook=sppc32.dll") +if not "%osarch%"=="x86" ( +if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll" +if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" ) else ( set "_sppcPath=%SystemRoot%\System32\sppc.dll" ) @@ -613,7 +613,7 @@ call :dk_color %Gray% "Checking Old Office With Sub License [Found. Update Of set "kmskey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\0ff1ce15-a989-479d-af46-f275c6370663" echo "%_oIds%" | find /i "Volume" %nul1% && ( if %winbuild% GEQ 9200 ( -if not [%osarch%]==[x86] ( +if not "%osarch%"=="x86" ( reg delete "%kmskey%" /f /reg:32 %nul% reg add "%kmskey%" /f /v KeyManagementServiceName /t REG_SZ /d "10.0.0.10" /reg:32 %nul% ) @@ -976,7 +976,7 @@ set _prod=%%#!_preview! call :ohookdata getinfo !_prod! -if not [!key!]==[] ( +if not "!key!"=="" ( echo "!allapps!" | find /i "!_actid!" %nul1% || call :oh_installlic call :dk_inskey "[!key!] [!_prod!] [!_lic!]" ) else ( @@ -1017,14 +1017,14 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\ProductVersion /v LastPr if "%_oRoot:~-1%"=="\" set "_oRoot=%_oRoot:~0,-1%" echo "%2" | find /i "Wow6432Node" %nul1% && set _oArch=x86 -if not [%osarch%]==[x86] if not defined _oArch set _oArch=x64 -if [%osarch%]==[x86] set _oArch=x86 - -if [%_oArch%]==[x64] (set "_hookPath=%_oRoot%" & set "_hook=sppc64.dll") -if [%_oArch%]==[x86] (set "_hookPath=%_oRoot%" & set "_hook=sppc32.dll") -if not [%osarch%]==[x86] ( -if [%_oArch%]==[x64] set "_sppcPath=%SystemRoot%\System32\sppc.dll" -if [%_oArch%]==[x86] set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" +if not "%osarch%"=="x86" if not defined _oArch set _oArch=x64 +if "%osarch%"=="x86" set _oArch=x86 + +if "%_oArch%"=="x64" (set "_hookPath=%_oRoot%" & set "_hook=sppc64.dll") +if "%_oArch%"=="x86" (set "_hookPath=%_oRoot%" & set "_hook=sppc32.dll") +if not "%osarch%"=="x86" ( +if "%_oArch%"=="x64" set "_sppcPath=%SystemRoot%\System32\sppc.dll" +if "%_oArch%"=="x86" set "_sppcPath=%SystemRoot%\SysWOW64\sppc.dll" ) else ( set "_sppcPath=%SystemRoot%\System32\sppc.dll" ) diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd index 92efa98..8b75815 100644 --- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd @@ -312,7 +312,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -452,7 +452,7 @@ call :dk_showosinfo set _int= for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int ( -for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _int=1) +for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set _int=1) ) if not defined _int ( @@ -1079,7 +1079,7 @@ set _prod=!_altoffid! call :ks_osppready ) -if not [!key!]==[] ( +if not "!key!"=="" ( echo "!allapps!" | find /i "!_actid!" %nul1% || call :oh_installlic call :dk_inskey "[!key!] [!_prod!]" ) else ( @@ -1119,8 +1119,8 @@ for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\ProductVersion /v LastPr if "%_oRoot:~-1%"=="\" set "_oRoot=%_oRoot:~0,-1%" echo "%2" | find /i "Wow6432Node" %nul1% && set _oArch=x86 -if not [%osarch%]==[x86] if not defined _oArch set _oArch=x64 -if [%osarch%]==[x86] set _oArch=x86 +if not "%osarch%"=="x86" if not defined _oArch set _oArch=x64 +if "%osarch%"=="x86" set _oArch=x86 set "_common=%CommonProgramFiles%" if defined PROCESSOR_ARCHITEW6432 set "_common=%CommonProgramW6432%" @@ -1565,12 +1565,12 @@ call :_tasksetserv for %%a in (%srvlist%) do ( for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do ( -if not [%%#]==[] goto _taskIntConnected +if not "%%#"=="" goto _taskIntConnected ) ) nslookup dns.msftncsi.com 2>nul | find "131.107.255.255" 1>nul -if [%errorlevel%]==[0] goto _taskIntConnected +if "%errorlevel%"=="0" goto _taskIntConnected if %loop%==%max_loop% ( set _tserror=1 @@ -1681,14 +1681,14 @@ set /a act_attempt=0 if %act_attempt% GTR 4 exit /b -if not [%act_ok%]==[1] ( +if not "%act_ok%"=="1" ( if not defined _server call :_taskgetserv call :_taskregserv ) if not !server_num! GTR %max_servers% ( -if [%1]==[act_win] if %_kms38% EQU 1 ( +if "%1"=="act_win" if %_kms38% EQU 1 ( set act_ok=1 exit /b ) @@ -1702,7 +1702,7 @@ if !errorcode! EQU 0 ( set act_ok=1 exit /b ) -if [%1]==[act_win] if !errorcode! EQU -1073418187 if %winbuild% LSS 9200 ( +if "%1"=="act_win" if !errorcode! EQU -1073418187 if %winbuild% LSS 9200 ( set act_ok=1 exit /b ) @@ -1717,9 +1717,9 @@ exit /b :_actinfo -if [%1]==[act_win] if not defined t_name (set prodname=%winos%) +if "%1"=="act_win" if not defined t_name (set prodname=%winos%) -if [%1]==[act_win] if %_kms38% EQU 1 ( +if "%1"=="act_win" if %_kms38% EQU 1 ( if defined t_name ( echo %prodname% is already activated with KMS38. ) else ( @@ -1739,7 +1739,7 @@ set _tserror=1 exit /b ) -if %errorcode% EQU -1073418187 if [%1]==[act_win] if %winbuild% LSS 9200 ( +if %errorcode% EQU -1073418187 if "%1"=="act_win" if %winbuild% LSS 9200 ( if defined t_name ( echo %prodname% cannot be KMS-activated on this computer due to unqualified OEM BIOS [0xC004F035]. ) else ( @@ -1784,9 +1784,9 @@ exit /b ) set _actpass=1 -if %gpr% EQU 43200 if [%1]==[act_win] if %winbuild% GEQ 9200 set _actpass=0 +if %gpr% EQU 43200 if "%1"=="act_win" if %winbuild% GEQ 9200 set _actpass=0 if %gpr% EQU 64800 set _actpass=0 -if %gpr% GTR 259200 if [%1]==[act_win] call :_taskchkEnterpriseG _actpass +if %gpr% GTR 259200 if "%1"=="act_win" call :_taskchkEnterpriseG _actpass if %gpr% EQU 259200 set _actpass=0 if %errorcode% EQU 0 if %_actpass% EQU 0 ( @@ -1990,8 +1990,8 @@ set !server%rand%!=1 set /a server_num+=1 (for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %KMS_IP% 2^>nul') do set "KMS_IP=%%a" -if [%KMS_IP%]==[!KMS_IP!] for /f "delims=[] tokens=2" %%# in ('pathping -4 -h 1 -n -p 1 -q 1 -w 1 %KMS_IP% 2^>nul') do set "KMS_IP=%%#" -if not [%KMS_IP%]==[!KMS_IP!] exit /b +if "%KMS_IP%"=="!KMS_IP!" for /f "delims=[] tokens=2" %%# in ('pathping -4 -h 1 -n -p 1 -q 1 -w 1 %KMS_IP% 2^>nul') do set "KMS_IP=%%#" +if not "%KMS_IP%"=="!KMS_IP!" exit /b goto :_taskgetserv ) ::Ver:2.7 @@ -2546,7 +2546,7 @@ for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b for %%# in (Volume:GVLK) do ( call :k_pkey %osSKU% '%%#' if defined pkey call :k_pkeychannel !pkey! -if /i [!pkeychannel!]==[%%#] ( +if /i "!pkeychannel!"=="%%#" ( set key=!pkey! exit /b ) diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 3657de0..0ccfe42 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -248,7 +248,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -935,7 +935,7 @@ for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b for %%# in (%keyflow%) do ( call :k_pkey %targetSKU% '%%#' if defined pkey call :k_pkeychannel !pkey! -if /i [!pkeychannel!]==[%%#] ( +if /i "!pkeychannel!"=="%%#" ( set key=!pkey! exit /b ) diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd index 55db54b..431dc43 100644 --- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd +++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd @@ -242,7 +242,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( diff --git a/MAS/Separate-Files-Version/Troubleshoot.cmd b/MAS/Separate-Files-Version/Troubleshoot.cmd index eeaa116..eea9c95 100644 --- a/MAS/Separate-Files-Version/Troubleshoot.cmd +++ b/MAS/Separate-Files-Version/Troubleshoot.cmd @@ -243,7 +243,7 @@ set -= set old= for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not [%%#]==[] (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) ) if defined old ( @@ -340,7 +340,7 @@ goto :at_back set _int= for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int ( -for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not [%%#]==[] set _int=1) +for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set _int=1) ) echo: -- cgit v1.2.3 From ae48118ddb1742765709bbe3cf447766114db064 Mon Sep 17 00:00:00 2001 From: Adel Aloui Date: Mon, 19 Aug 2024 01:22:08 +0100 Subject: Rephrase text and fix issue #521 --- MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd | 16 ++++++++-------- .../Activators/HWID_Activation.cmd | 2 +- .../Activators/KMS38_Activation.cmd | 4 ++-- .../Activators/Ohook_Activation_AIO.cmd | 4 ++-- .../Activators/Online_KMS_Activation.cmd | 4 ++-- MAS/Separate-Files-Version/Change_Edition.cmd | 4 ++-- MAS/Separate-Files-Version/Extract_OEM_Folder.cmd | 4 ++-- MAS/Separate-Files-Version/Troubleshoot.cmd | 4 ++-- 8 files changed, 21 insertions(+), 21 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd b/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd index b5b0c7a..ee88f49 100644 --- a/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd +++ b/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd @@ -221,7 +221,7 @@ if not defined _MASunattended ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -285,7 +285,7 @@ echo: [8] Help echo: [0] Exit echo: ______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8,0] :" +call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,8,0] :" choice /C:123456780 /N set _erl=%errorlevel% @@ -326,7 +326,7 @@ echo: echo: [0] Go to Main Menu echo: ______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,0] :" +call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,0] :" choice /C:12340 /N set _erl=%errorlevel% @@ -392,7 +392,7 @@ call :_color2 %_White% " [R] " %_Green% "ReadMe" echo: [0] Go Back echo: ________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard:" +call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard:" choice /C:123456789R0 /N set _erl=%errorlevel% @@ -1786,7 +1786,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,0]" choice /C:1230 /N set _el=!errorlevel! if !_el!==4 exit /b @@ -3111,7 +3111,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,0]" choice /C:120 /N set _el=!errorlevel! if !_el!==3 exit /b @@ -4047,7 +4047,7 @@ echo. echo. [0] %_exitmsg% echo. ______________________________________________________________ echo. -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,0]" +call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,0]" choice /C:12345670 /N set _el=%errorlevel% @@ -8799,7 +8799,7 @@ echo: echo: [0] %_exitmsg% echo: _______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" choice /C:1234560 /N set _erl=%errorlevel% diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd index 25c6754..cf32083 100644 --- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd @@ -303,7 +303,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd index 93ca46d..9a0b303 100644 --- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd @@ -306,7 +306,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -339,7 +339,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,0]" choice /C:120 /N set _el=!errorlevel! if !_el!==3 exit /b diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd index 4dcc8f1..a45c9bd 100644 --- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd +++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd @@ -296,7 +296,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -332,7 +332,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,0]" choice /C:1230 /N set _el=!errorlevel! if !_el!==4 exit /b diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd index 8b75815..d6b27d8 100644 --- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd @@ -325,7 +325,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -385,7 +385,7 @@ echo [9] Download Office echo [0] %_exitmsg% echo ______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8,9,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,8,9,0]" choice /C:1234567890 /N set _el=!errorlevel! diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 0ccfe42..23bd0e2 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -261,7 +261,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -488,7 +488,7 @@ echo: echo [1] Continue echo [0] Go Back echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 goto cedmenu2 if !errorlevel!==1 rem diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd index 431dc43..0811c33 100644 --- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd +++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd @@ -255,7 +255,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -349,7 +349,7 @@ call :dk_color2 %_White% " [R] " %_Green% "ReadMe" echo: [0] Exit echo: ________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" choice /C:123456789R0 /N set _erl=%errorlevel% diff --git a/MAS/Separate-Files-Version/Troubleshoot.cmd b/MAS/Separate-Files-Version/Troubleshoot.cmd index eea9c95..40e3c3a 100644 --- a/MAS/Separate-Files-Version/Troubleshoot.cmd +++ b/MAS/Separate-Files-Version/Troubleshoot.cmd @@ -256,7 +256,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -310,7 +310,7 @@ echo: echo: [0] %_exitmsg% echo: _______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" choice /C:1234560 /N set _erl=%errorlevel% -- cgit v1.2.3 From 79bc7b024214490aca891a12202475a22b3de482 Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Mon, 19 Aug 2024 06:17:15 +0530 Subject: Avoid a potential crash in wmic.exe check --- MAS/Separate-Files-Version/Activators/HWID_Activation.cmd | 2 +- MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd | 2 +- MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd | 2 +- MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd | 4 ++-- MAS/Separate-Files-Version/Change_Edition.cmd | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd index 25c6754..4731a7a 100644 --- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd @@ -992,7 +992,7 @@ function ReinstallLicenses() { set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 ) exit /b diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd index 93ca46d..b716d16 100644 --- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd @@ -1090,7 +1090,7 @@ function ReinstallLicenses() { set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 ) exit /b diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd index 4dcc8f1..d06eb46 100644 --- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd +++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd @@ -1458,7 +1458,7 @@ function ReinstallLicenses() { set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 ) exit /b diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd index 8b75815..69b29c0 100644 --- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd @@ -1540,7 +1540,7 @@ set t_name=Run Once Task set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "computersystem" 1>nul && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" 2>nul | find /i "computersystem" 1>nul && set _wmic=1 ) setlocal EnableDelayedExpansion @@ -2446,7 +2446,7 @@ function ReinstallLicenses() { set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 ) exit /b diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 0ccfe42..07855b1 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -850,7 +850,7 @@ exit /b set _wmic=0 for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 ) exit /b -- cgit v1.2.3 From d372b622807e45236d1ab0e71168f15e3045d399 Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Tue, 20 Aug 2024 04:54:16 +0530 Subject: Revert "Merge pull request #542 from alouiadel/dev" This reverts commit 1dfd3f662639ad6f16865be553eed8bf55e5eb30, reversing changes made to 79bc7b024214490aca891a12202475a22b3de482. --- MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd | 16 ++++++++-------- .../Activators/HWID_Activation.cmd | 2 +- .../Activators/KMS38_Activation.cmd | 4 ++-- .../Activators/Ohook_Activation_AIO.cmd | 4 ++-- .../Activators/Online_KMS_Activation.cmd | 4 ++-- MAS/Separate-Files-Version/Change_Edition.cmd | 4 ++-- MAS/Separate-Files-Version/Extract_OEM_Folder.cmd | 4 ++-- MAS/Separate-Files-Version/Troubleshoot.cmd | 4 ++-- 8 files changed, 21 insertions(+), 21 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd b/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd index ee88f49..b5b0c7a 100644 --- a/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd +++ b/MAS/All-In-One-Version/MAS_AIO-CRC32_31F7FD1E.cmd @@ -221,7 +221,7 @@ if not defined _MASunattended ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -285,7 +285,7 @@ echo: [8] Help echo: [0] Exit echo: ______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,8,0] :" +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8,0] :" choice /C:123456780 /N set _erl=%errorlevel% @@ -326,7 +326,7 @@ echo: echo: [0] Go to Main Menu echo: ______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,0] :" +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,0] :" choice /C:12340 /N set _erl=%errorlevel% @@ -392,7 +392,7 @@ call :_color2 %_White% " [R] " %_Green% "ReadMe" echo: [0] Go Back echo: ________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard:" +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard:" choice /C:123456789R0 /N set _erl=%errorlevel% @@ -1786,7 +1786,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,0]" choice /C:1230 /N set _el=!errorlevel! if !_el!==4 exit /b @@ -3111,7 +3111,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,0]" choice /C:120 /N set _el=!errorlevel! if !_el!==3 exit /b @@ -4047,7 +4047,7 @@ echo. echo. [0] %_exitmsg% echo. ______________________________________________________________ echo. -call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,0]" +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,0]" choice /C:12345670 /N set _el=%errorlevel% @@ -8799,7 +8799,7 @@ echo: echo: [0] %_exitmsg% echo: _______________________________________________________________ echo: -call :_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" choice /C:1234560 /N set _erl=%errorlevel% diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd index 996f407..4731a7a 100644 --- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd @@ -303,7 +303,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd index 0abad14..b716d16 100644 --- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd @@ -306,7 +306,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -339,7 +339,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,0]" choice /C:120 /N set _el=!errorlevel! if !_el!==3 exit /b diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd index 0d9e9fc..f9b4e4b 100644 --- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd +++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd @@ -296,7 +296,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -332,7 +332,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,0]" choice /C:1230 /N set _el=!errorlevel! if !_el!==4 exit /b diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd index ad683c0..ae3bc02 100644 --- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd @@ -325,7 +325,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -385,7 +385,7 @@ echo [9] Download Office echo [0] %_exitmsg% echo ______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard [1,2,3,4,5,6,7,8,9,0]" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8,9,0]" choice /C:1234567890 /N set _el=!errorlevel! diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 4199b71..07855b1 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -261,7 +261,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -488,7 +488,7 @@ echo: echo [1] Continue echo [0] Go Back echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 goto cedmenu2 if !errorlevel!==1 rem diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd index c3e4a85..d09a792 100644 --- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd +++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd @@ -255,7 +255,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -349,7 +349,7 @@ call :dk_color2 %_White% " [R] " %_Green% "ReadMe" echo: [0] Exit echo: ________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" choice /C:123456789R0 /N set _erl=%errorlevel% diff --git a/MAS/Separate-Files-Version/Troubleshoot.cmd b/MAS/Separate-Files-Version/Troubleshoot.cmd index 04a3273..873032f 100644 --- a/MAS/Separate-Files-Version/Troubleshoot.cmd +++ b/MAS/Separate-Files-Version/Troubleshoot.cmd @@ -256,7 +256,7 @@ if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option on your keyboard [1,0] :" +call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -310,7 +310,7 @@ echo: echo: [0] %_exitmsg% echo: _______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option on your keyboard :" +call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" choice /C:1234560 /N set _erl=%errorlevel% -- cgit v1.2.3 From 19be25c02969cee1d8e896d012a42f586264f1e9 Mon Sep 17 00:00:00 2001 From: Lyssa Date: Tue, 20 Aug 2024 12:15:06 -0500 Subject: Fix many grammar/spelling issues in the script (#543) * Proof-read Change Edition script * . * Proof-read OEM folder script * Update Change_Edition.cmd * Update Troubleshoot.cmd * Update Troubleshoot.cmd * Update HWID_Activation.cmd * Update HWID_Activation.cmd * Update HWID_Activation.cmd * Update KMS38_Activation.cmd * Add files via upload * Update Change_Edition.cmd * I'm tired * Update Extract_OEM_Folder.cmd * Update Troubleshoot.cmd * Update HWID_Activation.cmd * Update HWID_Activation.cmd * Update HWID_Activation.cmd * finish with hwid * Update KMS38_Activation.cmd * final kms38 update * Update Ohook_Activation_AIO.cmd * start ohook * Update Ohook_Activation_AIO.cmd * Update Online_KMS_Activation.cmd * Update HWID_Activation.cmd * Update KMS38_Activation.cmd * Update Ohook_Activation_AIO.cmd * Update Online_KMS_Activation.cmd * Update Change_Edition.cmd * Update Extract_OEM_Folder.cmd * Update Troubleshoot.cmd --------- Co-authored-by: nekoppai <109633131+nekoppai@users.noreply.github.com> Co-authored-by: WindowsAddict --- .../Activators/HWID_Activation.cmd | 89 +++++++-------- .../Activators/KMS38_Activation.cmd | 101 ++++++++--------- .../Activators/Ohook_Activation_AIO.cmd | 105 +++++++++--------- .../Activators/Online_KMS_Activation.cmd | 75 ++++++------- MAS/Separate-Files-Version/Change_Edition.cmd | 82 +++++++------- MAS/Separate-Files-Version/Extract_OEM_Folder.cmd | 30 +++--- MAS/Separate-Files-Version/Troubleshoot.cmd | 119 +++++++++++---------- 7 files changed, 303 insertions(+), 298 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd index 4731a7a..04d0023 100644 --- a/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/HWID_Activation.cmd @@ -27,7 +27,7 @@ set "_debug=0" ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -160,22 +160,22 @@ call :dk_setvar if %winbuild% LSS 10240 ( %eline% echo Unsupported OS version detected [%winbuild%]. -echo HWID Activation is supported only for Windows 10/11. +echo HWID Activation is only supported on Windows 10/11. echo: -call :dk_color %Blue% "Use Online KMS Activation option." +call :dk_color %Blue% "Use Online KMS activation option." goto dk_done ) if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" ( %eline% -echo HWID Activation is not supported for Windows Server. -call :dk_color %Blue% "Use KMS38 or Online KMS Activation option." +echo HWID Activation is not supported on Windows Server. +call :dk_color %Blue% "Use KMS38 or Online KMS activation option." goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -195,8 +195,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -237,7 +237,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -296,14 +296,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -329,7 +329,7 @@ ClipUp.exe ) do ( if not exist %SysPath%\%%# ( %eline% -echo [%SysPath%\%%#] file is missing. Aborting... +echo [%SysPath%\%%#] file is missing, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -356,12 +356,12 @@ if defined _perm ( cls echo ___________________________________________________________________________________________ echo: -call :dk_color2 %_White% " " %Green% "Checking: %winos% is Permanently Activated." +call :dk_color2 %_White% " " %Green% "%winos% is already permanently activated." call :dk_color2 %_White% " " %Gray% "Activation is not required." echo ___________________________________________________________________________________________ if %_unattended%==1 goto dk_done echo: -choice /C:10 /N /M "> [1] Activate [0] %_exitmsg% : " +choice /C:10 /N /M "> [1] Activate Anyway [0] %_exitmsg% : " if errorlevel 2 exit /b ) cls @@ -375,7 +375,7 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2 %eline% echo [%winos% ^| %winbuild%] echo: -echo Evaluation Editions cannot be activated outside of evaluation period. +echo Evaluation editions cannot be activated outside of their evaluation period. echo: set fixes=%fixes% %mas%evaluation_editions call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions" @@ -408,7 +408,7 @@ echo Checking Internet Connection [Connected%ping_f%] ) else ( set error=1 call :dk_color %Red% "Checking Internet Connection [Not Connected]" -call :dk_color %Blue% "Internet is required for HWID Activation." +call :dk_color %Blue% "Internet is required for HWID activation." ) ::======================================================================================================================================== @@ -457,13 +457,13 @@ if not defined key ( %eline% echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] if not defined skunotfound ( -echo This product does not support HWID Activation. -echo Try KMS38 Activation option. -echo Make sure you are using updated version of the script. +echo This product does not support HWID activation. +echo Make sure you are using the latest version of the script. +echo If you are, then try KMS38 activation option. set fixes=%fixes% %mas% echo %mas% ) else ( -echo Required License files not found in %SysPath%\spp\tokens\skus\ +echo Required license files not found in %SysPath%\spp\tokens\skus\ set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -479,12 +479,12 @@ if defined notworking set error=1 echo: if defined changekey ( -call :dk_color %Blue% "[%altedition%] Edition product key will be used to enable HWID activation." +call :dk_color %Blue% "[%altedition%] edition product key will be used to enable HWID activation." echo: ) if defined winsub ( -call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] found. Script will activate base edition [SKU ID-%regSKU%]." +call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] detected. Script will activate base edition [SKU ID-%regSKU%]." echo: ) @@ -526,7 +526,7 @@ call :hwiddata ticket copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul% if not exist "%tdir%\GenuineTicket.xml" ( -call :dk_color %Red% "Generating GenuineTicket.xml [Failed, aborting the process]" +call :dk_color %Red% "Generating GenuineTicket.xml [Failed, aborting...]" echo [%encoded%] if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul% goto :dl_final @@ -544,7 +544,7 @@ set "_xmlexist=if exist "%tdir%\GenuineTicket.xml"" %_xmlexist% ( set error=1 if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul% -call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]" +call :dk_color %Red% "Installing GenuineTicket.xml [Failed with ClipSVC service restart, wait...]" ) ) @@ -604,7 +604,7 @@ reg delete "%_ident%" /f %nul% reg query "%_ident%" %nul% && ( echo: set error=1 -call :dk_color %Red% "Deleting an IdentityCRL Registry [Failed] [%_ident%]" +call :dk_color %Red% "Deleting IdentityCRL Registry [Failed] [%_ident%]" ) for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% "Start-Job { Restart-Service %%# } | Wait-Job -Timeout 10 | Out-Null") call :dk_refresh @@ -639,7 +639,7 @@ if not defined resfail ( if defined resfail ( set error=1 echo: -call :dk_color %Red% "Checking Licensing Servers [Failed To Connect]" +call :dk_color %Red% "Checking Licensing Servers [Failed to Connect]" set fixes=%fixes% %mas%licensing-servers-issue call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%licensing-servers-issue" ) @@ -702,8 +702,8 @@ call :dk_color %Green% "%winos% is permanently activated with a digital license. ) else ( call :dk_color %Red% "Activation Failed %error_code%" if defined notworking ( -call :dk_color %Blue% "At the time of writing this, HWID Activation was not supported for this product." -call :dk_color %Blue% "Use KMS38 Activation option." +call :dk_color %Blue% "At the time of writing, HWID Activation is not supported for this product." +call :dk_color %Blue% "Use KMS38 activation option instead." ) else ( if not defined error call :dk_color %Blue% "%_fixmsg%" set fixes=%fixes% %mas%troubleshoot @@ -1072,7 +1072,7 @@ set pupfound=%pupfound1%%pupfound2% set hcount=0 for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do ( find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1) -if %hcount%==4 set "results=[AV URLs are blocked in hosts]" +if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]" set wucount=0 for %%# in (wuauserv) do ( @@ -1081,7 +1081,7 @@ for %%G in (DependOnService Description DisplayName ErrorControl ImagePath Objec reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || (set _corrupt=1 & set /a wucount+=1) ) ) -if %wucount% GEQ 1 set "results=%results%[WU registry is corrupt]" +if %wucount% GEQ 1 set "results=%results%[Windows Update registry is corrupt]" sc start sppsvc %nul% echo "%errorlevel%" | findstr "577 225" %nul% && ( @@ -1092,7 +1092,8 @@ if not exist %SysPath%\sppsvc.exe if not exist %SysPath%\alg.exe (set "results=% if not "%results%%pupfound%"=="" ( if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]" -if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection %results%" +if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..." +if defined results call :dk_color %Red% "%results%" set fixes=%fixes% %mas%remove_mal%w%ware call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware" echo: @@ -1111,7 +1112,7 @@ call :dk_chkmal sc query Null %nul% || ( set error=1 set showfix=1 -call :dk_color %Red% "Checking Sandboxing [Found. Script may not work properly.]" +call :dk_color %Red% "Checking Sandboxing [Found, script may not work properly.]" call :dk_color %Blue% "If you are using any third-party antivirus, check if it is blocking the script." echo: ) @@ -1202,7 +1203,7 @@ if defined serv_e ( set error=1 call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( -call :dk_color %Blue% "Restart the system to fix this error." +call :dk_color %Blue% "Restart your system to fix this error." set showfix=1 ) ) @@ -1242,7 +1243,7 @@ for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':w echo "%wpainfo%" | find /i "Error Found" %nul% && ( set error=1 set wpaerror=1 -call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" +call :dk_color %Red% "Checking WPA Registry Errors [%wpainfo%]" ) || ( echo Checking WPA Registry Count [%wpainfo%] ) @@ -1281,7 +1282,7 @@ call :dk_color %Red% "Checking License Files [Not Found] [%osed if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( set error=1 -call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]" +call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]" ) ) ) @@ -1352,7 +1353,7 @@ echo Checking Eval WLMS Service [Found] reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion" %nul% || ( set error=1 -call :dk_color %Red% "Checking HKU\S-1-5-20 Reg [Not Found]" +call :dk_color %Red% "Checking HKU\S-1-5-20 Registry [Not Found]" set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -1377,7 +1378,7 @@ set error=1 reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || ( call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]" set fixes=%fixes% %mas%issues_due_to_gaming_spoofers -call :dk_color2 %Blue% "Possibly Caused By Gaming Spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" +call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" set error=1 set showfix=1 ) @@ -1407,9 +1408,9 @@ set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" %psc% "!d!" %nul% if exist "%tokenstore%\" ( -call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Created Now] [%tokenstore%\]" +call :dk_color %Gray% "Checking SPP Token Folder [Not Found, Created Now] [%tokenstore%\]" ) else ( -call :dk_color %Red% "Checking SPP Token Folder [Not Found. Failed To Create] [%tokenstore%\]" +call :dk_color %Red% "Checking SPP Token Folder [Not Found, Failed to Create] [%tokenstore%\]" set error=1 set showfix=1 ) @@ -1527,7 +1528,7 @@ if ($osVersion.Build -ge $minBuildNumber) { } for ($i=1; $i -le $count; $i++) { if (-not $subkeyHashTable.ContainsKey("$i")) { - Write-Output "Total Keys $count. Error Found- $i key does not exist" + Write-Output "Total Keys $count. Error Found - $i key does not exist." $wpaKey.Close() exit } @@ -1538,7 +1539,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { if ($PSVersionTable.PSVersion.Major -lt 3) { cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1" if ($LASTEXITCODE -ne 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -1546,7 +1547,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { $subkey = $wpaKey.OpenSubKey($_) $p = $subkey.GetValueNames() if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -1585,13 +1586,13 @@ echo: if %_unattended%==1 timeout /t 2 & exit /b if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd index b716d16..20f3766 100644 --- a/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/KMS38_Activation.cmd @@ -30,7 +30,7 @@ set "_debug=0" ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -166,19 +166,19 @@ set "specific_kms=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectio if %winbuild% LSS 14393 ( %eline% echo Unsupported OS version detected [%winbuild%]. -echo KMS38 Activation is supported for Windows 10/11/Server, build 14393 and later. +echo KMS38 activation is only supported on Windows 10/11/Server, build 14393 and later. echo: if %winbuild% LSS 10240 ( -call :dk_color %Blue% "Use Online KMS Activation option." +call :dk_color %Blue% "Use Online KMS activation option." ) else ( -call :dk_color %Blue% "Use HWID Activation option." +call :dk_color %Blue% "Use HWID activation option." ) goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -198,8 +198,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -240,7 +240,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -299,14 +299,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -339,7 +339,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,0]" +call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard [1,2,0]" choice /C:120 /N set _el=!errorlevel! if !_el!==3 exit /b @@ -369,7 +369,7 @@ if not exist %SysPath%\ClipUp.exe if not defined a_cor (set _fmiss=%_fmiss%ClipU if defined _fmiss ( %eline% -echo [%_fmiss%] file is missing. Aborting... +echo [%_fmiss%] file is missing, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -395,12 +395,12 @@ if defined _perm ( cls echo ___________________________________________________________________________________________ echo: -call :dk_color2 %_White% " " %Green% "Checking: %winos% is Permanently Activated." +call :dk_color2 %_White% " " %Green% "%winos% is already permanently activated." call :dk_color2 %_White% " " %Gray% "Activation is not required." echo ___________________________________________________________________________________________ if %_unattended%==1 goto dk_done echo: -choice /C:10 /N /M "> [1] Activate [0] %_exitmsg% : " +choice /C:10 /N /M "> [1] Activate Anyway [0] %_exitmsg% : " if errorlevel 2 exit /b ) cls @@ -425,7 +425,7 @@ echo Server Evaluation cannot be activated. Convert it to full Server OS. echo: call :dk_color %Blue% "Go Back to main menu and use [Change Edition] option." ) else ( -echo Evaluation Editions cannot be activated outside of evaluation period. +echo Evaluation editions cannot be activated outside of their evaluation period. echo: set fixes=%fixes% %mas%evaluation_editions call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%evaluation_editions" @@ -441,9 +441,9 @@ goto dk_done if defined a_cor ( if not exist "!_work!\clipup.exe" ( %eline% -echo clipup.exe doesn't exist in Server Cor/Acor [No GUI] version. -echo It's required for KMS38 Activation. -echo Check below page on how to activate it. +echo clipup.exe doesn't exist in Server Cor/Acor [No GUI] versions. +echo The file is required for KMS38 activation. +echo Check the below page for instructions on how to activate it. set fixes=%fixes% %mas%kms38 echo %mas%kms38 goto dk_done @@ -496,24 +496,24 @@ set /a UBR=0 if %osSKU%==191 if defined altkey if defined altedition ( for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b if %winbuild% LSS 22598 if !UBR! LSS 2788 ( -call :dk_color %Blue% "Windows must to be updated to build 19044.2788 or higher for IotEnterpriseS KMS38 activation." +call :dk_color %Blue% "Windows must be updated to build 19044.2788 or higher for IotEnterpriseS KMS38 activation." ) ) if not defined key if defined notfoundaltactID ( -call :dk_color %Red% "Checking Alternate Edition For KMS38 [%altedition% Activation ID Not Found]" +call :dk_color %Red% "Checking Alternate Edition for KMS38 [%altedition% Activation ID Not Found]" ) if not defined key if not defined _gvlk ( %eline% echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] if not defined skunotfound ( -echo This product does not support KMS38 Activation. -echo Make sure you are using updated version of the script. +echo This product does not support KMS38 activation. +echo Make sure you are using the latest version of the script. set fixes=%fixes% %mas% echo %mas% ) else ( -echo Required License files not found in %SysPath%\spp\tokens\skus\ +echo Required license files were not found in %SysPath%\spp\tokens\skus\ set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -527,12 +527,12 @@ goto dk_done echo: if defined changekey ( -call :dk_color %Blue% "[%altedition%] Edition product key will be used to enable KMS38 activation." +call :dk_color %Blue% "[%altedition%] edition product key will be used to enable KMS38 activation." echo: ) if defined winsub ( -call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] found. Script will activate base edition [SKU ID-%regSKU%]." +call :dk_color %Blue% "Windows Subscription edition [SKU ID-%slcSKU%] found. Script will activate the base edition [SKU ID-%regSKU%]." echo: ) @@ -629,7 +629,7 @@ set "sessionId=TwBTAE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuAD0ANQA7AE8AUwBNAGkAbgBvAHIAV copy /y /b "%tdir%\GenuineTicket" "%tdir%\GenuineTicket.xml" %nul% if not exist "%tdir%\GenuineTicket.xml" ( -call :dk_color %Red% "Generating GenuineTicket.xml [Failed, aborting the process]" +call :dk_color %Red% "Generating GenuineTicket.xml [Failed, aborting...]" if exist "%tdir%\Genuine*" del /f /q "%tdir%\Genuine*" %nul% goto :k_final ) else ( @@ -656,7 +656,7 @@ call :dk_color %Gray% "Stopping sppsvc Service [Failed]" %_xmlexist% ( set error=1 if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul% -call :dk_color %Red% "Installing GenuineTicket.xml [Failed With ClipSVC Service Restart, Wait...]" +call :dk_color %Red% "Installing GenuineTicket.xml [Failed with ClipSVC service restart, wait...]" ) ) @@ -732,16 +732,16 @@ call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" :k_final -:: Remove the added Specific KMS Host (Local Host) if activation is not completed +:: Remove the specific KMS host (LocalHost) added by the script if activation is not completed echo: if not defined _k38 ( %nul% reg delete "HKLM\%specific_kms%" /f %nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f %nul% reg query "HKLM\%specific_kms%" && ( -call :dk_color %Red% "Removing The Added Specific KMS Host [Failed]" +call :dk_color %Red% "Removing the Added Specific KMS Host [Failed]" ) || ( -echo Removing The Added Specific KMS Host [Successful] +echo Removing the Added Specific KMS Host [Successful] ) ) @@ -751,9 +751,9 @@ if defined _k38 ( %psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':regdel\:.*';& ([ScriptBlock]::Create($f[1])) -protect" %nul% reg delete "HKLM\%specific_kms%" /f %nul% reg query "HKLM\%specific_kms%" && ( -echo Protect KMS38 From KMS [Successful] [Locked A Registry Key] +echo Protect KMS38 From KMS [Successful] [Locked a Registry Key] ) || ( -call :dk_color %Red% "Protect KMS38 From KMS [Failed To Lock A Registry Key]" +call :dk_color %Red% "Protect KMS38 From KMS [Failed to Lock a Registry Key]" ) ) @@ -763,9 +763,9 @@ if defined a_cor if exist "%_clipup%" del /f /q "%_clipup%" %nul% if defined a_cor ( if exist "%_clipup%" ( -call :dk_color %Red% "Deleting copied clipup.exe file [Failed]" +call :dk_color %Red% "Deleting Copied clipup.exe File [Failed]" ) else ( -echo Deleting copied clipup.exe file [Successful] +echo Deleting Copied clipup.exe File [Successful] ) ) @@ -1215,7 +1215,7 @@ set pupfound=%pupfound1%%pupfound2% set hcount=0 for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do ( find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1) -if %hcount%==4 set "results=[AV URLs are blocked in hosts]" +if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]" set wucount=0 for %%# in (wuauserv) do ( @@ -1224,7 +1224,7 @@ for %%G in (DependOnService Description DisplayName ErrorControl ImagePath Objec reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || (set _corrupt=1 & set /a wucount+=1) ) ) -if %wucount% GEQ 1 set "results=%results%[WU registry is corrupt]" +if %wucount% GEQ 1 set "results=%results%[Windows Update registry is corrupt]" sc start sppsvc %nul% echo "%errorlevel%" | findstr "577 225" %nul% && ( @@ -1235,7 +1235,8 @@ if not exist %SysPath%\sppsvc.exe if not exist %SysPath%\alg.exe (set "results=% if not "%results%%pupfound%"=="" ( if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]" -if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection %results%" +if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..." +if defined results call :dk_color %Red% "%results%" set fixes=%fixes% %mas%remove_mal%w%ware call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware" echo: @@ -1254,7 +1255,7 @@ call :dk_chkmal sc query Null %nul% || ( set error=1 set showfix=1 -call :dk_color %Red% "Checking Sandboxing [Found. Script may not work properly.]" +call :dk_color %Red% "Checking Sandboxing [Found, script may not work properly.]" call :dk_color %Blue% "If you are using any third-party antivirus, check if it is blocking the script." echo: ) @@ -1345,7 +1346,7 @@ if defined serv_e ( set error=1 call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( -call :dk_color %Blue% "Restart the system to fix this error." +call :dk_color %Blue% "Restart your system to fix this error." set showfix=1 ) ) @@ -1385,7 +1386,7 @@ for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':w echo "%wpainfo%" | find /i "Error Found" %nul% && ( set error=1 set wpaerror=1 -call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" +call :dk_color %Red% "Checking WPA Registry Errors [%wpainfo%]" ) || ( echo Checking WPA Registry Count [%wpainfo%] ) @@ -1424,7 +1425,7 @@ call :dk_color %Red% "Checking License Files [Not Found] [%osed if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( set error=1 -call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]" +call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]" ) ) ) @@ -1495,7 +1496,7 @@ echo Checking Eval WLMS Service [Found] reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion" %nul% || ( set error=1 -call :dk_color %Red% "Checking HKU\S-1-5-20 Reg [Not Found]" +call :dk_color %Red% "Checking HKU\S-1-5-20 Registry [Not Found]" set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -1520,7 +1521,7 @@ set error=1 reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || ( call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]" set fixes=%fixes% %mas%issues_due_to_gaming_spoofers -call :dk_color2 %Blue% "Possibly Caused By Gaming Spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" +call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" set error=1 set showfix=1 ) @@ -1550,9 +1551,9 @@ set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" %psc% "!d!" %nul% if exist "%tokenstore%\" ( -call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Created Now] [%tokenstore%\]" +call :dk_color %Gray% "Checking SPP Token Folder [Not Found, Created Now] [%tokenstore%\]" ) else ( -call :dk_color %Red% "Checking SPP Token Folder [Not Found. Failed To Create] [%tokenstore%\]" +call :dk_color %Red% "Checking SPP Token Folder [Not Found, Failed to Create] [%tokenstore%\]" set error=1 set showfix=1 ) @@ -1670,7 +1671,7 @@ if ($osVersion.Build -ge $minBuildNumber) { } for ($i=1; $i -le $count; $i++) { if (-not $subkeyHashTable.ContainsKey("$i")) { - Write-Output "Total Keys $count. Error Found- $i key does not exist" + Write-Output "Total Keys $count. Error Found - $i key does not exist." $wpaKey.Close() exit } @@ -1681,7 +1682,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { if ($PSVersionTable.PSVersion.Major -lt 3) { cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1" if ($LASTEXITCODE -ne 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -1689,7 +1690,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { $subkey = $wpaKey.OpenSubKey($_) $p = $subkey.GetValueNames() if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -1728,13 +1729,13 @@ echo: if %_unattended%==1 timeout /t 2 & exit /b if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd index f9b4e4b..a95601d 100644 --- a/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd +++ b/MAS/Separate-Files-Version/Activators/Ohook_Activation_AIO.cmd @@ -27,7 +27,7 @@ set "_debug=0" ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -160,15 +160,15 @@ call :dk_setvar if %winbuild% LSS 9200 ( %eline% echo Unsupported OS version detected [%winbuild%]. -echo Ohook Activation is supported on Windows 8 and later and their server equivalent. +echo Ohook Activation is supported only on Windows 8/10/11 and their server equivalents. echo: -call :dk_color %Blue% "Use Online KMS Activation option." +call :dk_color %Blue% "Use Online KMS activation option instead." goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -188,8 +188,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -230,7 +230,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -289,14 +289,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -332,7 +332,7 @@ echo: echo [0] %_exitmsg% echo ____________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,0]" +call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard [1,2,3,0]" choice /C:1230 /N set _el=!errorlevel! if !_el!==4 exit /b @@ -360,7 +360,7 @@ call :dk_chkmal if not exist %SysPath%\sppsvc.exe ( %eline% -echo [%SysPath%\sppsvc.exe] file is missing. Aborting... +echo [%SysPath%\sppsvc.exe] file is missing, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -456,10 +456,10 @@ call :dk_color %Red% "Checking Installed Office [Not Found]" if defined ohub ( echo: -echo You have only Office dashboard app installed, you need to install full Office version. +echo You only have the Office dashboard app installed, you need to install the full version of Office. ) echo: -call :dk_color %Blue% "Download and install Office from below URL and try again." +call :dk_color %Blue% "Download and install Office from the below URL and then try again." echo: set fixes=%fixes% %mas%genuine-installation-media call :dk_color %_Yellow% "%mas%genuine-installation-media" @@ -471,7 +471,7 @@ if not "%o16c2r%%o15c2r%%o16msi%%o15msi%"=="1" set multioffice=1 if not "%o14msi%%o14c2r%%o16uwp%"=="" set multioffice=1 if defined multioffice ( -call :dk_color %Gray% "Checking Multiple Office Install [Found. Recommended to install one version only]" +call :dk_color %Gray% "Checking Multiple Office Install [Found, its recommended to install only one version]" ) ::======================================================================================================================================== @@ -619,7 +619,7 @@ reg add "%kmskey%" /f /v KeyManagementServiceName /t REG_SZ /d "10.0.0.10" /reg: ) reg delete "%kmskey%" /f %nul% reg add "%kmskey%" /f /v KeyManagementServiceName /t REG_SZ /d "10.0.0.10" %nul% -echo Adding a Reg To Prevent Banner [Successful] +echo Adding a Registry to Prevent Banner [Successful] ) ) @@ -667,7 +667,7 @@ call :oh_reset call :oh_getpath echo: -echo Uninstalling Ohook Activation... +echo Uninstalling Ohook activation... echo: if defined o16c2r_reg (for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg% /v InstallPath" %nul6%') do (set "_16CHook=%%b\root\vfs")) @@ -698,7 +698,7 @@ if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" (set _present=1& del /s /f reg query HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( echo: -echo Deleting - Registry keys to skip license check from all ^& future new useraccounts +echo Deleting - Registry keys for skipping license check reg load HKU\DEF_TEMP %SystemDrive%\Users\Default\NTUSER.DAT %nul% reg query HKU\DEF_TEMP\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && reg delete HKU\DEF_TEMP\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f @@ -723,7 +723,7 @@ reg unload HKU\%%# %nul% set "kmskey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\0ff1ce15-a989-479d-af46-f275c6370663" reg query "%kmskey%" %nul% && ( echo: -echo Deleting - Registry keys to prevent non-genuine banner +echo Deleting - Registry keys for preventing non-genuine banner reg delete "%kmskey%" /f ) @@ -735,16 +735,16 @@ echo ___________________________________________________________________________ echo: if not defined _present ( -echo Ohook Activation is not installed. +echo Ohook activation is not installed. ) else ( if defined _unerror ( call :dk_color %Red% "Failed to uninstall Ohook activation." call :oh_checkapps if defined checknames ( call :dk_color %Blue% "Close [!checknames!] and try again." -call :dk_color %Blue% "If its still not resolved then restart system and try again." +call :dk_color %Blue% "If it is still not fixed, then restart your system and try again." ) else ( -call :dk_color %Blue% "Restart system and try again." +call :dk_color %Blue% "Restart your system and try again." ) ) else ( call :dk_color %Green% "Successfully uninstalled Ohook activation." @@ -919,11 +919,11 @@ if not exist "%_hookPath%\sppc.dll" (if not defined ierror set ierror=Copy) echo: if not defined ierror ( -echo Symlinking System's sppc.dll To ["%_hookPath%\sppcs.dll"] [Successful] +echo Symlinking System's sppc.dll to ["%_hookPath%\sppcs.dll"] [Successful] if defined exhook ( -echo Copying Custom %_hook% To ["%_hookPath%\sppc.dll"] [Successful] +echo Copying Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful] ) else ( -echo Extracting Custom %_hook% To ["%_hookPath%\sppc.dll"] [Successful] +echo Extracting Custom %_hook% to ["%_hookPath%\sppc.dll"] [Successful] ) ) else ( set error=1 @@ -932,9 +932,9 @@ echo: call :oh_checkapps if defined checknames ( call :dk_color %Blue% "Close [!checknames!] and try again." -call :dk_color %Blue% "If its still not resolved then restart system and try again." +call :dk_color %Blue% "If it is still not fixed, then restart your system and try again." ) else ( -if /i not "%ierror%"=="Copy" call :dk_color %Blue% "Restart system and try again." +if /i not "%ierror%"=="Copy" call :dk_color %Blue% "Restart your system and try again." if /i "%ierror%"=="Copy" call :dk_color %Blue% "If you are using any third-party antivirus, check if it is blocking the script." ) echo: @@ -982,7 +982,7 @@ call :dk_inskey "[!key!] [!_prod!] [!_lic!]" ) else ( set error=1 call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !_prod! not found in script]" -call :dk_color %Blue% "Make sure you are using Latest MAS script." +call :dk_color %Blue% "Make sure you are using the latest version of MAS." set fixes=%fixes% %mas% call :dk_color %_Yellow% "%mas%" ) @@ -996,7 +996,7 @@ if defined winserver if defined _config ( echo %_oIds% | find /i "Retail" %nul1% && ( set scaIsNeeded=1 reg add %_config% /v SharedComputerLicensing /t REG_SZ /d "1" /f %nul1% -echo Adding SharedComputerLicensing Reg [Successful] [Needed On Server With Retail Office]" +echo Adding SharedComputerLicensing Reg [Successful] [Needed on Server With Retail Office]" ) ) @@ -1043,13 +1043,13 @@ echo Activating Office... [MSI ^| %_version% ^| %_oArch%] if not defined _oBranding ( set error=1 -call :dk_color %Red% "Checking BRANDING.XML [Not Found. Aborting activation...]" +call :dk_color %Red% "Checking BRANDING.XML [Not Found, aborting activation...]" exit /b ) if not defined _oIds ( set error=1 -call :dk_color %Red% "Checking Installed Products [Product IDs not found. Aborting activation...]" +call :dk_color %Red% "Checking Installed Products [Product IDs not found, aborting activation...]" exit /b ) @@ -1190,7 +1190,7 @@ reg delete "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwarePr reg delete "HKU\S-1-5-20\Software\Microsoft\OfficeSoftwareProtectionPlatform\Policies\0ff1ce15-a989-479d-af46-f275c6370663" /f %nul% reg delete "HKU\S-1-5-20\Software\Microsoft\OfficeSoftwareProtectionPlatform\Policies\59a52881-a989-479d-af46-f275c6370663" /f %nul% -echo Clearing Office License Blocks [Successfully Cleared From All %counter% Useraccounts] +echo Clearing Office License Blocks [Successfully cleared from all %counter% user accounts] ::========================== @@ -1208,7 +1208,7 @@ for %%# in (%_sidlist%) do ( reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul% reg add HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% ) -echo Adding Reg Keys To Skip License Check [Successfully Added To All %counter% ^& Future New Useraccounts] +echo Adding Reg Keys to Skip License Check [Successfully added to all %counter% ^& future new user accounts] ) ::========================== @@ -1222,14 +1222,14 @@ reg query HKU\%%# %nul% && set failedtounload=1 if defined failedtoload ( set error=1 -call :dk_color %Red% "Loading Unloaded accounts Registry [Failed For Some Useraccounts]" -call :dk_color %Blue% "Restart the system and try again." +call :dk_color %Red% "Loading Unloaded Accounts Registry [Failed for some user accounts]" +call :dk_color %Blue% "Restart your system and try again." ) if defined failedtounload ( set error=1 -call :dk_color %Red% "Unloading loaded accounts Registry [Failed For Some Useraccounts]" -call :dk_color %Blue% "Restart the system and try again." +call :dk_color %Red% "Unloading Loaded Account Registries [Failed for some user accounts]" +call :dk_color %Blue% "Restart your system and try again." ) exit /b @@ -1524,7 +1524,7 @@ set pupfound=%pupfound1%%pupfound2% set hcount=0 for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do ( find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1) -if %hcount%==4 set "results=[AV URLs are blocked in hosts]" +if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]" set wucount=0 for %%# in (wuauserv) do ( @@ -1533,7 +1533,7 @@ for %%G in (DependOnService Description DisplayName ErrorControl ImagePath Objec reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || (set _corrupt=1 & set /a wucount+=1) ) ) -if %wucount% GEQ 1 set "results=%results%[WU registry is corrupt]" +if %wucount% GEQ 1 set "results=%results%[Windows Update registry is corrupt]" sc start sppsvc %nul% echo "%errorlevel%" | findstr "577 225" %nul% && ( @@ -1544,7 +1544,8 @@ if not exist %SysPath%\sppsvc.exe if not exist %SysPath%\alg.exe (set "results=% if not "%results%%pupfound%"=="" ( if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]" -if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection %results%" +if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..." +if defined results call :dk_color %Red% "%results%" set fixes=%fixes% %mas%remove_mal%w%ware call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware" echo: @@ -1563,7 +1564,7 @@ call :dk_chkmal sc query Null %nul% || ( set error=1 set showfix=1 -call :dk_color %Red% "Checking Sandboxing [Found. Script may not work properly.]" +call :dk_color %Red% "Checking Sandboxing [Found, script may not work properly.]" call :dk_color %Blue% "If you are using any third-party antivirus, check if it is blocking the script." echo: ) @@ -1654,7 +1655,7 @@ if defined serv_e ( set error=1 call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( -call :dk_color %Blue% "Restart the system to fix this error." +call :dk_color %Blue% "Restart your system to fix this error." set showfix=1 ) ) @@ -1694,7 +1695,7 @@ for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':w echo "%wpainfo%" | find /i "Error Found" %nul% && ( set error=1 set wpaerror=1 -call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" +call :dk_color %Red% "Checking WPA Registry Errors [%wpainfo%]" ) || ( echo Checking WPA Registry Count [%wpainfo%] ) @@ -1733,7 +1734,7 @@ call :dk_color %Red% "Checking License Files [Not Found] [%osed if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( set error=1 -call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]" +call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]" ) ) ) @@ -1804,7 +1805,7 @@ echo Checking Eval WLMS Service [Found] reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion" %nul% || ( set error=1 -call :dk_color %Red% "Checking HKU\S-1-5-20 Reg [Not Found]" +call :dk_color %Red% "Checking HKU\S-1-5-20 Registry [Not Found]" set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -1829,7 +1830,7 @@ set error=1 reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || ( call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]" set fixes=%fixes% %mas%issues_due_to_gaming_spoofers -call :dk_color2 %Blue% "Possibly Caused By Gaming Spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" +call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" set error=1 set showfix=1 ) @@ -1859,9 +1860,9 @@ set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" %psc% "!d!" %nul% if exist "%tokenstore%\" ( -call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Created Now] [%tokenstore%\]" +call :dk_color %Gray% "Checking SPP Token Folder [Not Found, Created Now] [%tokenstore%\]" ) else ( -call :dk_color %Red% "Checking SPP Token Folder [Not Found. Failed To Create] [%tokenstore%\]" +call :dk_color %Red% "Checking SPP Token Folder [Not Found, Failed to Create] [%tokenstore%\]" set error=1 set showfix=1 ) @@ -1979,7 +1980,7 @@ if ($osVersion.Build -ge $minBuildNumber) { } for ($i=1; $i -le $count; $i++) { if (-not $subkeyHashTable.ContainsKey("$i")) { - Write-Output "Total Keys $count. Error Found- $i key does not exist" + Write-Output "Total Keys $count. Error Found - $i key does not exist." $wpaKey.Close() exit } @@ -1990,7 +1991,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { if ($PSVersionTable.PSVersion.Major -lt 3) { cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1" if ($LASTEXITCODE -ne 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -1998,7 +1999,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { $subkey = $wpaKey.OpenSubKey($_) $p = $subkey.GetValueNames() if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -2037,13 +2038,13 @@ echo: if %_unattended%==1 timeout /t 2 & exit /b if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd index ae3bc02..c906b8a 100644 --- a/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd +++ b/MAS/Separate-Files-Version/Activators/Online_KMS_Activation.cmd @@ -52,7 +52,7 @@ set "_debug=0" ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -191,13 +191,13 @@ call :dk_setvar if %winbuild% LSS 7600 ( %nceline% echo Unsupported OS version detected [%winbuild%]. -echo Project is supported for Windows 7/8/8.1/10/11 and their Server equivalent. +echo MAS only supports Windows 7/8/8.1/10/11 and their Server equivalents. goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -217,8 +217,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -259,7 +259,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -318,14 +318,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -385,7 +385,7 @@ echo [9] Download Office echo [0] %_exitmsg% echo ______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8,9,0]" +call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard [1,2,3,4,5,6,7,8,9,0]" choice /C:1234567890 /N set _el=!errorlevel! @@ -420,7 +420,7 @@ call :dk_chkmal if not exist %SysPath%\sppsvc.exe ( %eline% -echo [%SysPath%\sppsvc.exe] file is missing. Aborting... +echo [%SysPath%\sppsvc.exe] file is missing, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -508,7 +508,7 @@ if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*EvalCorEditio if defined _eval ( reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% | find /i "Eval" %nul1% && ( -call :dk_color %Red% "Checking Eval Edition [Evaluation Editions cannot be activated outside of evaluation period.]" +call :dk_color %Red% "Checking Evaluation Edition [Evaluation editions cannot be activated outside of evaluation period.]" if defined _evalserv ( call :dk_color %Blue% "Go back to main menu and use [Change Edition] option." @@ -546,7 +546,7 @@ set /a UBR=0 if %osSKU%==191 if defined altkey if defined altedition ( for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b if %winbuild% LSS 22598 if !UBR! LSS 2788 ( -call :dk_color %Blue% "Windows must to be updated to build 19044.2788 or higher for IotEnterpriseS %KS% activation." +call :dk_color %Blue% "Windows must be updated to build 19044.2788 or higher for IotEnterpriseS %KS% activation." ) ) @@ -557,11 +557,11 @@ call :dk_color %Red% "Checking Alternate Edition For %KS% [%altedition% Act if not defined key if not defined _gvlk ( echo [%winos% ^| %winbuild% ^| SKU:%osSKU%] if not defined skunotfound ( -echo This product does not support %KS% Activation. +echo This product does not support %KS% activation. set fixes=%fixes% %mas%unsupported_products_activation call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%unsupported_products_activation" ) else ( -echo Required License files not found in %SysPath%\spp\tokens\skus\ +echo Required license files not found in %SysPath%\spp\tokens\skus\ set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -574,7 +574,7 @@ goto :ks_office :: Install key if defined changekey ( -call :dk_color %Blue% "[%altedition%] Edition product key will be used to enable %KS% activation." +call :dk_color %Blue% "[%altedition%] edition product key will be used to enable %KS% activation." echo: ) @@ -1291,7 +1291,7 @@ reg delete "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion\SoftwarePr reg delete "HKU\S-1-5-20\Software\Microsoft\OfficeSoftwareProtectionPlatform\Policies\0ff1ce15-a989-479d-af46-f275c6370663" /f %nul% reg delete "HKU\S-1-5-20\Software\Microsoft\OfficeSoftwareProtectionPlatform\Policies\59a52881-a989-479d-af46-f275c6370663" /f %nul% -echo Clearing Office License Blocks [Successfully Cleared From All %counter% Useraccounts] +echo Clearing Office License Blocks [Successfully cleared from all %counter% user accounts] ::========================== @@ -1309,7 +1309,7 @@ for %%# in (%_sidlist%) do ( reg delete HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f %nul% reg add HKU\%%#\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /v "TimeOfLastHeartbeatFailure" /t REG_SZ /d "2040-01-01T00:00:00Z" /f %nul% ) -echo Adding Reg Keys To Skip License Check [Successfully Added To All %counter% ^& Future New Useraccounts] +echo Adding Reg Keys to Skip License Check [Successfully added to all %counter% ^& future new user accounts] ) ::========================== @@ -1323,14 +1323,14 @@ reg query HKU\%%# %nul% && set failedtounload=1 if defined failedtoload ( set error=1 -call :dk_color %Red% "Loading Unloaded accounts Registry [Failed For Some Useraccounts]" -call :dk_color %Blue% "Restart the system and try again." +call :dk_color %Red% "Loading Unloaded Accounts Registry [Failed for some user accounts]" +call :dk_color %Blue% "Restart your system and try again." ) if defined failedtounload ( set error=1 -call :dk_color %Red% "Unloading loaded accounts Registry [Failed For Some Useraccounts]" -call :dk_color %Blue% "Restart the system and try again." +call :dk_color %Red% "Unloading Loaded Account Registries [Failed for some user accounts]" +call :dk_color %Blue% "Restart your system and try again." ) exit /b @@ -2573,7 +2573,7 @@ set pupfound=%pupfound1%%pupfound2% set hcount=0 for %%# in (avira.com kaspersky.com virustotal.com mcafee.com) do ( find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1) -if %hcount%==4 set "results=[AV URLs are blocked in hosts]" +if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]" set wucount=0 for %%# in (wuauserv) do ( @@ -2582,7 +2582,7 @@ for %%G in (DependOnService Description DisplayName ErrorControl ImagePath Objec reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || (set _corrupt=1 & set /a wucount+=1) ) ) -if %wucount% GEQ 1 set "results=%results%[WU registry is corrupt]" +if %wucount% GEQ 1 set "results=%results%[Windows Update registry is corrupt]" sc start sppsvc %nul% echo "%errorlevel%" | findstr "577 225" %nul% && ( @@ -2593,7 +2593,8 @@ if not exist %SysPath%\sppsvc.exe if not exist %SysPath%\alg.exe (set "results=% if not "%results%%pupfound%"=="" ( if defined pupfound call :dk_color %Gray% "Checking PUP Activators [Found%pupfound%]" -if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection %results%" +if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..." +if defined results call :dk_color %Red% "%results%" set fixes=%fixes% %mas%remove_mal%w%ware call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%remove_mal%w%ware" echo: @@ -2612,7 +2613,7 @@ call :dk_chkmal sc query Null %nul% || ( set error=1 set showfix=1 -call :dk_color %Red% "Checking Sandboxing [Found. Script may not work properly.]" +call :dk_color %Red% "Checking Sandboxing [Found, script may not work properly.]" call :dk_color %Blue% "If you are using any third-party antivirus, check if it is blocking the script." echo: ) @@ -2703,7 +2704,7 @@ if defined serv_e ( set error=1 call :dk_color %Red% "Starting Services [Failed] [%serv_e%]" echo %serv_e% | findstr /i "ClipSVC-1058 sppsvc-1058" %nul% && ( -call :dk_color %Blue% "Restart the system to fix this error." +call :dk_color %Blue% "Restart your system to fix this error." set showfix=1 ) ) @@ -2743,7 +2744,7 @@ for /f "delims=" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':w echo "%wpainfo%" | find /i "Error Found" %nul% && ( set error=1 set wpaerror=1 -call :dk_color %Red% "Checking WPA Registry Error [%wpainfo%]" +call :dk_color %Red% "Checking WPA Registry Errors [%wpainfo%]" ) || ( echo Checking WPA Registry Count [%wpainfo%] ) @@ -2782,7 +2783,7 @@ call :dk_color %Red% "Checking License Files [Not Found] [%osed if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*-%osedition%-*.mum" ( set error=1 -call :dk_color %Red% "Checking Package File [Not Found] [%osedition%]" +call :dk_color %Red% "Checking Package Files [Not Found] [%osedition%]" ) ) ) @@ -2853,7 +2854,7 @@ echo Checking Eval WLMS Service [Found] reg query "HKU\S-1-5-20\Software\Microsoft\Windows NT\CurrentVersion" %nul% || ( set error=1 -call :dk_color %Red% "Checking HKU\S-1-5-20 Reg [Not Found]" +call :dk_color %Red% "Checking HKU\S-1-5-20 Registry [Not Found]" set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" ) @@ -2878,7 +2879,7 @@ set error=1 reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Plugins\Objects\msft:rm/algorithm/hwid/4.0" /f ba02fed39662 /d %nul% || ( call :dk_color %Red% "Checking SPP Registry Key [Incorrect ModuleId Found]" set fixes=%fixes% %mas%issues_due_to_gaming_spoofers -call :dk_color2 %Blue% "Possibly Caused By Gaming Spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" +call :dk_color2 %Blue% "Most likely caused by HWID spoofers. Help - " %_Yellow% " %mas%issues_due_to_gaming_spoofers" set error=1 set showfix=1 ) @@ -2908,9 +2909,9 @@ set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" %psc% "!d!" %nul% if exist "%tokenstore%\" ( -call :dk_color %Gray% "Checking SPP Token Folder [Not Found. Created Now] [%tokenstore%\]" +call :dk_color %Gray% "Checking SPP Token Folder [Not Found, Created Now] [%tokenstore%\]" ) else ( -call :dk_color %Red% "Checking SPP Token Folder [Not Found. Failed To Create] [%tokenstore%\]" +call :dk_color %Red% "Checking SPP Token Folder [Not Found, Failed to Create] [%tokenstore%\]" set error=1 set showfix=1 ) @@ -3028,7 +3029,7 @@ if ($osVersion.Build -ge $minBuildNumber) { } for ($i=1; $i -le $count; $i++) { if (-not $subkeyHashTable.ContainsKey("$i")) { - Write-Output "Total Keys $count. Error Found- $i key does not exist" + Write-Output "Total Keys $count. Error Found - $i key does not exist." $wpaKey.Close() exit } @@ -3039,7 +3040,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { if ($PSVersionTable.PSVersion.Major -lt 3) { cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1" if ($LASTEXITCODE -ne 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -3047,7 +3048,7 @@ $wpaKey.GetSubKeyNames() | ForEach-Object { $subkey = $wpaKey.OpenSubKey($_) $p = $subkey.GetValueNames() if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]::Binary }).Count -eq 0) { - Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" + Write-Host "Total Keys $count. Error Found - Binary Data is corrupt." $wpaKey.Close() exit } @@ -3086,13 +3087,13 @@ echo: if %_unattended%==1 timeout /t 2 & exit /b if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd index 07855b1..3f84673 100644 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Edition.cmd @@ -19,7 +19,7 @@ set _stg=0 ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -127,13 +127,13 @@ set "line=echo _________________________________________________________________ if %winbuild% LSS 7600 ( %nceline% echo Unsupported OS version detected [%winbuild%]. -echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalents. goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -153,8 +153,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -195,7 +195,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -254,14 +254,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -280,7 +280,7 @@ if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environ if not defined desktop ( %eline% -echo Desktop location was not detected, aborting... +echo Unable to detect Desktop location, aborting... goto dk_done ) @@ -302,7 +302,7 @@ dism.exe ) do ( if not exist %SysPath%\%%# ( %eline% -echo [%SysPath%\%%#] file is missing. Aborting... +echo [%SysPath%\%%#] file is missing, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -335,7 +335,7 @@ if defined UBR (set "fullbuild=%%G.!UBR!") else (set "fullbuild=%%G.%%H") call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f if not defined apps ( %eline% -echo Either key is not insalled or failed to get installed key activation ID. Aborting... +echo Either key is not insalled or script failed to get installed key's activation ID. Aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -356,7 +356,7 @@ if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISE if %osedition%==0 ( %eline% -echo Failed to detect OS Edition. Aborting... +echo Failed to detect OS edition, aborting... echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -376,7 +376,7 @@ for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT ::======================================================================================================================================== -:: Get Target editions list +:: Get target editions list set _target= set _dtarget= @@ -403,9 +403,9 @@ call :dk_color %Red% "==== Note ====" echo: echo [EditionID:%osedition% ^| %fullbuild%] echo: -echo Changing this edition to any other may not remove "%osedition%" specific features. +echo Changing this edition may not remove "%osedition%"-specific features. echo: -call :dk_color %_Yellow% "Press 7 key to continue..." +call :dk_color %_Yellow% "Press [7] to continue anyway..." choice /c 7 /n cls ) @@ -424,7 +424,7 @@ if not defined _ntarget ( %line% echo: if defined dismnotworking call :dk_color %Red% "DISM.exe is not working." -call :dk_color %Gray% "Target Edition not found." +call :dk_color %Gray% "Target editions not found." echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition. %line% goto dk_done @@ -443,7 +443,7 @@ set targetedition= %line% echo: -call :dk_color %Gray% "You can change the Edition [%osedition%] [%fullbuild%] to one of the following." +call :dk_color %Gray% "You can change the edition [%osedition%] [%fullbuild%] to one of the following." %showeditionerror% if defined dismnotworking ( call :dk_color %_Yellow% "Note - DISM.exe is not working." @@ -462,7 +462,7 @@ set targetedition!counter!=%%A echo: echo [0] %_exitmsg% echo: -call :dk_color %_Green% "Enter option number in keyboard, and press "Enter":" +call :dk_color %_Green% "Enter an option number using your keyboard and press Enter to confirm:" set /p inpt= if "%inpt%"=="" goto cedmenu2 if "%inpt%"=="0" exit /b @@ -483,12 +483,12 @@ echo: call :dk_color %Red% "==== Note ====" echo: echo Once the edition is changed to "%targetedition%", -echo system may not be able to properly change edition to any other later. +echo the system may not be able to properly change edition later. echo: -echo [1] Continue +echo [1] Continue Anyway echo [0] Go Back echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 goto cedmenu2 if !errorlevel!==1 rem @@ -499,7 +499,7 @@ set key= set _chan= set _dismapi=0 -:: Check if DISM Api or slmgr.vbs is required for edition upgrade +:: Check if DISM API or slmgr.vbs is required for edition upgrade if not exist "%SysPath%\spp\tokens\skus\%targetedition%\" ( echo %_wtarget% | find /i " %targetedition% " || ( @@ -521,7 +521,7 @@ set _chan=Retail if not defined key ( %eline% echo [%targetedition% ^| %winbuild%] -echo Unable to get product key from pkeyhelper.dll +echo Failed to get product key from pkeyhelper.dll. echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -544,13 +544,13 @@ cls echo: %showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not working." -echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... echo: if %_dismapi%==1 ( -call :dk_color %Green% "Notes-" +call :dk_color %Green% "Notes -" echo: -echo - Save your work before continue, system will auto restart. +echo - Save your work before continuing, the system will auto-restart. echo: echo - You will need to activate with HWID option once the edition is changed. %line% @@ -562,7 +562,7 @@ if !errorlevel!==1 exit /b ::======================================================================================================================================== if %_dismapi%==0 ( -echo Installing %_chan% Key [%key%] +echo Installing %_chan% key [%key%] echo: if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call InstallProductKey ProductKey="%key%" %nul% if %_wmic% EQU 0 %psc% "try { $null=(([WMISEARCHER]'SELECT Version FROM %sps%').Get()).InstallProductKey('%key%'); exit 0 } catch { exit $_.Exception.InnerException.HResult }" %nul% @@ -574,7 +574,7 @@ if !keyerror! EQU 0 ( call :dk_refresh call :dk_color %Green% "[Successful]" echo: -call :dk_color %Gray% "Reboot is required to properly change the Edition." +call :dk_color %Gray% "Reboot is required to fully change the edition." ) else ( call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]" echo: @@ -585,7 +585,7 @@ call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" if %_dismapi%==1 ( echo: -echo Applying the DISM API method with %_chan% Key %key%. Please wait... +echo Applying the DISM API method with %_chan% key %key%. Please wait... echo: call :ced_prep @@ -614,9 +614,9 @@ if defined rebootreq goto dk_done echo: %showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." -echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... echo: -call :dk_color %Blue% "Important - Save your work before continue, system will auto reboot." +call :dk_color %Blue% "Important - Save your work before continuing, the system will auto-restart." echo: choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : " if %errorlevel%==1 exit /b @@ -657,7 +657,7 @@ if not defined key call :changeeditiondata if not defined key ( %eline% echo [%targetedition% ^| %winbuild%] -echo Unable to get product key from pkeyhelper.dll +echo Failed to get product key from pkeyhelper.dll. echo: set fixes=%fixes% %mas%troubleshoot call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" @@ -671,13 +671,13 @@ cls echo: %showeditionerror% if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." -echo Changing the Current Edition [%osedition%] %fullbuild% to [%targetedition%] +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... echo: call :ced_prep if defined preperror goto dk_done -echo Applying the command with %_chan% Key +echo Applying the command with %_chan% key... echo DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula @@ -699,8 +699,8 @@ for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time sc query TrustedInstaller | find /i "RUNNING" %nul% && ( %eline% -echo Failed to stop TrustedInstaller service. -echo Try again or Restart your system and then try again. +echo Failed to stop the TrustedInstaller service. +echo Restart your system and try again. set preperror=1 exit /b ) @@ -731,9 +731,9 @@ call :compresslog DISM\dism_%_time%.log ChangeEdition_Logs\DISM %nul% echo: if %winbuild% GEQ 9200 %psc% "if ((Get-WindowsOptionalFeature -Online -FeatureName NetFx3).State -eq 'Enabled') {Write-Host 'Checking .NET Framework 3.5 Status - Enabled'}" -echo Log files are copied to the ChangeEdition_Logs folder on the desktop. +echo Log files are copied to the ChangeEdition_Logs folder on your desktop. echo: -call :dk_color %Blue% "In case of errors, restart system before trying again." +call :dk_color %Blue% "In case there are errors, you should restart the system before trying again." echo: set fixes=%fixes% %mas%change_edition_issues call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" @@ -891,7 +891,7 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Upd if defined rebootreq ( %eline% -echo Pending Reboot flags found. +echo Pending reboot flags found. echo: echo Make sure Windows is fully updated, restart the system and try again. ) @@ -987,13 +987,13 @@ echo: if %_unattended%==1 timeout /t 2 & exit /b if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd index d09a792..2fb6381 100644 --- a/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd +++ b/MAS/Separate-Files-Version/Extract_OEM_Folder.cmd @@ -14,7 +14,7 @@ ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -121,13 +121,13 @@ call :dk_setvar if %winbuild% LSS 7600 ( %nceline% echo Unsupported OS version detected [%winbuild%]. -echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalents. goto done2 ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -147,8 +147,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto done2 @@ -189,7 +189,7 @@ goto done2 if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto done2 ) @@ -248,14 +248,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -277,7 +277,7 @@ set "_dir=%desktop%\$OEM$\$$\Setup\Scripts" if exist "!desktop!\" ( %eline% -echo Desktop location was not detected, aborting... +echo Unable to detect Desktop location, aborting... goto done2 ) @@ -290,7 +290,7 @@ if not defined terminal mode 78, 30 if exist "!desktop!\$OEM$\" ( echo _____________________________________________________ %eline% -echo $OEM$ folder already exists on the Desktop. +echo The $OEM$ folder already exists on your Desktop. echo _____________________________________________________ goto done2 ) @@ -349,7 +349,7 @@ call :dk_color2 %_White% " [R] " %_Green% "ReadMe" echo: [0] Exit echo: ________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard :" choice /C:123456789R0 /N set _erl=%errorlevel% @@ -681,7 +681,7 @@ cd \ :errorfound %eline% -echo $OEM$ Folder was not created successfully... +echo The script failed to create the $OEM$ folder. goto :done2 :done @@ -689,7 +689,7 @@ goto :done2 echo ______________________________________________________________ echo: call :dk_color %Blue% "%oem%" -call :dk_color %Green% "$OEM$ folder is successfully created on the Desktop." +call :dk_color %Green% "$OEM$ folder was successfully created on your Desktop." echo "%oem%" | find /i "38" %nul% && ( echo: echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^), @@ -701,13 +701,13 @@ echo ______________________________________________________________ echo: if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." diff --git a/MAS/Separate-Files-Version/Troubleshoot.cmd b/MAS/Separate-Files-Version/Troubleshoot.cmd index 873032f..2017d8c 100644 --- a/MAS/Separate-Files-Version/Troubleshoot.cmd +++ b/MAS/Separate-Files-Version/Troubleshoot.cmd @@ -14,7 +14,7 @@ ::======================================================================================================================================== -:: Set Environment variables, it helps if they are misconfigured in the system +:: Set environment variables, it helps if they are misconfigured in the system setlocal EnableExtensions setlocal DisableDelayedExpansion @@ -122,13 +122,13 @@ set "line=______________________________________________________________________ if %winbuild% LSS 7600 ( %nceline% echo Unsupported OS version detected [%winbuild%]. -echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalents. goto dk_done ) ::======================================================================================================================================== -:: Fix special characters limitation in path name +:: Fix special character limitations in path name set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" @@ -148,8 +148,8 @@ setlocal EnableDelayedExpansion echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( if /i not "!_work!"=="!_ttemp!" ( %eline% -echo Script is launched from the temp folder, -echo Most likely you are running the script directly from the archive file. +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. echo: echo Extract the archive file and launch the script from the extracted folder. goto dk_done @@ -190,7 +190,7 @@ goto dk_done if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b %eline% echo This script needs admin rights. -echo To do so, right click on this script and select 'Run as administrator'. +echo Right click on this script and select 'Run as administrator'. goto dk_done ) @@ -249,14 +249,14 @@ if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.6 if defined old ( echo ________________________________________________ %eline% -echo Version %masver% of MAS is outdated. +echo Your version of MAS [%masver%] is outdated. echo ________________________________________________ echo: if not %_unattended%==1 ( echo [1] Get Latest MAS echo [0] Continue Anyway echo: -call :dk_color %_Green% "Enter a menu option in the Keyboard [1,0] :" +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" choice /C:10 /N if !errorlevel!==2 rem if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) @@ -275,7 +275,7 @@ if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environ if not defined desktop ( %eline% -echo Desktop location was not detected, aborting... +echo Unable to detect Desktop location, aborting... goto dk_done ) @@ -310,7 +310,7 @@ echo: echo: [0] %_exitmsg% echo: _______________________________________________________________ echo: -call :dk_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +call :dk_color2 %_White% " " %_Green% "Choose a menu option using your keyboard :" choice /C:1234560 /N set _erl=%errorlevel% @@ -333,8 +333,8 @@ title Dism /English /Online /Cleanup-Image /RestoreHealth if %winbuild% LSS 9200 ( %eline% -echo Unsupported OS version Detected. -echo This command is supported only for Windows 8/8.1/10/11 and their Server equivalent. +echo Unsupported OS version detected. +echo This command only works on Windows 8/8.1/10/11 and their Server equivalents. goto :at_back ) @@ -352,14 +352,14 @@ call :dk_color2 %_White% " " %Red% "Checking Internet Connection [Not conne echo %line% echo: -echo Dism uses Windows Update to provide the files required to fix corruption. +echo DISM uses Windows Update to provide replacement files required to fix corruption. echo This will take 5-15 minutes or more.. echo %line% echo: echo Notes: echo: -call :dk_color2 %_White% " - " %Gray% "Make sure the Internet is connected." -call :dk_color2 %_White% " - " %Gray% "Make sure the Windows update is properly working." +call :dk_color2 %_White% " - " %Gray% "Make sure the internet is connected." +call :dk_color2 %_White% " - " %Gray% "Make sure that Windows update is properly working." echo: echo %line% echo: @@ -379,7 +379,7 @@ del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% del /f /q "%SystemRoot%\logs\DISM\dism.log" %nul% echo: -echo Applying the command, +echo Applying the command... echo dism /english /online /cleanup-image /restorehealth dism /english /online /cleanup-image /restorehealth @@ -400,7 +400,7 @@ copy /y /b "%SystemRoot%\logs\DISM\dism.log" "!desktop!\AT_Logs\RHealth_DISM_%_t ) echo: -call :dk_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on the desktop." +call :dk_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on your desktop." goto :at_back ::======================================================================================================================================== @@ -414,7 +414,8 @@ title sfc /scannow echo: echo %line% echo: -echo System File Checker will repair missing or corrupted system files. +echo SFC will repair missing or corrupted system files. +echo It is recommended you run the DISM option first before this one. echo This will take 10-15 minutes or more.. echo: echo If SFC could not fix something, then run the command again to see if it may be able @@ -435,7 +436,7 @@ copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\backup_cbs_%_t del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% echo: -echo Applying the command, +echo Applying the command... echo sfc /scannow sfc /scannow @@ -450,7 +451,7 @@ copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "!desktop!\AT_Logs\SFC_CBS_%_time%.lo ) echo: -call :dk_color %Gray% "CBS log is copied to the AT_Logs folder on the desktop." +call :dk_color %Gray% "The CBS log was copied to the AT_Logs folder on your Desktop." goto :at_back ::======================================================================================================================================== @@ -469,17 +470,17 @@ echo %line% echo: echo Notes: echo: -echo - It helps in troubleshooting activation issues. +echo - This option helps in troubleshooting activation issues. echo: -echo - This option will, -echo - Deactivate Windows and Office, you may need to reactivate -echo If Windows is activated with motherboard / OEM / Digital license then don't worry +echo - This option will: +echo - Deactivate Windows and Office, you may need to reactivate. +echo If Windows is activated with motherboard / OEM / Digital license then Windows will activate itself again. echo: -echo - Clear ClipSVC, SPP and OSPP licenses -echo - Fix SPP permissions of tokens folder and registries +echo - Clear ClipSVC, SPP and OSPP licenses. +echo - Fix permissions of SPP tokens folder and registries. echo - Trigger the repair option for Office. echo: -call :dk_color2 %_White% " - " %Red% "Apply it only when it is necessary." +call :dk_color2 %_White% " - " %Red% "Apply this option only when it is necessary." echo: echo %line% echo: @@ -496,11 +497,11 @@ cls echo: echo %line% echo: -call :dk_color %Blue% "Rebuilding ClipSVC Licences" +call :dk_color %Blue% "Rebuilding ClipSVC Licenses..." echo: if %winbuild% LSS 10240 ( -echo ClipSVC Licence rebuilding is supported only on Win 10/11 and Server equivalent. +echo ClipSVC license rebuilding is supported only on Windows 10/11 and their Server equivalents. echo Skipping... goto :rebuildspptok ) @@ -516,7 +517,7 @@ echo Stopping ClipSVC service... timeout /t 2 %nul% echo: -echo Applying the command to Clean ClipSVC Licences... +echo Applying the command to clean ClipSVC Licenses... echo rundll32 clipc.dll,ClipCleanUpState rundll32 clipc.dll,ClipCleanUpState @@ -545,15 +546,15 @@ echo Deleting a Volatile ^& Protected Registry Key... echo [%RegKey%] reg query "%RegKey%" %nul% && ( call :dk_color %Red% "[Failed]" -echo Restart the system, that will delete this registry key automatically. +echo Restart your system, that will delete this registry key automatically. ) || ( echo [Successful] ) -:: Clear HWID token related registry to fix activation incase if there is any corruption +:: Clear HWID token related registry to fix activation incase there is any corruption echo: -echo Deleting a IdentityCRL Registry Key... +echo Deleting IdentityCRL Registry Key... echo [%_ident%] reg delete "%_ident%" /f %nul% reg query "%_ident%" %nul% && ( @@ -568,7 +569,7 @@ echo [Successful] echo: if %winbuild% GTR 10240 ( -echo Deleting Folder %ProgramData%\Microsoft\Windows\ClipSVC\ +echo Deleting folder %ProgramData%\Microsoft\Windows\ClipSVC\ rmdir /s /q "C:\ProgramData\Microsoft\Windows\ClipSvc" %nul% if exist "%ProgramData%\Microsoft\Windows\ClipSVC\" ( @@ -578,7 +579,7 @@ echo [Successful] ) echo: -echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ +echo Rebuilding the %ProgramData%\Microsoft\Windows\ClipSVC\ folder... %psc% Start-Service ClipSVC %nul% timeout /t 3 %nul% if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul% @@ -590,7 +591,7 @@ echo [Successful] ) echo: -echo Restarting [wlidsvc LicenseManager] services... +echo Restarting wlidsvc ^& LicenseManager services... for %%# in (wlidsvc LicenseManager) do (%psc% "Start-Job { Restart-Service %%# } | Wait-Job -Timeout 10 | Out-Null") ::======================================================================================================================================== @@ -602,7 +603,7 @@ for %%# in (wlidsvc LicenseManager) do (%psc% "Start-Job { Restart-Service %%# } echo: echo %line% echo: -call :dk_color %Blue% "Rebuilding SPP Licensing Tokens" +call :dk_color %Blue% "Rebuilding SPP licensing tokens..." echo: call :scandat check @@ -684,7 +685,7 @@ echo: ) echo: -echo Reinstalling System Licenses... +echo Reinstalling system licenses... %psc% "Stop-Service sppsvc -force; $sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul% if %errorlevel% NEQ 0 %psc% "$sls = Get-WmiObject SoftwareLicensingService; $f=[io.file]::ReadAllText('!_batp!') -split ':xrm\:.*';iex ($f[1]); ReinstallLicenses" %nul% if %errorlevel% EQU 0 ( @@ -697,7 +698,7 @@ call :scandat check echo: if not defined token ( -call :dk_color %Red% "Failed to rebuilt tokens.dat file." +call :dk_color %Red% "Failed to rebuild tokens.dat file." ) else ( echo tokens.dat file was rebuilt successfully. ) @@ -713,11 +714,11 @@ sc config sppuinotify start= demand echo: echo %line% echo: -call :dk_color %Blue% "Rebuilding OSPP Licensing Tokens" +call :dk_color %Blue% "Rebuilding OSPP licensing tokens..." echo: sc qc osppsvc %nul% || ( -echo OSPP based Office is not installed +echo OSPP-based Office is not installed. echo Skipping rebuilding OSPP tokens... goto :repairoffice ) @@ -745,7 +746,7 @@ echo: ) echo: -echo Starting osppsvc service to generate tokens.dat +echo Starting osppsvc service to generate tokens.dat... %psc% Start-Service osppsvc %nul% call :scandatospp check if not defined token ( @@ -758,7 +759,7 @@ call :scandatospp check echo: if not defined token ( -call :dk_color %Red% "Failed to rebuilt tokens.dat file." +call :dk_color %Red% "Failed to rebuild tokens.dat file." ) else ( echo tokens.dat file was rebuilt successfully. ) @@ -770,7 +771,7 @@ echo tokens.dat file was rebuilt successfully. echo: echo %line% echo: -call :dk_color %Blue% "Repairing Office Licenses" +call :dk_color %Blue% "Repairing Office licenses..." echo: for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b @@ -837,8 +838,8 @@ set /a counter+=1 if %counter% GTR 1 ( %eline% -echo Multiple office versions found. -echo It's recommended to install only one version of office. +echo Multiple Office versions found. +echo It is recommended to only install one version of Office. echo ________________________________________________________________ echo: ) @@ -850,9 +851,9 @@ goto :repairend echo: ) else ( echo: -call :dk_color %_Yellow% "A Window will popup, in that Window you need to select [Quick] Repair Option..." +call :dk_color %_Yellow% "A new window will appear, in that window you need to select [Quick Repair] option." if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to continue..." +call :dk_color %_Yellow% "Press [0] to continue..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to continue..." @@ -862,8 +863,8 @@ pause %nul1% if defined uwp16 ( echo: -echo Note: Skipping repair for Office 16.0 UWP. -echo You need to use reset option in Windows settings for it. +echo Note: Skipping repair for Office 16.0 UWP... +echo You need to use the Reset option in Windows Settings instead. echo ________________________________________________________________ echo: start ms-settings:appsfeatures @@ -875,8 +876,8 @@ if defined c2r14_86 set c2r14=1 if defined c2r14 ( echo: -echo Note: Skipping repair for Office 14.0 C2R -echo You need to use Repair option in Windows settings for it. +echo Note: Skipping repair for Office 14.0 C2R... +echo You need to use the Repair option in Windows Settings for it. echo ________________________________________________________________ echo: start appwiz.cpl @@ -923,7 +924,7 @@ title Fix WMI if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" ( %eline% -echo WMI rebuild is not recommended on Windows Server. Aborting... +echo Rebuilding WMI is not recommended on Windows Server, aborting... goto :at_back ) @@ -941,7 +942,7 @@ call :checkwmi if not defined error ( echo [Working] -echo No need to apply this option. Aborting... +echo No need to apply this option, aborting... goto :at_back ) @@ -956,7 +957,7 @@ for %%G in (DependOnService Description DisplayName ErrorControl ImagePath Objec echo: if defined _corrupt ( %eline% -echo Winmgmt service is corrupted. Aborting... +echo Winmgmt service is corrupted, aborting... goto :at_back ) @@ -1078,7 +1079,7 @@ echo: echo %line% echo: if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." @@ -1122,7 +1123,7 @@ exit /b :checkperms -:: This code checks if SPP has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers. +:: This code checks if SPP has permission access to tokens folder and required registry keys. Incorrect permissions are often set by gaming spoofers. set permerror= if not exist "%tokenstore%\" set "permerror=Error Found In Token Folder" @@ -1370,13 +1371,13 @@ $key.SetAccessControl($acl) echo: if defined fixes ( -call :dk_color2 %Blue% "Press [1] To Open Troubleshoot Page " %Gray% " Press [0] To Ignore" +call :dk_color2 %Blue% "Press [1] to open Troubleshoot page " %Gray% " Press [0] to ignore" choice /C:10 /N if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) ) if defined terminal ( -call :dk_color %_Yellow% "Press 0 key to %_exitmsg%..." +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." choice /c 0 /n ) else ( call :dk_color %_Yellow% "Press any key to %_exitmsg%..." -- cgit v1.2.3 From 0ced0f5d8eaabacb9b4e5d48678ad67a94b6696e Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Mon, 26 Aug 2024 19:46:19 +0530 Subject: Rename filename to Change_Windows_Edition.cmd --- MAS/Separate-Files-Version/Change_Edition.cmd | 1334 -------------------- .../Change_Windows_Edition.cmd | 1334 ++++++++++++++++++++ 2 files changed, 1334 insertions(+), 1334 deletions(-) delete mode 100644 MAS/Separate-Files-Version/Change_Edition.cmd create mode 100644 MAS/Separate-Files-Version/Change_Windows_Edition.cmd (limited to 'MAS/Separate-Files-Version/Change_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Edition.cmd b/MAS/Separate-Files-Version/Change_Edition.cmd deleted file mode 100644 index 3f84673..0000000 --- a/MAS/Separate-Files-Version/Change_Edition.cmd +++ /dev/null @@ -1,1334 +0,0 @@ -@set masver=2.6 -@echo off - - - -::============================================================================ -:: -:: Homepage: mass grave[.]dev -:: Email: mas.help@outlook.com -:: -::============================================================================ - - - -:: To stage current edition while changing edition with CBS Upgrade Method, change 0 to 1 in below line -set _stg=0 - - - -::======================================================================================================================================== - -:: Set environment variables, it helps if they are misconfigured in the system - -setlocal EnableExtensions -setlocal DisableDelayedExpansion - -set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" - -set "SysPath=%SystemRoot%\System32" -set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" -if exist "%SystemRoot%\Sysnative\reg.exe" ( -set "SysPath=%SystemRoot%\Sysnative" -set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%" -) - -set "ComSpec=%SysPath%\cmd.exe" -set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules" - -set "_cmdf=%~f0" -for %%# in (%*) do ( -if /i "%%#"=="r1" set r1=1 -if /i "%%#"=="r2" set r2=1 -) - -:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows -:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows - -if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( -setlocal EnableDelayedExpansion -start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* r1" -exit /b -) - -:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows - -if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 if not defined r2 ( -setlocal EnableDelayedExpansion -start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %* r2" -exit /b -) - -::======================================================================================================================================== - -set "blank=" -set "mas=ht%blank%tps%blank%://mass%blank%grave.dev/" - -:: Check if Null service is working, it's important for the batch script - -sc query Null | find /i "RUNNING" -if %errorlevel% NEQ 0 ( -echo: -echo Null service is not running, script may crash... -echo: -echo: -echo Help - %mas%troubleshoot -echo: -echo: -ping 127.0.0.1 -n 20 -) -cls - -:: Check LF line ending - -pushd "%~dp0" ->nul findstr /v "$" "%~nx0" && ( -echo: -echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing. -echo: -echo: -echo Help - %mas%troubleshoot -echo: -echo: -ping 127.0.0.1 -n 20 >nul -popd -exit /b -) -popd - -::======================================================================================================================================== - -cls -color 07 -title Change Windows Edition %masver% - -set _args= -set _elev= -set _unattended=0 - -set _args=%* -if defined _args set _args=%_args:"=% -if defined _args ( -for %%A in (%_args%) do ( -if /i "%%A"=="-el" set _elev=1 -) -) - -set "nul1=1>nul" -set "nul2=2>nul" -set "nul6=2^>nul" -set "nul=>nul 2>&1" - -call :dk_setvar -set "line=echo ___________________________________________________________________________________________" - -::======================================================================================================================================== - -if %winbuild% LSS 7600 ( -%nceline% -echo Unsupported OS version detected [%winbuild%]. -echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalents. -goto dk_done -) - -::======================================================================================================================================== - -:: Fix special character limitations in path name - -set "_work=%~dp0" -if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" - -set "_batf=%~f0" -set "_batp=%_batf:'=''%" - -set _PSarg="""%~f0""" -el %_args% -set _PSarg=%_PSarg:'=''% - -set "_ttemp=%userprofile%\AppData\Local\Temp" - -setlocal EnableDelayedExpansion - -::======================================================================================================================================== - -echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( -if /i not "!_work!"=="!_ttemp!" ( -%eline% -echo The script was launched from the temp folder. -echo You are most likely running the script directly from the archive file. -echo: -echo Extract the archive file and launch the script from the extracted folder. -goto dk_done -) -) - -::======================================================================================================================================== - -:: Check PowerShell - -REM :PowerShellTest: $ExecutionContext.SessionState.LanguageMode :PowerShellTest: - -cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PowerShellTest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || ( -%eline% -cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" -echo: -cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && ( -echo Failed to run Powershell command but Powershell is working. -call :dk_color %Blue% "Check if your antivirus is blocking the script." -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -) || ( -echo PowerShell is not working. Aborting... -echo If you have applied restrictions on Powershell then undo those changes. -echo: -set fixes=%fixes% %mas%fix_powershell -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell" -) -goto dk_done -) - -::======================================================================================================================================== - -:: Elevate script as admin and pass arguments and preventing loop - -%nul1% fltmc || ( -if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b -%eline% -echo This script needs admin rights. -echo Right click on this script and select 'Run as administrator'. -goto dk_done -) - -::======================================================================================================================================== - -:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app - -if %winbuild% GEQ 17763 ( -set terminal=1 -) else ( -set terminal= -) - -:: Check if script is running in Terminal app - -set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0); -set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128); -set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128); -set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow(); -set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero); - -if defined terminal ( -%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal= -) - -if %_unattended%==1 goto :skipQE -for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE) - -if defined terminal ( -set "launchcmd=start conhost.exe %psc%" -) else ( -set "launchcmd=%psc%" -) - -:: Disable QuickEdit in current session - -set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" -set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" -set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" -set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" - -%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1) -:skipQE - -::======================================================================================================================================== - -:: Check for updates - -set -= -set old= - -for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( -if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) -) - -if defined old ( -echo ________________________________________________ -%eline% -echo Your version of MAS [%masver%] is outdated. -echo ________________________________________________ -echo: -if not %_unattended%==1 ( -echo [1] Get Latest MAS -echo [0] Continue Anyway -echo: -call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" -choice /C:10 /N -if !errorlevel!==2 rem -if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) -) -) - -::======================================================================================================================================== - -setlocal DisableDelayedExpansion - -:: Check desktop location - -set desktop= -for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b" -if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a" - -if not defined desktop ( -%eline% -echo Unable to detect Desktop location, aborting... -goto dk_done -) - -setlocal EnableDelayedExpansion - -::======================================================================================================================================== - -cls -if not defined terminal mode 98, 30 -title Change Windows Edition %masver% - -echo: -echo Initializing... -echo: - -for %%# in ( -sppsvc.exe -dism.exe -) do ( -if not exist %SysPath%\%%# ( -%eline% -echo [%SysPath%\%%#] file is missing, aborting... -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -goto dk_done -) -) - -::======================================================================================================================================== - -set spp=SoftwareLicensingProduct -set sps=SoftwareLicensingService - -call :dk_reflection -call :dk_ckeckwmic -call :dk_sppissue - -for /f "tokens=6-7 delims=[]. " %%i in ('ver') do if not "%%j"=="" ( -set fullbuild=%%i.%%j -) else ( -for /f "tokens=3" %%G in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR" %nul6%') do if not errorlevel 1 set /a "UBR=%%G" -for /f "skip=2 tokens=3,4 delims=. " %%G in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx') do ( -if defined UBR (set "fullbuild=%%G.!UBR!") else (set "fullbuild=%%G.%%H") -) -) - -::======================================================================================================================================== - -:: Check Activation ID - -call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f -if not defined apps ( -%eline% -echo Either key is not insalled or script failed to get installed key's activation ID. Aborting... -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -goto dk_done -) - -::======================================================================================================================================== - -:: Check Windows Edition and branch - -set osedition=0 -set dismedition= -set dismnotworking= - -if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')" -if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" -%chkedi% do if not errorlevel 1 (call set "osedition=%%a") - -if %osedition%==0 ( -%eline% -echo Failed to detect OS edition, aborting... -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -goto dk_done -) - -for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "regedition=%%a" -if /i not "%osedition%"=="%regedition%" ( -set "showeditionerror=call :dk_color %_Yellow% "Mismatch found [WMI-%osedition%] [Reg-%regedition%]."" -) - -for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition %nul6% ^| find /i "Current Edition :"') do set "dismedition=%%a" -if not defined dismedition set dismnotworking=1 - -set branch= -for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch %nul6%') do set "branch=%%b" - -::======================================================================================================================================== - -:: Get target editions list - -set _target= -set _dtarget= -set _ptarget= -set _ntarget= -set _wtarget= - -if %winbuild% GEQ 10240 for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _dtarget (set "_dtarget= !_dtarget! %%a ") else (set "_dtarget= %%a ")) -if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target Edition : "') do (if defined _ptarget (set "_ptarget= !_ptarget! %%a ") else (set "_ptarget= %%a ")) - -if %winbuild% GEQ 10240 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" ( -call :ced_edilist -if /i "%osedition:~0,4%"=="Core" set _pro=Professional -if /i "%osedition%"=="CoreN" set _pro=ProfessionalN -set "_dtarget= %_dtarget% !_wtarget! !_pro! " -) - -::======================================================================================================================================== - -for %%# in (CloudEdition CloudEditionN ServerRdsh) do if /i %osedition%==%%# ( -cls -echo: -call :dk_color %Red% "==== Note ====" -echo: -echo [EditionID:%osedition% ^| %fullbuild%] -echo: -echo Changing this edition may not remove "%osedition%"-specific features. -echo: -call :dk_color %_Yellow% "Press [7] to continue anyway..." -choice /c 7 /n -cls -) - -for %%# in ( %_dtarget% %_ptarget% ) do if /i not "%%#"=="%osedition%" ( -echo "!_target!" | find /i " %%# " %nul1% || set "_target= !_target! %%# " -) - -if defined _target ( -for %%# in (%_target%) do ( -echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (set "_ntarget=!_ntarget! %%#") -) -) - -if not defined _ntarget ( -%line% -echo: -if defined dismnotworking call :dk_color %Red% "DISM.exe is not working." -call :dk_color %Gray% "Target editions not found." -echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition. -%line% -goto dk_done -) - -::======================================================================================================================================== - -:cedmenu2 - -cls -if not defined terminal mode 98, 30 -set inpt= -set counter=0 -set verified=0 -set targetedition= - -%line% -echo: -call :dk_color %Gray% "You can change the edition [%osedition%] [%fullbuild%] to one of the following." -%showeditionerror% -if defined dismnotworking ( -call :dk_color %_Yellow% "Note - DISM.exe is not working." -if /i "%osedition:~0,4%"=="Core" call :dk_color %_Yellow% " - You will see more edition options to choose once its changed to Pro." -) -%line% -echo: - -for %%A in (%_ntarget%) do ( -set /a counter+=1 -echo [!counter!] %%A -set targetedition!counter!=%%A -) - -%line% -echo: -echo [0] %_exitmsg% -echo: -call :dk_color %_Green% "Enter an option number using your keyboard and press Enter to confirm:" -set /p inpt= -if "%inpt%"=="" goto cedmenu2 -if "%inpt%"=="0" exit /b -for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1) -set targetedition=!targetedition%inpt%! -if %verified%==0 goto cedmenu2 - -::======================================================================================================================================== - -if %winbuild% LSS 10240 goto :cbsmethod -if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" goto :ced_change_server - -cls -if not defined terminal mode con cols=105 lines=32 - -if /i "%targetedition%"=="ServerRdsh" ( -echo: -call :dk_color %Red% "==== Note ====" -echo: -echo Once the edition is changed to "%targetedition%", -echo the system may not be able to properly change edition later. -echo: -echo [1] Continue Anyway -echo [0] Go Back -echo: -call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" -choice /C:10 /N -if !errorlevel!==2 goto cedmenu2 -if !errorlevel!==1 rem -) - -cls -set key= -set _chan= -set _dismapi=0 - -:: Check if DISM API or slmgr.vbs is required for edition upgrade - -if not exist "%SysPath%\spp\tokens\skus\%targetedition%\" ( -echo %_wtarget% | find /i " %targetedition% " || ( -set _dismapi=1 -) -) - -set "keyflow=Retail Volume:GVLK Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" - -call :ced_targetSKU %targetedition% -if defined targetSKU call :ced_windowskey -if defined key if defined pkeychannel set _chan=%pkeychannel% -if not defined key call :changeeditiondata -if not defined key if %_dismapi%==1 if /i "%targetedition%"=="Professional" ( -set key=VK7JG-NPHTM-C97JM-9MPGT-3V66T -set _chan=Retail -) - -if not defined key ( -%eline% -echo [%targetedition% ^| %winbuild%] -echo Failed to get product key from pkeyhelper.dll. -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -goto dk_done -) - -::======================================================================================================================================== - -:: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires "changepk /productkey" or DISM Api method and restart -:: In other cases, editions can be changed instantly with "slmgr /ipk" - -if %_dismapi%==1 ( -if not defined terminal mode con cols=105 lines=40 -call :ced_rebootflag -if defined rebootreq goto dk_done -) - -cls -%line% -echo: -%showeditionerror% -if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not working." -echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... -echo: - -if %_dismapi%==1 ( -call :dk_color %Green% "Notes -" -echo: -echo - Save your work before continuing, the system will auto-restart. -echo: -echo - You will need to activate with HWID option once the edition is changed. -%line% -echo: -choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : " -if !errorlevel!==1 exit /b -) - -::======================================================================================================================================== - -if %_dismapi%==0 ( -echo Installing %_chan% key [%key%] -echo: -if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call InstallProductKey ProductKey="%key%" %nul% -if %_wmic% EQU 0 %psc% "try { $null=(([WMISEARCHER]'SELECT Version FROM %sps%').Get()).InstallProductKey('%key%'); exit 0 } catch { exit $_.Exception.InnerException.HResult }" %nul% -set keyerror=!errorlevel! -cmd /c exit /b !keyerror! -if !keyerror! NEQ 0 set "keyerror=[0x!=ExitCode!]" - -if !keyerror! EQU 0 ( -call :dk_refresh -call :dk_color %Green% "[Successful]" -echo: -call :dk_color %Gray% "Reboot is required to fully change the edition." -) else ( -call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]" -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -) -) - -if %_dismapi%==1 ( -echo: -echo Applying the DISM API method with %_chan% key %key%. Please wait... -echo: - -call :ced_prep -if defined preperror goto dk_done - -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':dismapi\:.*';& ([ScriptBlock]::Create($f[1])) %targetedition% %key%" -call :ced_postprep -) -%line% - -goto dk_done - -::======================================================================================================================================== - -:cbsmethod - -cls -if not defined terminal ( -mode con cols=105 lines=32 -%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" -) - -call :ced_rebootflag -if defined rebootreq goto dk_done - -echo: -%showeditionerror% -if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." -echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... -echo: -call :dk_color %Blue% "Important - Save your work before continuing, the system will auto-restart." -echo: -choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : " -if %errorlevel%==1 exit /b - -echo: -echo Initializing... -echo: - -call :ced_prep -if defined preperror goto dk_done - -if %_stg%==0 (set stage=) else (set stage=-StageCurrent) -%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -SetEdition %targetedition% %stage%" -call :ced_postprep -%line% - -goto dk_done - -::======================================================================================================================================== - -:ced_change_server - -cls -if not defined terminal ( -mode con cols=105 lines=32 -%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" -) - -set key= -set _chan= -set "keyflow=Volume:GVLK Retail Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" - -call :ced_targetSKU %targetedition% -if defined targetSKU call :ced_windowskey -if defined key if defined pkeychannel set _chan=%pkeychannel% -if not defined key call :changeeditiondata - -if not defined key ( -%eline% -echo [%targetedition% ^| %winbuild%] -echo Failed to get product key from pkeyhelper.dll. -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -goto dk_done -) - -call :ced_rebootflag -if defined rebootreq goto dk_done - -cls -echo: -%showeditionerror% -if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." -echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... -echo: - -call :ced_prep -if defined preperror goto dk_done - -echo Applying the command with %_chan% key... -echo DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula -DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula - -call :ced_postprep -%line% - -goto dk_done - -::======================================================================================================================================== - -:ced_prep - -set _time= -set preperror= - -for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a - -%psc% Stop-Service TrustedInstaller -force %nul% - -sc query TrustedInstaller | find /i "RUNNING" %nul% && ( -%eline% -echo Failed to stop the TrustedInstaller service. -echo Restart your system and try again. -set preperror=1 -exit /b -) - -copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\backup_cbs_%_time%.log" %nul% -copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\backup_dism_%_time%.log" %nul% - -del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% -del /f /q "%SystemRoot%\logs\DISM\dism.log" %nul% - -:: Initiate this to appear in fresh logs - -dism /online /english /Get-CurrentEdition %nul% -dism /online /english /Get-TargetEditions %nul% -exit /b - -::======================================================================================================================================== - -:ced_postprep - -timeout /t 5 %nul1% -copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\cbs_%_time%.log" %nul% -copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\dism_%_time%.log" %nul% - -if not exist "!desktop!\ChangeEdition_Logs\" md "!desktop!\ChangeEdition_Logs\" %nul% -call :compresslog cbs\cbs_%_time%.log ChangeEdition_Logs\CBS %nul% -call :compresslog DISM\dism_%_time%.log ChangeEdition_Logs\DISM %nul% - -echo: -if %winbuild% GEQ 9200 %psc% "if ((Get-WindowsOptionalFeature -Online -FeatureName NetFx3).State -eq 'Enabled') {Write-Host 'Checking .NET Framework 3.5 Status - Enabled'}" -echo Log files are copied to the ChangeEdition_Logs folder on your desktop. -echo: -call :dk_color %Blue% "In case there are errors, you should restart the system before trying again." -echo: -set fixes=%fixes% %mas%change_edition_issues -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" -exit /b - -:compresslog - -:: https://stackoverflow.com/a/46268232 - -set "ddf="%SystemRoot%\Temp\ddf"" -%nul% del /q /f %ddf% -echo/.New Cabinet>%ddf% -echo/.set Cabinet=ON>>%ddf% -echo/.set CabinetFileCountThreshold=0;>>%ddf% -echo/.set Compress=ON>>%ddf% -echo/.set CompressionType=LZX>>%ddf% -echo/.set CompressionLevel=7;>>%ddf% -echo/.set CompressionMemory=21;>>%ddf% -echo/.set FolderFileCountThreshold=0;>>%ddf% -echo/.set FolderSizeThreshold=0;>>%ddf% -echo/.set GenerateInf=OFF>>%ddf% -echo/.set InfFileName=nul>>%ddf% -echo/.set MaxCabinetSize=0;>>%ddf% -echo/.set MaxDiskFileCount=0;>>%ddf% -echo/.set MaxDiskSize=0;>>%ddf% -echo/.set MaxErrors=1;>>%ddf% -echo/.set RptFileName=nul>>%ddf% -echo/.set UniqueFiles=ON>>%ddf% -for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%SystemRoot%\logs\%1"') do ( - echo/"%%~fD" /inf=no;>>%ddf% -) -makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate="!desktop!\%2_%_time%.cab" -del /q /f %ddf% -exit /b - -::======================================================================================================================================== - -:: Set variables - -:dk_setvar - -set psc=powershell.exe -set winbuild=1 -for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G - -set _NCS=1 -if %winbuild% LSS 10586 set _NCS=0 -if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0" %nul1% && (set _NCS=0) - -if %_NCS% EQU 1 ( -for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" -set "Red="41;97m"" -set "Gray="100;97m"" -set "Green="42;97m"" -set "Blue="44;97m"" -set "_Red="40;91m"" -set "_White="40;37m"" -set "_Green="40;92m"" -set "_Yellow="40;93m"" -) else ( -set "Red="Red" "white"" -set "Gray="Darkgray" "white"" -set "Green="DarkGreen" "white"" -set "Blue="Blue" "white"" -set "_Red="Black" "Red"" -set "_White="Black" "Gray"" -set "_Green="Black" "Green"" -set "_Yellow="Black" "Yellow"" -) - -set "nceline=echo: &echo ==== ERROR ==== &echo:" -set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:" -if %~z0 GEQ 200000 ( -set "_exitmsg=Go back" -set "_fixmsg=Go back to Main Menu, select Troubleshoot and run Fix Licensing option." -) else ( -set "_exitmsg=Exit" -set "_fixmsg=In MAS folder, run Troubleshoot script and select Fix Licensing option." -) -exit /b - -::======================================================================================================================================== - -:: Refresh license status - -:dk_refresh - -if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call RefreshLicenseStatus %nul% -if %_wmic% EQU 0 %psc% "$null=(([WMICLASS]'%sps%').GetInstances()).RefreshLicenseStatus()" %nul% -exit /b - -:: Get installed products Activation IDs - -:dk_actid - -set apps= -if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='%1' and PartialProductKey is not null) get ID /VALUE" %nul6%')" -if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT ID FROM %spp% WHERE ApplicationID=''%1'' AND PartialProductKey IS NOT NULL').Get()).ID ^| %% {echo ('ID='+$_)}" %nul6%')" -%chkapp% do (if defined apps (call set "apps=!apps! %%a") else (call set "apps=%%a")) -exit /b - -:: Get Edition list - -:ced_edilist - -if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL) get LicenseFamily /VALUE" %nul6%')" -if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" -%chkedi% do call set "_wtarget= !_wtarget! %%a " -exit /b - -:: Check wmic.exe - -:dk_ckeckwmic - -set _wmic=0 -for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( -cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 -) -exit /b - -:: Show info for potential script stuck scenario - -:dk_sppissue - -sc start sppsvc %nul% -set spperror=%errorlevel% - -if %spperror% NEQ 1056 if %spperror% NEQ 0 ( -%eline% -echo sc start sppsvc [Error Code: %spperror%] -) - -echo: -%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 20)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}" -exit /b - -:: Common lines used in PowerShell reflection code - -:dk_reflection - -set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1); -set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False); -set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0); -exit /b - -::======================================================================================================================================== - -:: Check pending reboot flags - -:ced_rebootflag - -set rebootreq= -reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" %nul% && set rebootreq=1 -reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" %nul% && set rebootreq=1 - -if defined rebootreq ( -%eline% -echo Pending reboot flags found. -echo: -echo Make sure Windows is fully updated, restart the system and try again. -) -exit /b - -::======================================================================================================================================== - -:: Get Product Key from pkeyhelper.dll for future new editions -:: It works on Windows 10 1803 (17134) and later builds. - -:k_pkey - -call :dk_reflection - -set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SkuGetProductKeyForEdition', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([int], [String], [String].MakeByRefType(), [String].MakeByRefType()), 1, 3); -set d1=%d1% $out = ''; [void]$TypeBuilder.CreateType()::SkuGetProductKeyForEdition(%1, %2, [ref]$out, [ref]$null); $out - -set pkey= -for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a) -exit /b - -:: Get channel name for the key which was extracted from pkeyhelper.dll - -:k_pkeychannel - -set k=%1 -set m=[Runtime.InteropServices.Marshal] -set p=%SysPath%\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms - -set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3); -set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8); -set d1=%d1% [void]$TypeBuilder.CreateType()::PidGenX('%k%', '%p%', '00000', 0, 0, 0, $f); %m%::Copy($f, $r, 0, 0x04F8); %m%::FreeHGlobal($f); [Text.Encoding]::Unicode.GetString($r, 1016, 128) - -set pkeychannel= -for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkeychannel=%%a) -exit /b - -:ced_windowskey - -for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b -for %%# in (%keyflow%) do ( -call :k_pkey %targetSKU% '%%#' -if defined pkey call :k_pkeychannel !pkey! -if /i "!pkeychannel!"=="%%#" ( -set key=!pkey! -exit /b -) -) -exit /b - -::======================================================================================================================================== - -:ced_targetSKU - -set k=%1 -set targetSKU= -for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b - -call :dk_reflection - -set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('GetEditionIdFromName', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); -set d1=%d1% $out = 0; [void]$TypeBuilder.CreateType()::GetEditionIdFromName('%k%', [ref]$out); $out - -for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set targetSKU=%%a) -if "%targetSKU%"=="0" set targetSKU= -exit /b - -::======================================================================================================================================== - -:dk_color - -if %_NCS% EQU 1 ( -echo %esc%[%~1%~2%esc%[0m -) else ( -%psc% write-host -back '%1' -fore '%2' '%3' -) -exit /b - -:dk_color2 - -if %_NCS% EQU 1 ( -echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m -) else ( -%psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore '%5' '%6' -) -exit /b - -::======================================================================================================================================== - -:dk_done - -echo: -if %_unattended%==1 timeout /t 2 & exit /b - -if defined fixes ( -call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" -choice /C:10 /N -if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) -) - -if defined terminal ( -call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." -choice /c 0 /n -) else ( -call :dk_color %_Yellow% "Press any key to %_exitmsg%..." -pause %nul1% -) - -exit /b - -::======================================================================================================================================== - -:: https://github.com/Gamers-Against-Weed/Set-WindowsCbsEdition - -:cbsxml:[ -param ( - [Parameter()] - [String]$SetEdition, - - [Parameter()] - [Switch]$GetTargetEditions, - - [Parameter()] - [Switch]$StageCurrent -) - -function Get-AssemblyIdentity { - param ( - [String]$PackageName - ) - - $PackageName = [String]$PackageName - $packageData = ($PackageName -split '~') - - if($packageData[3] -eq '') { - $packageData[3] = 'neutral' - } - - return "" -} - -function Get-SxsName { - param ( - [String]$PackageName - ) - - $name = ($PackageName -replace '[^A-z0-9\-\._]', '') - - if($name.Length -gt 40) { - $name = ($name[0..18] -join '') + '\.\.' + ($name[-19..-1] -join '') - } - - return $name.ToLower() -} - -function Find-EditionXmlInSxs { - param ( - [String]$Edition - ) - - $candidates = @($Edition, 'Client', 'Server') - $winSxs = $Env:SystemRoot + '\WinSxS' - $allInSxs = Get-ChildItem -Path $winSxs | select Name - - foreach($candidate in $candidates) { - $name = Get-SxsName -PackageName "Microsoft-Windows-Editions-$candidate" - $packages = $allInSxs | where name -Match ('^.*_'+$name+'_31bf3856ad364e35') - - if($packages.Length -eq 0) { - continue - } - - $package = $packages[-1].Name - $testPath = $winSxs + "\$package\" + $Edition + 'Edition.xml' - - if(Test-Path -Path $testPath -PathType Leaf) { - return $testPath - } - } - - return $null -} - -function Find-EditionXml { - param ( - [String]$Edition - ) - - $servicingEditions = $Env:SystemRoot + '\servicing\Editions' - $editionXml = $Edition + 'Edition.xml' - - $editionXmlInServicing = $servicingEditions + '\' + $editionXml - - if(Test-Path -Path $editionXmlInServicing -PathType Leaf) { - return $editionXmlInServicing - } - - return Find-EditionXmlInSxs -Edition $Edition -} - -function Write-UpgradeCandidates { - param ( - [HashTable]$InstallCandidates - ) - - $editionCount = 0 - Write-Host 'Editions that can be upgraded to:' - foreach($candidate in $InstallCandidates.Keys) { - Write-Host "Target Edition : $candidate" - $editionCount++ - } - - if($editionCount -eq 0) { - Write-Host '(no editions are available)' - } -} - -function Write-UpgradeXml { - param ( - [Array]$RemovalCandidates, - [Array]$InstallCandidates, - [Boolean]$Stage - ) - - $removeAction = 'remove' - if($Stage) { - $removeAction = 'stage' - } - - Write-Output '' - Write-Output '' - Write-Output '' - - foreach($package in $InstallCandidates) { - Write-Output '' - Write-Output (Get-AssemblyIdentity -PackageName $package) - Write-Output '' - } - - foreach($package in $RemovalCandidates) { - Write-Output "" - Write-Output (Get-AssemblyIdentity -PackageName $package) - Write-Output '' - } - - Write-Output '' - Write-Output '' -} - -function Write-Usage { - Get-Help $script:MyInvocation.MyCommand.Path -detailed -} - -$version = '1.0' -$getTargetsParam = $GetTargetEditions.IsPresent -$stageCurrentParam = $StageCurrent.IsPresent - -if($SetEdition -eq '' -and ($false -eq $getTargetsParam)) { - Write-Usage - Exit 1 -} - -$removalCandidates = @(); -$installCandidates = @{}; - -$packages = Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' | select Name | where { $_.name -match '^.*\\Microsoft-Windows-.*Edition~' } -foreach($package in $packages) { - $state = (Get-ItemProperty -Path "Registry::$($package.Name)").CurrentState - $packageName = ($package.Name -split '\\')[-1] - $packageEdition = (($packageName -split 'Edition~')[0] -split 'Microsoft-Windows-')[-1] - - if($state -eq 0x40) { - if($null -eq $installCandidates[$packageEdition]) { - $installCandidates[$packageEdition] = @() - } - - if($false -eq ($installCandidates[$packageEdition] -contains $packageName)) { - $installCandidates[$packageEdition] = $installCandidates[$packageEdition] + @($packageName) - } - } - - if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq ($removalCandidates -contains $packageName))) { - $removalCandidates = $removalCandidates + @($packageName) - } -} - -if($getTargetsParam) { - Write-UpgradeCandidates -InstallCandidates $installCandidates - Exit -} - -if($false -eq ($installCandidates.Keys -contains $SetEdition)) { - Write-Error "The system cannot be upgraded to `"$SetEdition`"" - Exit 1 -} - -$xmlPath = $Env:SystemRoot + '\Temp' + '\CbsUpgrade.xml' - -Write-UpgradeXml -RemovalCandidates $removalCandidates ` - -InstallCandidates $installCandidates[$SetEdition] ` - -Stage $stageCurrentParam >$xmlPath - -$editionXml = Find-EditionXml -Edition $SetEdition -if($null -eq $editionXml) { - Write-Warning 'Unable to find edition specific settings XML. Proceeding without it...' -} - -Write-Host 'Starting the upgrade process. This may take a while...' - -DISM.EXE /English /NoRestart /Online /Apply-Unattend:$xmlPath -$dismError = $LASTEXITCODE - -Remove-Item -Path $xmlPath -Force - -if(($dismError -ne 0) -and ($dismError -ne 3010)) { - Write-Error 'Failed to upgrade to the target edition' - Exit $dismError -} - -if($null -ne $editionXml) { - $destination = $Env:SystemRoot + '\' + $SetEdition + '.xml' - Copy-Item -Path $editionXml -Destination $destination - - DISM.EXE /English /NoRestart /Online /Apply-Unattend:$editionXml - $dismError = $LASTEXITCODE - - if(($dismError -ne 0) -and ($dismError -ne 3010)) { - Write-Error 'Failed to apply edition specific settings' - Exit $dismError - } -} - -Restart-Computer -:cbsxml:] - -::======================================================================================================================================== - -:: Change edition using DISM API -:: Thanks to Alex (aka may, ave9858) - -:dismapi:[ -param ( - [Parameter()] - [String]$TargetEdition, - - [Parameter()] - [String]$Key -) - -$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1) -$ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False) -$TB = $ModuleBuilder.DefineType(0) - -[void]$TB.DefinePInvokeMethod('DismInitialize', 'DismApi.dll', 22, 1, [int], @([int], [IntPtr], [IntPtr]), 1, 3) -[void]$TB.DefinePInvokeMethod('DismOpenSession', 'DismApi.dll', 22, 1, [int], @([String], [IntPtr], [IntPtr], [UInt32].MakeByRefType()), 1, 3) -[void]$TB.DefinePInvokeMethod('_DismSetEdition', 'DismApi.dll', 22, 1, [int], @([UInt32], [String], [String], [IntPtr], [IntPtr], [IntPtr]), 1, 3) -$Dism = $TB.CreateType() - -[void]$Dism::DismInitialize(2, 0, 0) -$Session = 0 -[void]$Dism::DismOpenSession('DISM_{53BFAE52-B167-4E2F-A258-0A37B57FF845}', 0, 0, [ref]$Session) -if (!$Dism::_DismSetEdition($Session, "$TargetEdition", "$Key", 0, 0, 0)) { - Restart-Computer -} -:dismapi:] - -::======================================================================================================================================== - -:: 1st column = Generic Retail/OEM/MAK/GVLK Key -:: 2nd column = Key Type -:: 3rd column = WMI Edition ID -:: 4th column = Version name incase same Edition ID is used in different OS versions with different key -:: Separator = _ - -:: For Windows 10/11 editions, HWID key is listed where ever possible, in Server versions, KMS key is listed where ever possible. -:: Only RS3 and older version Generic keys are stored here, later ones are extracted from the pkeyhelper.dll itself - -:changeeditiondata - -if %winbuild% GTR 17763 exit /b -if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.mum" (set Cor=Cor) else (set Cor=) - -set h= -for %%# in ( -XGVPP-NMH47-7TTHJ-W3FW7-8HV%h%2C__OEM:NONSLP_Enterprise -D6RD9-D4N8T-RT9QX-YW6YT-FCW%h%WJ______Retail_Starter -3V6Q6-NQXCX-V8YXR-9QCYV-QPF%h%CT__Volume:MAK_EnterpriseN -3NFXW-2T27M-2BDW6-4GHRV-68X%h%RX______Retail_StarterN -VK7JG-NPHTM-C97JM-9MPGT-3V6%h%6T______Retail_Professional -2B87N-8KFHP-DKV6R-Y2C8J-PKC%h%KT______Retail_ProfessionalN -4CPRK-NM3K3-X6XXQ-RXX86-WXC%h%HW______Retail_CoreN -N2434-X9D7W-8PF6X-8DV9T-8TY%h%MD______Retail_CoreCountrySpecific -BT79Q-G7N6G-PGBYW-4YWX6-6F4%h%BT______Retail_CoreSingleLanguage -YTMG3-N6DKC-DKB77-7M9GH-8HV%h%X7______Retail_Core -XKCNC-J26Q9-KFHD2-FKTHY-KD7%h%2Y__OEM:NONSLP_PPIPro -YNMGQ-8RYV3-4PGQ3-C8XTP-7CF%h%BY______Retail_Education -84NGF-MHBT6-FXBX8-QWJK7-DRR%h%8H______Retail_EducationN -NK96Y-D9CD8-W44CQ-R8YTK-DYJ%h%WX__OEM:NONSLP_EnterpriseS_RS1 -FWN7H-PF93Q-4GGP8-M8RF3-MDW%h%WW__OEM:NONSLP_EnterpriseS_TH -2DBW3-N2PJG-MVHW3-G7TDK-9HK%h%R4__Volume:MAK_EnterpriseSN_RS1 -NTX6B-BRYC2-K6786-F6MVQ-M7V%h%2X__Volume:MAK_EnterpriseSN_TH -G3KNM-CHG6T-R36X3-9QDG6-8M8%h%K9______Retail_ProfessionalSingleLanguage -HNGCC-Y38KG-QVK8D-WMWRK-X86%h%VK______Retail_ProfessionalCountrySpecific -DXG7C-N36C4-C4HTG-X4T3X-2YV%h%77______Retail_ProfessionalWorkstation -WYPNQ-8C467-V2W6J-TX4WX-WT2%h%RQ______Retail_ProfessionalWorkstationN -8PTT6-RNW4C-6V7J2-C2D3X-MHB%h%PB______Retail_ProfessionalEducation -GJTYN-HDMQY-FRR76-HVGC7-QPF%h%8P______Retail_ProfessionalEducationN -C4NTJ-CX6Q2-VXDMR-XVKGM-F9D%h%JC__Volume:MAK_EnterpriseG -46PN6-R9BK9-CVHKB-HWQ9V-MBJ%h%Y8__Volume:MAK_EnterpriseGN -NJCF7-PW8QT-3324D-688JX-2YV%h%66______Retail_ServerRdsh -V3WVW-N2PV2-CGWC3-34QGF-VMJ%h%2C______Retail_Cloud -NH9J3-68WK7-6FB93-4K3DF-DJ4%h%F6______Retail_CloudN -2HN6V-HGTM8-6C97C-RK67V-JQP%h%FD______Retail_CloudE -WC2BQ-8NRM3-FDDYY-2BFGV-KHK%h%QY_Volume:GVLK_ServerStandard%Cor%_RS1 -CB7KF-BWN84-R7R2Y-793K2-8XD%h%DG_Volume:GVLK_ServerDatacenter%Cor%_RS1 -JCKRF-N37P4-C2D82-9YXRT-4M6%h%3B_Volume:GVLK_ServerSolution_RS1 -QN4C6-GBJD2-FB422-GHWJK-GJG%h%2R_Volume:GVLK_ServerCloudStorage_RS1 -VP34G-4NPPG-79JTQ-864T4-R3M%h%QX_Volume:GVLK_ServerAzureCor_RS1 -9JQNQ-V8HQ6-PKB8H-GGHRY-R62%h%H6______Retail_ServerAzureNano_RS1 -VN8D3-PR82H-DB6BJ-J9P4M-92F%h%6J______Retail_ServerStorageStandard_RS1 -48TQX-NVK3R-D8QR3-GTHHM-8FH%h%XC______Retail_ServerStorageWorkgroup_RS1 -2HXDN-KRXHB-GPYC7-YCKFJ-7FV%h%DG_Volume:GVLK_ServerDatacenterACor_RS3 -PTXN8-JFHJM-4WC78-MPCBR-9W4%h%KR_Volume:GVLK_ServerStandardACor_RS3 -) do ( -for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C ( - -if not defined key ( -set 4th=%%D -if not defined 4th ( -set "key=%%A" & set "_chan=%%B" -) else ( -echo "%branch%" | find /i "%%D" %nul1% && (set "key=%%A" & set "_chan=%%B") -) -) -) -) -exit /b - -::======================================================================================================================================== -:: Leave empty line below diff --git a/MAS/Separate-Files-Version/Change_Windows_Edition.cmd b/MAS/Separate-Files-Version/Change_Windows_Edition.cmd new file mode 100644 index 0000000..3f84673 --- /dev/null +++ b/MAS/Separate-Files-Version/Change_Windows_Edition.cmd @@ -0,0 +1,1334 @@ +@set masver=2.6 +@echo off + + + +::============================================================================ +:: +:: Homepage: mass grave[.]dev +:: Email: mas.help@outlook.com +:: +::============================================================================ + + + +:: To stage current edition while changing edition with CBS Upgrade Method, change 0 to 1 in below line +set _stg=0 + + + +::======================================================================================================================================== + +:: Set environment variables, it helps if they are misconfigured in the system + +setlocal EnableExtensions +setlocal DisableDelayedExpansion + +set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" + +set "SysPath=%SystemRoot%\System32" +set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" +if exist "%SystemRoot%\Sysnative\reg.exe" ( +set "SysPath=%SystemRoot%\Sysnative" +set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%" +) + +set "ComSpec=%SysPath%\cmd.exe" +set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules" + +set "_cmdf=%~f0" +for %%# in (%*) do ( +if /i "%%#"=="r1" set r1=1 +if /i "%%#"=="r2" set r2=1 +) + +:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows +:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows + +if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( +setlocal EnableDelayedExpansion +start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* r1" +exit /b +) + +:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows + +if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 if not defined r2 ( +setlocal EnableDelayedExpansion +start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %* r2" +exit /b +) + +::======================================================================================================================================== + +set "blank=" +set "mas=ht%blank%tps%blank%://mass%blank%grave.dev/" + +:: Check if Null service is working, it's important for the batch script + +sc query Null | find /i "RUNNING" +if %errorlevel% NEQ 0 ( +echo: +echo Null service is not running, script may crash... +echo: +echo: +echo Help - %mas%troubleshoot +echo: +echo: +ping 127.0.0.1 -n 20 +) +cls + +:: Check LF line ending + +pushd "%~dp0" +>nul findstr /v "$" "%~nx0" && ( +echo: +echo Error - Script either has LF line ending issue or an empty line at the end of the script is missing. +echo: +echo: +echo Help - %mas%troubleshoot +echo: +echo: +ping 127.0.0.1 -n 20 >nul +popd +exit /b +) +popd + +::======================================================================================================================================== + +cls +color 07 +title Change Windows Edition %masver% + +set _args= +set _elev= +set _unattended=0 + +set _args=%* +if defined _args set _args=%_args:"=% +if defined _args ( +for %%A in (%_args%) do ( +if /i "%%A"=="-el" set _elev=1 +) +) + +set "nul1=1>nul" +set "nul2=2>nul" +set "nul6=2^>nul" +set "nul=>nul 2>&1" + +call :dk_setvar +set "line=echo ___________________________________________________________________________________________" + +::======================================================================================================================================== + +if %winbuild% LSS 7600 ( +%nceline% +echo Unsupported OS version detected [%winbuild%]. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalents. +goto dk_done +) + +::======================================================================================================================================== + +:: Fix special character limitations in path name + +set "_work=%~dp0" +if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" + +set "_batf=%~f0" +set "_batp=%_batf:'=''%" + +set _PSarg="""%~f0""" -el %_args% +set _PSarg=%_PSarg:'=''% + +set "_ttemp=%userprofile%\AppData\Local\Temp" + +setlocal EnableDelayedExpansion + +::======================================================================================================================================== + +echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( +if /i not "!_work!"=="!_ttemp!" ( +%eline% +echo The script was launched from the temp folder. +echo You are most likely running the script directly from the archive file. +echo: +echo Extract the archive file and launch the script from the extracted folder. +goto dk_done +) +) + +::======================================================================================================================================== + +:: Check PowerShell + +REM :PowerShellTest: $ExecutionContext.SessionState.LanguageMode :PowerShellTest: + +cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PowerShellTest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || ( +%eline% +cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" +echo: +cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && ( +echo Failed to run Powershell command but Powershell is working. +call :dk_color %Blue% "Check if your antivirus is blocking the script." +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +) || ( +echo PowerShell is not working. Aborting... +echo If you have applied restrictions on Powershell then undo those changes. +echo: +set fixes=%fixes% %mas%fix_powershell +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell" +) +goto dk_done +) + +::======================================================================================================================================== + +:: Elevate script as admin and pass arguments and preventing loop + +%nul1% fltmc || ( +if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b +%eline% +echo This script needs admin rights. +echo Right click on this script and select 'Run as administrator'. +goto dk_done +) + +::======================================================================================================================================== + +:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app + +if %winbuild% GEQ 17763 ( +set terminal=1 +) else ( +set terminal= +) + +:: Check if script is running in Terminal app + +set r1=$TB = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0); +set r2=%r1% [void]$TB.DefinePInvokeMethod('GetConsoleWindow', 'kernel32.dll', 22, 1, [IntPtr], @(), 1, 3).SetImplementationFlags(128); +set r3=%r2% [void]$TB.DefinePInvokeMethod('SendMessageW', 'user32.dll', 22, 1, [IntPtr], @([IntPtr], [UInt32], [IntPtr], [IntPtr]), 1, 3).SetImplementationFlags(128); +set d1=%r3% $hIcon = $TB.CreateType(); $hWnd = $hIcon::GetConsoleWindow(); +set d2=%d1% echo $($hIcon::SendMessageW($hWnd, 127, 0, 0) -ne [IntPtr]::Zero); + +if defined terminal ( +%psc% "%d2%" %nul2% | find /i "True" %nul1% && set terminal= +) + +if %_unattended%==1 goto :skipQE +for %%# in (%_args%) do (if /i "%%#"=="-qedit" goto :skipQE) + +if defined terminal ( +set "launchcmd=start conhost.exe %psc%" +) else ( +set "launchcmd=%psc%" +) + +:: Disable QuickEdit in current session + +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" + +%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" && (exit /b) || (set terminal=1) +:skipQE + +::======================================================================================================================================== + +:: Check for updates + +set -= +set old= + +for /f "delims=[] tokens=2" %%# in ('ping -4 -n 1 updatecheck.mass%-%grave.dev') do ( +if not "%%#"=="" (echo "%%#" | find "127.69" %nul1% && (echo "%%#" | find "127.69.%masver%" %nul1% || set old=1)) +) + +if defined old ( +echo ________________________________________________ +%eline% +echo Your version of MAS [%masver%] is outdated. +echo ________________________________________________ +echo: +if not %_unattended%==1 ( +echo [1] Get Latest MAS +echo [0] Continue Anyway +echo: +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" +choice /C:10 /N +if !errorlevel!==2 rem +if !errorlevel!==1 (start ht%-%tps://github.com/mass%-%gravel/Microsoft-Acti%-%vation-Scripts & start %mas% & exit /b) +) +) + +::======================================================================================================================================== + +setlocal DisableDelayedExpansion + +:: Check desktop location + +set desktop= +for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b" +if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a" + +if not defined desktop ( +%eline% +echo Unable to detect Desktop location, aborting... +goto dk_done +) + +setlocal EnableDelayedExpansion + +::======================================================================================================================================== + +cls +if not defined terminal mode 98, 30 +title Change Windows Edition %masver% + +echo: +echo Initializing... +echo: + +for %%# in ( +sppsvc.exe +dism.exe +) do ( +if not exist %SysPath%\%%# ( +%eline% +echo [%SysPath%\%%#] file is missing, aborting... +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) +) + +::======================================================================================================================================== + +set spp=SoftwareLicensingProduct +set sps=SoftwareLicensingService + +call :dk_reflection +call :dk_ckeckwmic +call :dk_sppissue + +for /f "tokens=6-7 delims=[]. " %%i in ('ver') do if not "%%j"=="" ( +set fullbuild=%%i.%%j +) else ( +for /f "tokens=3" %%G in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR" %nul6%') do if not errorlevel 1 set /a "UBR=%%G" +for /f "skip=2 tokens=3,4 delims=. " %%G in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx') do ( +if defined UBR (set "fullbuild=%%G.!UBR!") else (set "fullbuild=%%G.%%H") +) +) + +::======================================================================================================================================== + +:: Check Activation ID + +call :dk_actid 55c92734-d682-4d71-983e-d6ec3f16059f +if not defined apps ( +%eline% +echo Either key is not insalled or script failed to get installed key's activation ID. Aborting... +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) + +::======================================================================================================================================== + +:: Check Windows Edition and branch + +set osedition=0 +set dismedition= +set dismnotworking= + +if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" +%chkedi% do if not errorlevel 1 (call set "osedition=%%a") + +if %osedition%==0 ( +%eline% +echo Failed to detect OS edition, aborting... +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) + +for /f "skip=2 tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul6%') do set "regedition=%%a" +if /i not "%osedition%"=="%regedition%" ( +set "showeditionerror=call :dk_color %_Yellow% "Mismatch found [WMI-%osedition%] [Reg-%regedition%]."" +) + +for /f "tokens=3 delims=: " %%a in ('DISM /English /Online /Get-CurrentEdition %nul6% ^| find /i "Current Edition :"') do set "dismedition=%%a" +if not defined dismedition set dismnotworking=1 + +set branch= +for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildBranch %nul6%') do set "branch=%%b" + +::======================================================================================================================================== + +:: Get target editions list + +set _target= +set _dtarget= +set _ptarget= +set _ntarget= +set _wtarget= + +if %winbuild% GEQ 10240 for /f "tokens=4" %%a in ('dism /online /english /Get-TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _dtarget (set "_dtarget= !_dtarget! %%a ") else (set "_dtarget= %%a ")) +if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target Edition : "') do (if defined _ptarget (set "_ptarget= !_ptarget! %%a ") else (set "_ptarget= %%a ")) + +if %winbuild% GEQ 10240 if not exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" ( +call :ced_edilist +if /i "%osedition:~0,4%"=="Core" set _pro=Professional +if /i "%osedition%"=="CoreN" set _pro=ProfessionalN +set "_dtarget= %_dtarget% !_wtarget! !_pro! " +) + +::======================================================================================================================================== + +for %%# in (CloudEdition CloudEditionN ServerRdsh) do if /i %osedition%==%%# ( +cls +echo: +call :dk_color %Red% "==== Note ====" +echo: +echo [EditionID:%osedition% ^| %fullbuild%] +echo: +echo Changing this edition may not remove "%osedition%"-specific features. +echo: +call :dk_color %_Yellow% "Press [7] to continue anyway..." +choice /c 7 /n +cls +) + +for %%# in ( %_dtarget% %_ptarget% ) do if /i not "%%#"=="%osedition%" ( +echo "!_target!" | find /i " %%# " %nul1% || set "_target= !_target! %%# " +) + +if defined _target ( +for %%# in (%_target%) do ( +echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (set "_ntarget=!_ntarget! %%#") +) +) + +if not defined _ntarget ( +%line% +echo: +if defined dismnotworking call :dk_color %Red% "DISM.exe is not working." +call :dk_color %Gray% "Target editions not found." +echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition. +%line% +goto dk_done +) + +::======================================================================================================================================== + +:cedmenu2 + +cls +if not defined terminal mode 98, 30 +set inpt= +set counter=0 +set verified=0 +set targetedition= + +%line% +echo: +call :dk_color %Gray% "You can change the edition [%osedition%] [%fullbuild%] to one of the following." +%showeditionerror% +if defined dismnotworking ( +call :dk_color %_Yellow% "Note - DISM.exe is not working." +if /i "%osedition:~0,4%"=="Core" call :dk_color %_Yellow% " - You will see more edition options to choose once its changed to Pro." +) +%line% +echo: + +for %%A in (%_ntarget%) do ( +set /a counter+=1 +echo [!counter!] %%A +set targetedition!counter!=%%A +) + +%line% +echo: +echo [0] %_exitmsg% +echo: +call :dk_color %_Green% "Enter an option number using your keyboard and press Enter to confirm:" +set /p inpt= +if "%inpt%"=="" goto cedmenu2 +if "%inpt%"=="0" exit /b +for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1) +set targetedition=!targetedition%inpt%! +if %verified%==0 goto cedmenu2 + +::======================================================================================================================================== + +if %winbuild% LSS 10240 goto :cbsmethod +if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" goto :ced_change_server + +cls +if not defined terminal mode con cols=105 lines=32 + +if /i "%targetedition%"=="ServerRdsh" ( +echo: +call :dk_color %Red% "==== Note ====" +echo: +echo Once the edition is changed to "%targetedition%", +echo the system may not be able to properly change edition later. +echo: +echo [1] Continue Anyway +echo [0] Go Back +echo: +call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :" +choice /C:10 /N +if !errorlevel!==2 goto cedmenu2 +if !errorlevel!==1 rem +) + +cls +set key= +set _chan= +set _dismapi=0 + +:: Check if DISM API or slmgr.vbs is required for edition upgrade + +if not exist "%SysPath%\spp\tokens\skus\%targetedition%\" ( +echo %_wtarget% | find /i " %targetedition% " || ( +set _dismapi=1 +) +) + +set "keyflow=Retail Volume:GVLK Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" + +call :ced_targetSKU %targetedition% +if defined targetSKU call :ced_windowskey +if defined key if defined pkeychannel set _chan=%pkeychannel% +if not defined key call :changeeditiondata +if not defined key if %_dismapi%==1 if /i "%targetedition%"=="Professional" ( +set key=VK7JG-NPHTM-C97JM-9MPGT-3V66T +set _chan=Retail +) + +if not defined key ( +%eline% +echo [%targetedition% ^| %winbuild%] +echo Failed to get product key from pkeyhelper.dll. +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) + +::======================================================================================================================================== + +:: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires "changepk /productkey" or DISM Api method and restart +:: In other cases, editions can be changed instantly with "slmgr /ipk" + +if %_dismapi%==1 ( +if not defined terminal mode con cols=105 lines=40 +call :ced_rebootflag +if defined rebootreq goto dk_done +) + +cls +%line% +echo: +%showeditionerror% +if defined dismnotworking call :dk_color %_Yellow% "DISM.exe is not working." +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... +echo: + +if %_dismapi%==1 ( +call :dk_color %Green% "Notes -" +echo: +echo - Save your work before continuing, the system will auto-restart. +echo: +echo - You will need to activate with HWID option once the edition is changed. +%line% +echo: +choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : " +if !errorlevel!==1 exit /b +) + +::======================================================================================================================================== + +if %_dismapi%==0 ( +echo Installing %_chan% key [%key%] +echo: +if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call InstallProductKey ProductKey="%key%" %nul% +if %_wmic% EQU 0 %psc% "try { $null=(([WMISEARCHER]'SELECT Version FROM %sps%').Get()).InstallProductKey('%key%'); exit 0 } catch { exit $_.Exception.InnerException.HResult }" %nul% +set keyerror=!errorlevel! +cmd /c exit /b !keyerror! +if !keyerror! NEQ 0 set "keyerror=[0x!=ExitCode!]" + +if !keyerror! EQU 0 ( +call :dk_refresh +call :dk_color %Green% "[Successful]" +echo: +call :dk_color %Gray% "Reboot is required to fully change the edition." +) else ( +call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]" +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +) +) + +if %_dismapi%==1 ( +echo: +echo Applying the DISM API method with %_chan% key %key%. Please wait... +echo: + +call :ced_prep +if defined preperror goto dk_done + +%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':dismapi\:.*';& ([ScriptBlock]::Create($f[1])) %targetedition% %key%" +call :ced_postprep +) +%line% + +goto dk_done + +::======================================================================================================================================== + +:cbsmethod + +cls +if not defined terminal ( +mode con cols=105 lines=32 +%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" +) + +call :ced_rebootflag +if defined rebootreq goto dk_done + +echo: +%showeditionerror% +if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... +echo: +call :dk_color %Blue% "Important - Save your work before continuing, the system will auto-restart." +echo: +choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : " +if %errorlevel%==1 exit /b + +echo: +echo Initializing... +echo: + +call :ced_prep +if defined preperror goto dk_done + +if %_stg%==0 (set stage=) else (set stage=-StageCurrent) +%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':cbsxml\:.*';& ([ScriptBlock]::Create($f[1])) -SetEdition %targetedition% %stage%" +call :ced_postprep +%line% + +goto dk_done + +::======================================================================================================================================== + +:ced_change_server + +cls +if not defined terminal ( +mode con cols=105 lines=32 +%psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" +) + +set key= +set _chan= +set "keyflow=Volume:GVLK Retail Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval" + +call :ced_targetSKU %targetedition% +if defined targetSKU call :ced_windowskey +if defined key if defined pkeychannel set _chan=%pkeychannel% +if not defined key call :changeeditiondata + +if not defined key ( +%eline% +echo [%targetedition% ^| %winbuild%] +echo Failed to get product key from pkeyhelper.dll. +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" +goto dk_done +) + +call :ced_rebootflag +if defined rebootreq goto dk_done + +cls +echo: +%showeditionerror% +if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not working." +echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]... +echo: + +call :ced_prep +if defined preperror goto dk_done + +echo Applying the command with %_chan% key... +echo DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula +DISM /online /Set-Edition:%targetedition% /ProductKey:%key% /AcceptEula + +call :ced_postprep +%line% + +goto dk_done + +::======================================================================================================================================== + +:ced_prep + +set _time= +set preperror= + +for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a + +%psc% Stop-Service TrustedInstaller -force %nul% + +sc query TrustedInstaller | find /i "RUNNING" %nul% && ( +%eline% +echo Failed to stop the TrustedInstaller service. +echo Restart your system and try again. +set preperror=1 +exit /b +) + +copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\backup_cbs_%_time%.log" %nul% +copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\backup_dism_%_time%.log" %nul% + +del /f /q "%SystemRoot%\logs\cbs\cbs.log" %nul% +del /f /q "%SystemRoot%\logs\DISM\dism.log" %nul% + +:: Initiate this to appear in fresh logs + +dism /online /english /Get-CurrentEdition %nul% +dism /online /english /Get-TargetEditions %nul% +exit /b + +::======================================================================================================================================== + +:ced_postprep + +timeout /t 5 %nul1% +copy /y /b "%SystemRoot%\logs\cbs\cbs.log" "%SystemRoot%\logs\cbs\cbs_%_time%.log" %nul% +copy /y /b "%SystemRoot%\logs\DISM\dism.log" "%SystemRoot%\logs\DISM\dism_%_time%.log" %nul% + +if not exist "!desktop!\ChangeEdition_Logs\" md "!desktop!\ChangeEdition_Logs\" %nul% +call :compresslog cbs\cbs_%_time%.log ChangeEdition_Logs\CBS %nul% +call :compresslog DISM\dism_%_time%.log ChangeEdition_Logs\DISM %nul% + +echo: +if %winbuild% GEQ 9200 %psc% "if ((Get-WindowsOptionalFeature -Online -FeatureName NetFx3).State -eq 'Enabled') {Write-Host 'Checking .NET Framework 3.5 Status - Enabled'}" +echo Log files are copied to the ChangeEdition_Logs folder on your desktop. +echo: +call :dk_color %Blue% "In case there are errors, you should restart the system before trying again." +echo: +set fixes=%fixes% %mas%change_edition_issues +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%change_edition_issues" +exit /b + +:compresslog + +:: https://stackoverflow.com/a/46268232 + +set "ddf="%SystemRoot%\Temp\ddf"" +%nul% del /q /f %ddf% +echo/.New Cabinet>%ddf% +echo/.set Cabinet=ON>>%ddf% +echo/.set CabinetFileCountThreshold=0;>>%ddf% +echo/.set Compress=ON>>%ddf% +echo/.set CompressionType=LZX>>%ddf% +echo/.set CompressionLevel=7;>>%ddf% +echo/.set CompressionMemory=21;>>%ddf% +echo/.set FolderFileCountThreshold=0;>>%ddf% +echo/.set FolderSizeThreshold=0;>>%ddf% +echo/.set GenerateInf=OFF>>%ddf% +echo/.set InfFileName=nul>>%ddf% +echo/.set MaxCabinetSize=0;>>%ddf% +echo/.set MaxDiskFileCount=0;>>%ddf% +echo/.set MaxDiskSize=0;>>%ddf% +echo/.set MaxErrors=1;>>%ddf% +echo/.set RptFileName=nul>>%ddf% +echo/.set UniqueFiles=ON>>%ddf% +for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%SystemRoot%\logs\%1"') do ( + echo/"%%~fD" /inf=no;>>%ddf% +) +makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate="!desktop!\%2_%_time%.cab" +del /q /f %ddf% +exit /b + +::======================================================================================================================================== + +:: Set variables + +:dk_setvar + +set psc=powershell.exe +set winbuild=1 +for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G + +set _NCS=1 +if %winbuild% LSS 10586 set _NCS=0 +if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0" %nul1% && (set _NCS=0) + +if %_NCS% EQU 1 ( +for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" +set "Red="41;97m"" +set "Gray="100;97m"" +set "Green="42;97m"" +set "Blue="44;97m"" +set "_Red="40;91m"" +set "_White="40;37m"" +set "_Green="40;92m"" +set "_Yellow="40;93m"" +) else ( +set "Red="Red" "white"" +set "Gray="Darkgray" "white"" +set "Green="DarkGreen" "white"" +set "Blue="Blue" "white"" +set "_Red="Black" "Red"" +set "_White="Black" "Gray"" +set "_Green="Black" "Green"" +set "_Yellow="Black" "Yellow"" +) + +set "nceline=echo: &echo ==== ERROR ==== &echo:" +set "eline=echo: &call :dk_color %Red% "==== ERROR ====" &echo:" +if %~z0 GEQ 200000 ( +set "_exitmsg=Go back" +set "_fixmsg=Go back to Main Menu, select Troubleshoot and run Fix Licensing option." +) else ( +set "_exitmsg=Exit" +set "_fixmsg=In MAS folder, run Troubleshoot script and select Fix Licensing option." +) +exit /b + +::======================================================================================================================================== + +:: Refresh license status + +:dk_refresh + +if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call RefreshLicenseStatus %nul% +if %_wmic% EQU 0 %psc% "$null=(([WMICLASS]'%sps%').GetInstances()).RefreshLicenseStatus()" %nul% +exit /b + +:: Get installed products Activation IDs + +:dk_actid + +set apps= +if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='%1' and PartialProductKey is not null) get ID /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT ID FROM %spp% WHERE ApplicationID=''%1'' AND PartialProductKey IS NOT NULL').Get()).ID ^| %% {echo ('ID='+$_)}" %nul6%')" +%chkapp% do (if defined apps (call set "apps=!apps! %%a") else (call set "apps=%%a")) +exit /b + +:: Get Edition list + +:ced_edilist + +if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is NULL) get LicenseFamily /VALUE" %nul6%')" +if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')" +%chkedi% do call set "_wtarget= !_wtarget! %%a " +exit /b + +:: Check wmic.exe + +:dk_ckeckwmic + +set _wmic=0 +for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( +cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" %nul2% | find /i "computersystem" %nul1% && set _wmic=1 +) +exit /b + +:: Show info for potential script stuck scenario + +:dk_sppissue + +sc start sppsvc %nul% +set spperror=%errorlevel% + +if %spperror% NEQ 1056 if %spperror% NEQ 0 ( +%eline% +echo sc start sppsvc [Error Code: %spperror%] +) + +echo: +%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version }; if (-not (Wait-Job $job -Timeout 20)) {write-host 'sppsvc is not working correctly. Help - %mas%troubleshoot'}" +exit /b + +:: Common lines used in PowerShell reflection code + +:dk_reflection + +set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1); +set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False); +set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0); +exit /b + +::======================================================================================================================================== + +:: Check pending reboot flags + +:ced_rebootflag + +set rebootreq= +reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" %nul% && set rebootreq=1 +reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" %nul% && set rebootreq=1 + +if defined rebootreq ( +%eline% +echo Pending reboot flags found. +echo: +echo Make sure Windows is fully updated, restart the system and try again. +) +exit /b + +::======================================================================================================================================== + +:: Get Product Key from pkeyhelper.dll for future new editions +:: It works on Windows 10 1803 (17134) and later builds. + +:k_pkey + +call :dk_reflection + +set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('SkuGetProductKeyForEdition', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([int], [String], [String].MakeByRefType(), [String].MakeByRefType()), 1, 3); +set d1=%d1% $out = ''; [void]$TypeBuilder.CreateType()::SkuGetProductKeyForEdition(%1, %2, [ref]$out, [ref]$null); $out + +set pkey= +for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a) +exit /b + +:: Get channel name for the key which was extracted from pkeyhelper.dll + +:k_pkeychannel + +set k=%1 +set m=[Runtime.InteropServices.Marshal] +set p=%SysPath%\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms + +set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('PidGenX', 'pidgenx.dll', 'Public, Static', 1, [int], @([String], [String], [String], [int], [IntPtr], [IntPtr], [IntPtr]), 1, 3); +set d1=%d1% $r = [byte[]]::new(0x04F8); $r[0] = 0xF8; $r[1] = 0x04; $f = %m%::AllocHGlobal(0x04F8); %m%::Copy($r, 0, $f, 0x04F8); +set d1=%d1% [void]$TypeBuilder.CreateType()::PidGenX('%k%', '%p%', '00000', 0, 0, 0, $f); %m%::Copy($f, $r, 0, 0x04F8); %m%::FreeHGlobal($f); [Text.Encoding]::Unicode.GetString($r, 1016, 128) + +set pkeychannel= +for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkeychannel=%%a) +exit /b + +:ced_windowskey + +for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b +for %%# in (%keyflow%) do ( +call :k_pkey %targetSKU% '%%#' +if defined pkey call :k_pkeychannel !pkey! +if /i "!pkeychannel!"=="%%#" ( +set key=!pkey! +exit /b +) +) +exit /b + +::======================================================================================================================================== + +:ced_targetSKU + +set k=%1 +set targetSKU= +for %%# in (pkeyhelper.dll) do @if "%%~$PATH:#"=="" exit /b + +call :dk_reflection + +set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod('GetEditionIdFromName', 'pkeyhelper.dll', 'Public, Static', 1, [int], @([String], [int].MakeByRefType()), 1, 3); +set d1=%d1% $out = 0; [void]$TypeBuilder.CreateType()::GetEditionIdFromName('%k%', [ref]$out); $out + +for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set targetSKU=%%a) +if "%targetSKU%"=="0" set targetSKU= +exit /b + +::======================================================================================================================================== + +:dk_color + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[0m +) else ( +%psc% write-host -back '%1' -fore '%2' '%3' +) +exit /b + +:dk_color2 + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m +) else ( +%psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore '%5' '%6' +) +exit /b + +::======================================================================================================================================== + +:dk_done + +echo: +if %_unattended%==1 timeout /t 2 & exit /b + +if defined fixes ( +call :dk_color2 %Blue% "Press [1] to Open Troubleshoot Page " %Gray% " Press [0] to Ignore" +choice /C:10 /N +if !errorlevel!==1 (for %%# in (%fixes%) do (start %%#)) +) + +if defined terminal ( +call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..." +choice /c 0 /n +) else ( +call :dk_color %_Yellow% "Press any key to %_exitmsg%..." +pause %nul1% +) + +exit /b + +::======================================================================================================================================== + +:: https://github.com/Gamers-Against-Weed/Set-WindowsCbsEdition + +:cbsxml:[ +param ( + [Parameter()] + [String]$SetEdition, + + [Parameter()] + [Switch]$GetTargetEditions, + + [Parameter()] + [Switch]$StageCurrent +) + +function Get-AssemblyIdentity { + param ( + [String]$PackageName + ) + + $PackageName = [String]$PackageName + $packageData = ($PackageName -split '~') + + if($packageData[3] -eq '') { + $packageData[3] = 'neutral' + } + + return "" +} + +function Get-SxsName { + param ( + [String]$PackageName + ) + + $name = ($PackageName -replace '[^A-z0-9\-\._]', '') + + if($name.Length -gt 40) { + $name = ($name[0..18] -join '') + '\.\.' + ($name[-19..-1] -join '') + } + + return $name.ToLower() +} + +function Find-EditionXmlInSxs { + param ( + [String]$Edition + ) + + $candidates = @($Edition, 'Client', 'Server') + $winSxs = $Env:SystemRoot + '\WinSxS' + $allInSxs = Get-ChildItem -Path $winSxs | select Name + + foreach($candidate in $candidates) { + $name = Get-SxsName -PackageName "Microsoft-Windows-Editions-$candidate" + $packages = $allInSxs | where name -Match ('^.*_'+$name+'_31bf3856ad364e35') + + if($packages.Length -eq 0) { + continue + } + + $package = $packages[-1].Name + $testPath = $winSxs + "\$package\" + $Edition + 'Edition.xml' + + if(Test-Path -Path $testPath -PathType Leaf) { + return $testPath + } + } + + return $null +} + +function Find-EditionXml { + param ( + [String]$Edition + ) + + $servicingEditions = $Env:SystemRoot + '\servicing\Editions' + $editionXml = $Edition + 'Edition.xml' + + $editionXmlInServicing = $servicingEditions + '\' + $editionXml + + if(Test-Path -Path $editionXmlInServicing -PathType Leaf) { + return $editionXmlInServicing + } + + return Find-EditionXmlInSxs -Edition $Edition +} + +function Write-UpgradeCandidates { + param ( + [HashTable]$InstallCandidates + ) + + $editionCount = 0 + Write-Host 'Editions that can be upgraded to:' + foreach($candidate in $InstallCandidates.Keys) { + Write-Host "Target Edition : $candidate" + $editionCount++ + } + + if($editionCount -eq 0) { + Write-Host '(no editions are available)' + } +} + +function Write-UpgradeXml { + param ( + [Array]$RemovalCandidates, + [Array]$InstallCandidates, + [Boolean]$Stage + ) + + $removeAction = 'remove' + if($Stage) { + $removeAction = 'stage' + } + + Write-Output '' + Write-Output '' + Write-Output '' + + foreach($package in $InstallCandidates) { + Write-Output '' + Write-Output (Get-AssemblyIdentity -PackageName $package) + Write-Output '' + } + + foreach($package in $RemovalCandidates) { + Write-Output "" + Write-Output (Get-AssemblyIdentity -PackageName $package) + Write-Output '' + } + + Write-Output '' + Write-Output '' +} + +function Write-Usage { + Get-Help $script:MyInvocation.MyCommand.Path -detailed +} + +$version = '1.0' +$getTargetsParam = $GetTargetEditions.IsPresent +$stageCurrentParam = $StageCurrent.IsPresent + +if($SetEdition -eq '' -and ($false -eq $getTargetsParam)) { + Write-Usage + Exit 1 +} + +$removalCandidates = @(); +$installCandidates = @{}; + +$packages = Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages' | select Name | where { $_.name -match '^.*\\Microsoft-Windows-.*Edition~' } +foreach($package in $packages) { + $state = (Get-ItemProperty -Path "Registry::$($package.Name)").CurrentState + $packageName = ($package.Name -split '\\')[-1] + $packageEdition = (($packageName -split 'Edition~')[0] -split 'Microsoft-Windows-')[-1] + + if($state -eq 0x40) { + if($null -eq $installCandidates[$packageEdition]) { + $installCandidates[$packageEdition] = @() + } + + if($false -eq ($installCandidates[$packageEdition] -contains $packageName)) { + $installCandidates[$packageEdition] = $installCandidates[$packageEdition] + @($packageName) + } + } + + if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq ($removalCandidates -contains $packageName))) { + $removalCandidates = $removalCandidates + @($packageName) + } +} + +if($getTargetsParam) { + Write-UpgradeCandidates -InstallCandidates $installCandidates + Exit +} + +if($false -eq ($installCandidates.Keys -contains $SetEdition)) { + Write-Error "The system cannot be upgraded to `"$SetEdition`"" + Exit 1 +} + +$xmlPath = $Env:SystemRoot + '\Temp' + '\CbsUpgrade.xml' + +Write-UpgradeXml -RemovalCandidates $removalCandidates ` + -InstallCandidates $installCandidates[$SetEdition] ` + -Stage $stageCurrentParam >$xmlPath + +$editionXml = Find-EditionXml -Edition $SetEdition +if($null -eq $editionXml) { + Write-Warning 'Unable to find edition specific settings XML. Proceeding without it...' +} + +Write-Host 'Starting the upgrade process. This may take a while...' + +DISM.EXE /English /NoRestart /Online /Apply-Unattend:$xmlPath +$dismError = $LASTEXITCODE + +Remove-Item -Path $xmlPath -Force + +if(($dismError -ne 0) -and ($dismError -ne 3010)) { + Write-Error 'Failed to upgrade to the target edition' + Exit $dismError +} + +if($null -ne $editionXml) { + $destination = $Env:SystemRoot + '\' + $SetEdition + '.xml' + Copy-Item -Path $editionXml -Destination $destination + + DISM.EXE /English /NoRestart /Online /Apply-Unattend:$editionXml + $dismError = $LASTEXITCODE + + if(($dismError -ne 0) -and ($dismError -ne 3010)) { + Write-Error 'Failed to apply edition specific settings' + Exit $dismError + } +} + +Restart-Computer +:cbsxml:] + +::======================================================================================================================================== + +:: Change edition using DISM API +:: Thanks to Alex (aka may, ave9858) + +:dismapi:[ +param ( + [Parameter()] + [String]$TargetEdition, + + [Parameter()] + [String]$Key +) + +$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1) +$ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False) +$TB = $ModuleBuilder.DefineType(0) + +[void]$TB.DefinePInvokeMethod('DismInitialize', 'DismApi.dll', 22, 1, [int], @([int], [IntPtr], [IntPtr]), 1, 3) +[void]$TB.DefinePInvokeMethod('DismOpenSession', 'DismApi.dll', 22, 1, [int], @([String], [IntPtr], [IntPtr], [UInt32].MakeByRefType()), 1, 3) +[void]$TB.DefinePInvokeMethod('_DismSetEdition', 'DismApi.dll', 22, 1, [int], @([UInt32], [String], [String], [IntPtr], [IntPtr], [IntPtr]), 1, 3) +$Dism = $TB.CreateType() + +[void]$Dism::DismInitialize(2, 0, 0) +$Session = 0 +[void]$Dism::DismOpenSession('DISM_{53BFAE52-B167-4E2F-A258-0A37B57FF845}', 0, 0, [ref]$Session) +if (!$Dism::_DismSetEdition($Session, "$TargetEdition", "$Key", 0, 0, 0)) { + Restart-Computer +} +:dismapi:] + +::======================================================================================================================================== + +:: 1st column = Generic Retail/OEM/MAK/GVLK Key +:: 2nd column = Key Type +:: 3rd column = WMI Edition ID +:: 4th column = Version name incase same Edition ID is used in different OS versions with different key +:: Separator = _ + +:: For Windows 10/11 editions, HWID key is listed where ever possible, in Server versions, KMS key is listed where ever possible. +:: Only RS3 and older version Generic keys are stored here, later ones are extracted from the pkeyhelper.dll itself + +:changeeditiondata + +if %winbuild% GTR 17763 exit /b +if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.mum" (set Cor=Cor) else (set Cor=) + +set h= +for %%# in ( +XGVPP-NMH47-7TTHJ-W3FW7-8HV%h%2C__OEM:NONSLP_Enterprise +D6RD9-D4N8T-RT9QX-YW6YT-FCW%h%WJ______Retail_Starter +3V6Q6-NQXCX-V8YXR-9QCYV-QPF%h%CT__Volume:MAK_EnterpriseN +3NFXW-2T27M-2BDW6-4GHRV-68X%h%RX______Retail_StarterN +VK7JG-NPHTM-C97JM-9MPGT-3V6%h%6T______Retail_Professional +2B87N-8KFHP-DKV6R-Y2C8J-PKC%h%KT______Retail_ProfessionalN +4CPRK-NM3K3-X6XXQ-RXX86-WXC%h%HW______Retail_CoreN +N2434-X9D7W-8PF6X-8DV9T-8TY%h%MD______Retail_CoreCountrySpecific +BT79Q-G7N6G-PGBYW-4YWX6-6F4%h%BT______Retail_CoreSingleLanguage +YTMG3-N6DKC-DKB77-7M9GH-8HV%h%X7______Retail_Core +XKCNC-J26Q9-KFHD2-FKTHY-KD7%h%2Y__OEM:NONSLP_PPIPro +YNMGQ-8RYV3-4PGQ3-C8XTP-7CF%h%BY______Retail_Education +84NGF-MHBT6-FXBX8-QWJK7-DRR%h%8H______Retail_EducationN +NK96Y-D9CD8-W44CQ-R8YTK-DYJ%h%WX__OEM:NONSLP_EnterpriseS_RS1 +FWN7H-PF93Q-4GGP8-M8RF3-MDW%h%WW__OEM:NONSLP_EnterpriseS_TH +2DBW3-N2PJG-MVHW3-G7TDK-9HK%h%R4__Volume:MAK_EnterpriseSN_RS1 +NTX6B-BRYC2-K6786-F6MVQ-M7V%h%2X__Volume:MAK_EnterpriseSN_TH +G3KNM-CHG6T-R36X3-9QDG6-8M8%h%K9______Retail_ProfessionalSingleLanguage +HNGCC-Y38KG-QVK8D-WMWRK-X86%h%VK______Retail_ProfessionalCountrySpecific +DXG7C-N36C4-C4HTG-X4T3X-2YV%h%77______Retail_ProfessionalWorkstation +WYPNQ-8C467-V2W6J-TX4WX-WT2%h%RQ______Retail_ProfessionalWorkstationN +8PTT6-RNW4C-6V7J2-C2D3X-MHB%h%PB______Retail_ProfessionalEducation +GJTYN-HDMQY-FRR76-HVGC7-QPF%h%8P______Retail_ProfessionalEducationN +C4NTJ-CX6Q2-VXDMR-XVKGM-F9D%h%JC__Volume:MAK_EnterpriseG +46PN6-R9BK9-CVHKB-HWQ9V-MBJ%h%Y8__Volume:MAK_EnterpriseGN +NJCF7-PW8QT-3324D-688JX-2YV%h%66______Retail_ServerRdsh +V3WVW-N2PV2-CGWC3-34QGF-VMJ%h%2C______Retail_Cloud +NH9J3-68WK7-6FB93-4K3DF-DJ4%h%F6______Retail_CloudN +2HN6V-HGTM8-6C97C-RK67V-JQP%h%FD______Retail_CloudE +WC2BQ-8NRM3-FDDYY-2BFGV-KHK%h%QY_Volume:GVLK_ServerStandard%Cor%_RS1 +CB7KF-BWN84-R7R2Y-793K2-8XD%h%DG_Volume:GVLK_ServerDatacenter%Cor%_RS1 +JCKRF-N37P4-C2D82-9YXRT-4M6%h%3B_Volume:GVLK_ServerSolution_RS1 +QN4C6-GBJD2-FB422-GHWJK-GJG%h%2R_Volume:GVLK_ServerCloudStorage_RS1 +VP34G-4NPPG-79JTQ-864T4-R3M%h%QX_Volume:GVLK_ServerAzureCor_RS1 +9JQNQ-V8HQ6-PKB8H-GGHRY-R62%h%H6______Retail_ServerAzureNano_RS1 +VN8D3-PR82H-DB6BJ-J9P4M-92F%h%6J______Retail_ServerStorageStandard_RS1 +48TQX-NVK3R-D8QR3-GTHHM-8FH%h%XC______Retail_ServerStorageWorkgroup_RS1 +2HXDN-KRXHB-GPYC7-YCKFJ-7FV%h%DG_Volume:GVLK_ServerDatacenterACor_RS3 +PTXN8-JFHJM-4WC78-MPCBR-9W4%h%KR_Volume:GVLK_ServerStandardACor_RS3 +) do ( +for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C ( + +if not defined key ( +set 4th=%%D +if not defined 4th ( +set "key=%%A" & set "_chan=%%B" +) else ( +echo "%branch%" | find /i "%%D" %nul1% && (set "key=%%A" & set "_chan=%%B") +) +) +) +) +exit /b + +::======================================================================================================================================== +:: Leave empty line below -- cgit v1.2.3