technical:msactivation
Differences
This shows you the differences between two versions of the page.
| technical:msactivation [2024/10/12 22:22] – created wikiadmin | technical:msactivation [2026/08/03 16:48] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Microsoft Activation ====== | ||
| - | |||
| - | |||
| - | https:// | ||
| - | |||
| - | Download / How to use it? | ||
| - | |||
| - | ===== Method 1 - PowerShell ===== | ||
| - | |||
| - | (Recommended) | ||
| - | |||
| - | Right-click on the Windows start menu and select PowerShell or Terminal (Not CMD). | ||
| - | Copy and paste the code below and press enter | ||
| - | |||
| - | irm https:// | ||
| - | |||
| - | You will see the activation options. Follow the on-screen instructions. | ||
| - | That’s all | ||
| - | |||
| - | |||
| - | ===== Method 2 - Create a file ===== | ||
| - | |||
| - | |||
| - | MAS_AIO-CRC32_60BA35A8.cmd | ||
| - | |||
| - | Contents | ||
| - | < | ||
| - | @set masver=2.5 | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | |||
| - | |||
| - | :: For command line switches, check mass grave[.]dev/ | ||
| - | :: If you want to better understand script, read from MAS separate files version. | ||
| - | |||
| - | |||
| - | :: | ||
| - | :: | ||
| - | :: This script is a part of ' | ||
| - | :: | ||
| - | :: | ||
| - | :: Email: windowsaddict@protonmail.com | ||
| - | :: | ||
| - | :: | ||
| - | |||
| - | |||
| - | |||
| - | :: | ||
| - | |||
| - | :: Set Path variable, it helps if it is misconfigured in the system | ||
| - | |||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | :: 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 " | ||
| - | for %%# in (%*) do ( | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | reg add HKCU\Console /v QuickEdit /t REG_DWORD /d " | ||
| - | rem check the code below admin elevation to understand why it's here | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( | ||
| - | setlocal EnableDelayedExpansion | ||
| - | start %SystemRoot%\Sysnative\cmd.exe /c "" | ||
| - | 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 "" | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | :: Check if Null service is working, it's important for the batch script | ||
| - | |||
| - | sc query Null | find /i " | ||
| - | if %errorlevel% NEQ 0 ( | ||
| - | echo: | ||
| - | echo Null service is not running, script may crash... | ||
| - | echo: | ||
| - | echo: | ||
| - | echo Help - %mas%troubleshoot.html | ||
| - | echo: | ||
| - | echo: | ||
| - | ping 127.0.0.1 -n 10 | ||
| - | ) | ||
| - | cls | ||
| - | |||
| - | :: Check LF line ending | ||
| - | |||
| - | pushd " | ||
| - | >nul findstr /v " | ||
| - | echo: | ||
| - | echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing. | ||
| - | echo: | ||
| - | ping 127.0.0.1 -n 6 >nul | ||
| - | popd | ||
| - | exit /b | ||
| - | ) | ||
| - | popd | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Microsoft_Activation_Scripts %masver% | ||
| - | |||
| - | set _args= | ||
| - | set _elev= | ||
| - | set _MASunattended= | ||
| - | |||
| - | set _args=%* | ||
| - | if defined _args set _args=%_args:" | ||
| - | if defined _args ( | ||
| - | for %%A in (%_args%) do ( | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined _args echo " | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set winbuild=1 | ||
| - | set psc=powershell.exe | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | call :_colorprep | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %winbuild% LSS 7600 ( | ||
| - | %nceline% | ||
| - | echo Unsupported OS version detected [%winbuild%]. | ||
| - | echo Project is supported only for Windows 7/ | ||
| - | goto MASend | ||
| - | ) | ||
| - | |||
| - | for %%# in (powershell.exe) do @if " | ||
| - | %nceline% | ||
| - | echo Unable to find powershell.exe in the system. | ||
| - | echo Aborting... | ||
| - | goto MASend | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo " | ||
| - | if /i not " | ||
| - | %nceline% | ||
| - | 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 MASend | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Elevate script as admin and pass arguments and preventing loop | ||
| - | |||
| - | %nul1% fltmc || ( | ||
| - | if not defined _elev %psc% "start cmd.exe -arg '/c \" | ||
| - | %nceline% | ||
| - | echo This script needs admin rights. | ||
| - | echo To do so, right click on this script and select 'Run as administrator' | ||
| - | goto MASend | ||
| - | ) | ||
| - | |||
| - | if not exist " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 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 | ||
| - | |||
| - | if defined _MASunattended set quedit=1 | ||
| - | for %%# in (%_args%) do (if /i " | ||
| - | |||
| - | reg query HKCU\Console /v QuickEdit %nul2% | find /i " | ||
| - | reg add HKCU\Console /v QuickEdit /t REG_DWORD /d " | ||
| - | start cmd.exe /c "" | ||
| - | 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 for updates | ||
| - | |||
| - | set -= | ||
| - | set old= | ||
| - | |||
| - | for /f " | ||
| - | if not [%%#]==[] (echo " | ||
| - | ) | ||
| - | |||
| - | if defined old ( | ||
| - | echo ________________________________________________ | ||
| - | %eline% | ||
| - | echo You are running outdated version MAS %masver% | ||
| - | echo ________________________________________________ | ||
| - | echo: | ||
| - | 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] :" | ||
| - | choice /C:10 /N | ||
| - | if !errorlevel!==2 rem | ||
| - | if !errorlevel!==1 (start ht%-%tps:// | ||
| - | ) | ||
| - | ) | ||
| - | cls | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Run script with parameters in unattended mode | ||
| - | |||
| - | set _elev= | ||
| - | if defined _args echo " | ||
| - | if defined _args echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | setlocal DisableDelayedExpansion | ||
| - | |||
| - | :: Check desktop location | ||
| - | |||
| - | set _desktop_= | ||
| - | for /f " | ||
| - | if not defined _desktop_ for /f " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | :MainMenu | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Microsoft_Activation_Scripts %masver% | ||
| - | mode 76, 30 | ||
| - | |||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [1] HWID ^| Windows | ||
| - | echo: [2] Ohook | ||
| - | echo: [3] KMS38 | ||
| - | echo: [4] Online KMS ^| Windows / Office | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [5] Activation Status | ||
| - | echo: [6] Troubleshoot | ||
| - | echo: [7] Extras | ||
| - | echo: [8] Help | ||
| - | echo: [0] Exit | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | choice / | ||
| - | set _erl=%errorlevel% | ||
| - | |||
| - | if %_erl%==9 exit /b | ||
| - | if %_erl%==8 start %mas%troubleshoot.html & goto :MainMenu | ||
| - | if %_erl%==7 goto:Extras | ||
| - | if %_erl%==6 setlocal & call : | ||
| - | if %_erl%==5 setlocal & call : | ||
| - | if %_erl%==4 setlocal & call : | ||
| - | if %_erl%==3 setlocal & call : | ||
| - | if %_erl%==2 setlocal & call : | ||
| - | if %_erl%==1 setlocal & call : | ||
| - | goto :MainMenu | ||
| - | |||
| - | :: | ||
| - | |||
| - | :Extras | ||
| - | |||
| - | cls | ||
| - | title Extras | ||
| - | mode 76, 30 | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [1] Change Windows Edition | ||
| - | echo: | ||
| - | echo: [2] Extract $OEM$ Folder | ||
| - | echo: | ||
| - | echo: [3] Activation Status [vbs] | ||
| - | echo: | ||
| - | echo: [4] Download Genuine Windows / Office | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [0] Go to Main Menu | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | choice /C:12340 /N | ||
| - | set _erl=%errorlevel% | ||
| - | |||
| - | if %_erl%==5 goto :MainMenu | ||
| - | if %_erl%==4 start %mas%genuine-installation-media.html & goto :Extras | ||
| - | if %_erl%==3 setlocal & call : | ||
| - | if %_erl%==2 goto: | ||
| - | if %_erl%==1 setlocal & call : | ||
| - | goto :Extras | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | title Extract $OEM$ Folder | ||
| - | mode 76, 30 | ||
| - | |||
| - | if not exist " | ||
| - | %eline% | ||
| - | echo Desktop location was not detected, aborting... | ||
| - | echo _____________________________________________________ | ||
| - | echo: | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | goto Extras | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | %eline% | ||
| - | echo $OEM$ folder already exists on the Desktop. | ||
| - | echo _____________________________________________________ | ||
| - | echo: | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | goto Extras | ||
| - | ) | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | title Extract $OEM$ Folder | ||
| - | mode 78, 30 | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [1] HWID | ||
| - | echo: [2] Ohook | ||
| - | echo: [3] KMS38 | ||
| - | echo: [4] Online KMS | ||
| - | echo: | ||
| - | echo: [5] HWID | ||
| - | echo: [6] HWID | ||
| - | echo: [7] KMS38 ^(Windows^) ^+ Ohook ^(Office^) | ||
| - | echo: [8] KMS38 ^(Windows^) ^+ Online KMS ^(Office^) | ||
| - | echo: [9] Online KMS ^(Windows^) ^+ Ohook ^(Office^) | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | echo: [0] Go Back | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | choice / | ||
| - | set _erl=%errorlevel% | ||
| - | |||
| - | if %_erl%==11 goto:Extras | ||
| - | if %_erl%==10 start %mas%oem-folder.html & | ||
| - | if %_erl%==9 (set " | ||
| - | if %_erl%==8 (set " | ||
| - | if %_erl%==7 (set " | ||
| - | if %_erl%==6 (set " | ||
| - | if %_erl%==5 (set " | ||
| - | if %_erl%==4 (set " | ||
| - | if %_erl%==3 (set " | ||
| - | if %_erl%==2 (set " | ||
| - | if %_erl%==1 (set " | ||
| - | goto : | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | set " | ||
| - | md " | ||
| - | copy /y /b " | ||
| - | |||
| - | ( | ||
| - | echo @echo off | ||
| - | echo fltmc ^>nul ^|^| exit /b | ||
| - | echo call " | ||
| - | echo cd \ | ||
| - | echo ^(goto^) 2^>nul ^& ^(if " | ||
| - | )>" | ||
| - | |||
| - | set _error= | ||
| - | if not exist " | ||
| - | if not exist " | ||
| - | |||
| - | if defined _error ( | ||
| - | %eline% | ||
| - | echo Failed to extract $OEM$ folder on the Desktop. | ||
| - | ) else ( | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | call :_color %Green% "$OEM$ folder is successfully created on the Desktop." | ||
| - | ) | ||
| - | echo " | ||
| - | echo: | ||
| - | echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^), | ||
| - | echo Check this page %mas%oem-folder | ||
| - | ) | ||
| - | echo ___________________________________________________________________ | ||
| - | echo: | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | goto Extras | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | :: To activate, run the script with "/ | ||
| - | set _act=0 | ||
| - | |||
| - | :: To disable changing edition if current edition doesn' | ||
| - | set _NoEditionChange=0 | ||
| - | |||
| - | :: If value is changed in above lines or parameter is used then script will run in unattended mode | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title HWID Activation %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 " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%A in (%_act% %_NoEditionChange%) do (if " | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | for /F %%a in ('echo prompt $E ^| cmd') do set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if %~z0 GEQ 200000 ( | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %winbuild% LSS 10240 ( | ||
| - | %eline% | ||
| - | echo Unsupported OS version detected [%winbuild%]. | ||
| - | echo HWID Activation is supported only for Windows 10/11. | ||
| - | echo Use Online KMS Activation option. | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | %eline% | ||
| - | echo HWID Activation is not supported for Windows Server. | ||
| - | echo Use KMS38 or Online KMS Activation option. | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | mode 110, 34 | ||
| - | if exist " | ||
| - | title HWID Activation %masver% | ||
| - | |||
| - | echo: | ||
| - | echo Initializing... | ||
| - | |||
| - | :: Check PowerShell | ||
| - | |||
| - | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i " | ||
| - | %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 dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | call :dk_product | ||
| - | call : | ||
| - | |||
| - | :: 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% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check if system is permanently activated or not | ||
| - | |||
| - | call : | ||
| - | if defined _perm ( | ||
| - | cls | ||
| - | echo ___________________________________________________________________________________________ | ||
| - | echo: | ||
| - | call :dk_color2 %_White% " | ||
| - | call :dk_color2 %_White% " | ||
| - | echo ___________________________________________________________________________________________ | ||
| - | if %_unattended%==1 goto dk_done | ||
| - | echo: | ||
| - | choice /C:10 /N /M "> | ||
| - | if errorlevel 2 exit /b | ||
| - | ) | ||
| - | cls | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Evaluation version | ||
| - | |||
| - | if exist " | ||
| - | reg query " | ||
| - | %eline% | ||
| - | echo [%winos% ^| %winbuild%] | ||
| - | echo: | ||
| - | echo Evaluation Editions cannot be activated. | ||
| - | echo You need to install full version of %winos% | ||
| - | echo: | ||
| - | echo Download it from here, | ||
| - | echo %mas%genuine-installation-media.html | ||
| - | goto dk_done | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | call : | ||
| - | |||
| - | if not defined osSKU ( | ||
| - | %eline% | ||
| - | echo SKU value was not detected properly. Aborting... | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set error= | ||
| - | |||
| - | cls | ||
| - | echo: | ||
| - | for /f " | ||
| - | for /f " | ||
| - | echo Checking OS Info [%winos% ^| %fullbuild% ^| %arch%] | ||
| - | |||
| - | :: Check Internet connection | ||
| - | |||
| - | set _int= | ||
| - | for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _int ( | ||
| - | for /f " | ||
| - | ) | ||
| - | |||
| - | if not defined _int ( | ||
| - | %psc% " | ||
| - | if !errorlevel!==0 (set _int=1& | ||
| - | ) | ||
| - | |||
| - | if defined _int ( | ||
| - | echo Checking Internet Connection | ||
| - | ) else ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Windows Script Host | ||
| - | |||
| - | set _WSH=1 | ||
| - | reg query " | ||
| - | reg query " | ||
| - | |||
| - | if %_WSH% EQU 0 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | if not " | ||
| - | echo Enabling Windows Script Host [Successful] | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo Initiating Diagnostic Tests... | ||
| - | |||
| - | set " | ||
| - | if %winbuild% GEQ 17134 set " | ||
| - | |||
| - | :: Client License Service (ClipSVC) | ||
| - | :: Microsoft Account Sign-in Assistant | ||
| - | :: Software Protection | ||
| - | :: CNG Key Isolation | ||
| - | :: Windows License Manager Service | ||
| - | :: Windows Management Instrumentation | ||
| - | :: Delivery Optimization | ||
| - | :: Update Orchestrator Service | ||
| - | :: Cryptographic Services | ||
| - | :: Background Intelligent Transfer Service | ||
| - | :: Windows Modules Installer | ||
| - | :: Windows Update | ||
| - | :: Windows Update Medic Service | ||
| - | |||
| - | call : | ||
| - | |||
| - | :: Check Windows updates and store app blockers | ||
| - | |||
| - | set updatesblock= | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v SettingsPageVisibility %nul2% | find /i " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateSysprepInProgress %nul% && set updatesblock=1 | ||
| - | reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s %nul2% | findstr /i " | ||
| - | |||
| - | if defined updatesblock call :dk_color %Gray% " | ||
| - | |||
| - | if defined applist echo: %serv_e% | find /i " | ||
| - | call :dk_color %Blue% " | ||
| - | reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v WubLock %nul% && call :dk_color %Blue% " | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | call :dk_color %Gray% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Detect Key | ||
| - | |||
| - | set key= | ||
| - | set altkey= | ||
| - | set skufound= | ||
| - | set changekey= | ||
| - | set altapplist= | ||
| - | set altedition= | ||
| - | set notworking= | ||
| - | |||
| - | if defined applist call :hwiddata key | ||
| - | if not defined key ( | ||
| - | for /f " | ||
| - | if defined altapplist call :hwiddata key | ||
| - | ) | ||
| - | |||
| - | if defined notworking call : | ||
| - | if not defined key call : | ||
| - | |||
| - | if defined altkey (set key=%altkey%& | ||
| - | |||
| - | if defined notworking if defined notfoundaltactID ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if not defined key ( | ||
| - | %eline% | ||
| - | echo [%winos% ^| %winbuild% ^| SKU: | ||
| - | if not defined skufound ( | ||
| - | echo Unable to find this product in the supported product list. | ||
| - | ) else ( | ||
| - | echo Required License files not found in %SystemRoot%\System32\spp\tokens\skus\ | ||
| - | ) | ||
| - | echo Make sure you are using updated version of the script. | ||
| - | echo %mas% | ||
| - | echo: | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | if defined notworking set error=1 | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Install key | ||
| - | |||
| - | echo: | ||
| - | if defined changekey ( | ||
| - | call :dk_color %Blue% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | if not %errorlevel%==0 cscript //nologo %windir%\system32\slmgr.vbs /ipk %key% %nul% | ||
| - | set errorcode=%errorlevel% | ||
| - | cmd /c exit /b %errorcode% | ||
| - | if %errorcode% NEQ 0 set " | ||
| - | |||
| - | if %errorcode% EQU 0 ( | ||
| - | call :dk_refresh | ||
| - | echo Installing Generic Product Key [%key%] [Successful] | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | if not defined error ( | ||
| - | if defined altapplist call :dk_color %Red% " | ||
| - | call :dk_color %Blue% " | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | set error=1 | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Change Windows region to USA to avoid activation issues as Windows store license is not available in many countries | ||
| - | |||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | set regionchange= | ||
| - | if not " | ||
| - | set regionchange=1 | ||
| - | %psc% " | ||
| - | if !errorlevel! EQU 0 ( | ||
| - | echo Changing Windows Region To USA [Successful] | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Generate GenuineTicket.xml and apply | ||
| - | :: In some cases clipup -v -o method fails and in some cases service restart method fails as well | ||
| - | :: To maximize success rate and get better error details, script will install tickets two times (service restart + clipup -v -o) | ||
| - | |||
| - | if not exist %SystemRoot%\system32\ClipUp.exe ( | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | goto :dl_final | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | if not exist " | ||
| - | |||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | |||
| - | call :hwiddata ticket | ||
| - | |||
| - | copy /y /b " | ||
| - | |||
| - | if not exist " | ||
| - | call :dk_color %Red% " | ||
| - | echo [%encoded%] | ||
| - | if exist " | ||
| - | goto :dl_final | ||
| - | ) else ( | ||
| - | echo Generating GenuineTicket.xml | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | %psc% Restart-Service ClipSVC %nul% | ||
| - | %_xmlexist% timeout /t 2 %nul% | ||
| - | %_xmlexist% timeout /t 2 %nul% | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | set error=1 | ||
| - | if exist " | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | copy /y /b " | ||
| - | clipup -v -o | ||
| - | |||
| - | set rebuildinfo= | ||
| - | |||
| - | if not exist %ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat ( | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if defined applist if not defined showfix if defined rebuildinfo ( | ||
| - | set showfix=1 | ||
| - | call :dk_color %Blue% " | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | |||
| - | :: | ||
| - | |||
| - | call :dk_product | ||
| - | |||
| - | echo: | ||
| - | echo Activating... | ||
| - | |||
| - | call :dk_act | ||
| - | call : | ||
| - | if defined _perm ( | ||
| - | echo: | ||
| - | call :dk_color %Green% " | ||
| - | goto :dl_final | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Extended licensing servers tests incase error not found and activation failed | ||
| - | |||
| - | set resfail= | ||
| - | if not defined error ( | ||
| - | |||
| - | ipconfig /flushdns %nul% | ||
| - | set " | ||
| - | |||
| - | for %%# in ( | ||
| - | login.live.com/ | ||
| - | purchase.mp.microsoft.com/ | ||
| - | ) do if not defined resfail ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | %psc% "!tls! !d1!" %nul2% | findstr /i " | ||
| - | ) | ||
| - | |||
| - | if not defined resfail ( | ||
| - | %psc% "!tls! irm https:// | ||
| - | ) | ||
| - | |||
| - | if defined resfail ( | ||
| - | set error=1 | ||
| - | echo: | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%licensing-servers-issue" | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Clear store ID related registry to fix activation incase error not found | ||
| - | |||
| - | if not defined error ( | ||
| - | echo: | ||
| - | set " | ||
| - | reg delete " | ||
| - | reg query " | ||
| - | call :dk_color %Red% " | ||
| - | ) || ( | ||
| - | echo Deleting a Registry | ||
| - | ) | ||
| - | |||
| - | REM Refresh some services and license status | ||
| - | |||
| - | for %%# in (wlidsvc LicenseManager sppsvc) do (%psc% Restart-Service %%# %nul%) | ||
| - | call :dk_refresh | ||
| - | call :dk_act | ||
| - | call : | ||
| - | ) | ||
| - | |||
| - | REM Check Internet related error codes | ||
| - | |||
| - | if not defined error if not defined _perm ( | ||
| - | echo " | ||
| - | set error=1 | ||
| - | echo: | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%licensing-servers-issue" | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo: | ||
| - | if defined _perm ( | ||
| - | call :dk_color %Green% " | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | 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." | ||
| - | ) else ( | ||
| - | if not defined error call :dk_color %Blue% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :dl_final | ||
| - | |||
| - | echo: | ||
| - | |||
| - | if defined regionchange ( | ||
| - | %psc% " | ||
| - | if !errorlevel! EQU 0 ( | ||
| - | echo Restoring Windows Region | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if %osSKU%==175 call :dk_color %Red% " | ||
| - | |||
| - | goto :dk_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check SKU value | ||
| - | |||
| - | : | ||
| - | |||
| - | set osSKU= | ||
| - | set slcSKU= | ||
| - | set wmiSKU= | ||
| - | set regSKU= | ||
| - | |||
| - | if %winbuild% GEQ 14393 (set info=Kernel-BrandingInfo) else (set info=Kernel-ProductInfo) | ||
| - | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $Sku = 0; [void]$TypeBuilder.CreateType():: | ||
| - | for /f " | ||
| - | if " | ||
| - | if 1%slcSKU% NEQ +1%slcSKU% set slcSKU= | ||
| - | |||
| - | for /f " | ||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | |||
| - | set osSKU=%slcSKU% | ||
| - | if not defined osSKU set osSKU=%wmiSKU% | ||
| - | if not defined osSKU set osSKU=%regSKU% | ||
| - | exit /b | ||
| - | |||
| - | :: Get Windows permanent activation status | ||
| - | |||
| - | : | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingProduct where (LicenseStatus=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | exit /b | ||
| - | |||
| - | :: Refresh license status | ||
| - | |||
| - | :dk_refresh | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | exit /b | ||
| - | |||
| - | :: Activation command | ||
| - | |||
| - | :dk_act | ||
| - | |||
| - | set error_code= | ||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingProduct where " | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | if not %errorlevel%==0 cscript //nologo %windir%\system32\slmgr.vbs /ato %nul% | ||
| - | set error_code=%errorlevel% | ||
| - | cmd /c exit /b %error_code% | ||
| - | if %error_code% NEQ 0 (set " | ||
| - | exit /b | ||
| - | |||
| - | :: Get Windows Activation IDs | ||
| - | |||
| - | :dk_actids | ||
| - | |||
| - | set applist= | ||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkapp% do (if defined applist (call set " | ||
| - | exit /b | ||
| - | |||
| - | :: Get Activation IDs from licensing files if not found through WMI | ||
| - | |||
| - | : | ||
| - | $folderPath = " | ||
| - | $files = Get-ChildItem -Path $folderPath -Recurse -Filter " | ||
| - | $guids = @() | ||
| - | foreach ($file in $files) { | ||
| - | $content = Get-Content -Path $file.FullName -Raw | ||
| - | $matches = [regex]:: | ||
| - | foreach ($match in $matches) { | ||
| - | $guids += $match.Groups[1].Value | ||
| - | } | ||
| - | } | ||
| - | $guids = $guids | Select-Object -Unique | ||
| - | $guidsString = $guids -join " " | ||
| - | $guidsString | ||
| - | : | ||
| - | |||
| - | :: Check wmic.exe | ||
| - | |||
| - | : | ||
| - | |||
| - | set _wmic=0 | ||
| - | for %%# in (wmic.exe) do @if not " | ||
| - | wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i " | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: Get Product name (WMI/REG methods are not reliable in all conditions, hence winbrand.dll method is used) | ||
| - | |||
| - | :dk_product | ||
| - | |||
| - | call : | ||
| - | |||
| - | set d1=%ref% $meth = $TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $meth.SetImplementationFlags(128); | ||
| - | |||
| - | set winos= | ||
| - | for /f " | ||
| - | echo " | ||
| - | for /f " | ||
| - | if %winbuild% GEQ 22000 ( | ||
| - | set winos=!winos: | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: Common lines used in PowerShell reflection code | ||
| - | |||
| - | : | ||
| - | |||
| - | set ref=$AssemblyBuilder = [AppDomain]:: | ||
| - | set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, | ||
| - | set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0); | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | set showfix= | ||
| - | |||
| - | :: Check corrupt services | ||
| - | |||
| - | set serv_cor= | ||
| - | for %%# in (%_serv%) do ( | ||
| - | set _corrupt= | ||
| - | sc start %%# %nul% | ||
| - | if !errorlevel! EQU 1060 set _corrupt=1 | ||
| - | sc query %%# %nul% || set _corrupt=1 | ||
| - | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt ( | ||
| - | reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# | ||
| - | if /i %%# | ||
| - | ) | ||
| - | |||
| - | if defined _corrupt (if defined serv_cor (set " | ||
| - | ) | ||
| - | |||
| - | if defined serv_cor ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check disabled services | ||
| - | |||
| - | set serv_ste= | ||
| - | for %%# in (%_serv%) do ( | ||
| - | sc start %%# %nul% | ||
| - | if !errorlevel! EQU 1058 (if defined serv_ste (set " | ||
| - | ) | ||
| - | |||
| - | :: Change disabled services startup type to default | ||
| - | |||
| - | set serv_csts= | ||
| - | set serv_cste= | ||
| - | |||
| - | if defined serv_ste ( | ||
| - | for %%# in (%serv_ste%) do ( | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if /i %%# | ||
| - | if !errorlevel!==0 ( | ||
| - | if defined serv_csts (set " | ||
| - | ) else ( | ||
| - | if defined serv_cste (set " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined serv_csts call :dk_color %Gray% " | ||
| - | |||
| - | if defined serv_cste ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check if the services are able to run or not | ||
| - | :: Workarounds are added to get correct status and error code because sc query doesn' | ||
| - | |||
| - | set serv_e= | ||
| - | for %%# in (%_serv%) do ( | ||
| - | set errorcode= | ||
| - | set checkerror= | ||
| - | |||
| - | sc query %%# | find /i " | ||
| - | %psc% Start-Service %%# %nul% | ||
| - | set errorcode=!errorlevel! | ||
| - | sc query %%# | find /i " | ||
| - | ) | ||
| - | |||
| - | sc start %%# %nul% | ||
| - | if !errorlevel! NEQ 1056 if !errorlevel! NEQ 0 (set errorcode=!errorlevel!& | ||
| - | if defined checkerror if defined serv_e (set " | ||
| - | ) | ||
| - | |||
| - | if defined serv_e ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | echo %serv_e% | findstr /i " | ||
| - | call :dk_color %Blue% " | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Various error checks | ||
| - | |||
| - | if defined safeboot_option ( | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color2 %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | for /f " | ||
| - | if /i not " | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | echo " | ||
| - | set showfix=1 | ||
| - | call :dk_color %Blue% "You need to run it in normal mode in case you are running it in Audit Mode." | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | |||
| - | reg query " | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color2 %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | set wpainfo= | ||
| - | set wpaerror= | ||
| - | for /f " | ||
| - | echo " | ||
| - | set error=1 | ||
| - | set wpaerror=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) || ( | ||
| - | echo Checking WPA Registry Count | ||
| - | ) | ||
| - | |||
| - | |||
| - | DISM /English /Online / | ||
| - | set dism_error=%errorlevel% | ||
| - | cmd /c exit /b %dism_error% | ||
| - | if %dism_error% NEQ 0 set " | ||
| - | if %dism_error% NEQ 0 ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | if not defined officeact if exist " | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Blue% " | ||
| - | call :dk_color %Blue% "It is recommended to install full version of %winos%." | ||
| - | call :dk_color %Blue% "You can download it from %mas%genuine-installation-media.html" | ||
| - | ) | ||
| - | |||
| - | |||
| - | set osedition= | ||
| - | for /f " | ||
| - | |||
| - | :: Workaround for an issue in builds between 1607 and 1709 where ProfessionalEducation is shown as Professional | ||
| - | |||
| - | if " | ||
| - | if " | ||
| - | |||
| - | if not defined officeact ( | ||
| - | if not defined osedition ( | ||
| - | call :dk_color %Red% " | ||
| - | ) else ( | ||
| - | |||
| - | if not exist " | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if not exist " | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | |||
| - | cscript //nologo %windir%\system32\slmgr.vbs /dlv %nul% | ||
| - | set error_code=%errorlevel% | ||
| - | cmd /c exit /b %error_code% | ||
| - | if %error_code% NEQ 0 set " | ||
| - | if %error_code% NEQ 0 ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | for %%# in (wmic.exe) do @if " | ||
| - | call :dk_color %Gray% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | set wmifailed= | ||
| - | if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i " | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | |||
| - | if %errorlevel% NEQ 0 set wmifailed=1 | ||
| - | echo " | ||
| - | if defined wmifailed ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Blue% "In MAS, Goto Troubleshoot and run Fix WMI option." | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | |||
| - | |||
| - | %nul% set /a " | ||
| - | set /a " | ||
| - | if not defined officeact if not " | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | reg query " | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color2 %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | reg query " | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color2 %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | for /f " | ||
| - | reg add " | ||
| - | call :dk_color %Red% " | ||
| - | %psc% Restart-Service sppsvc %nul% | ||
| - | set error=1 | ||
| - | ) | ||
| - | |||
| - | |||
| - | reg query " | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% " | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | |||
| - | |||
| - | set tokenstore= | ||
| - | for /f " | ||
| - | if not exist " | ||
| - | set error=1 | ||
| - | REM This code creates token folder only if it's missing and sets default permission for it | ||
| - | mkdir " | ||
| - | set " | ||
| - | set "d=!d! $AclObject = New-Object System.Security.AccessControl.DirectorySecurity;" | ||
| - | set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" | ||
| - | set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" | ||
| - | %psc% " | ||
| - | call :dk_color %Gray% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | call :dk_actids | ||
| - | if not defined applist ( | ||
| - | %psc% Stop-Service sppsvc %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 ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | |||
| - | if exist " | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | if not exist %SystemRoot%\system32\sppsvc.exe ( | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | :: This code checks if NT SERVICE\sppsvc has permission access to tokens folder and required registry keys. It's often caused by gaming spoofers. | ||
| - | |||
| - | set permerror= | ||
| - | if not exist " | ||
| - | |||
| - | for %%# in ( | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | ) do if not defined permerror ( | ||
| - | %psc% "$acl = Get-Acl ' | ||
| - | if !errorlevel!==2 set permerror=1 | ||
| - | ) | ||
| - | if defined permerror ( | ||
| - | set error=1 | ||
| - | set showfix=1 | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Blue% " | ||
| - | ) | ||
| - | |||
| - | |||
| - | :: If required services are not disabled or corrupted + if there is any error + slmgr /dlv errorlevel is not Zero + no fix was shown before | ||
| - | |||
| - | if not defined serv_cor if not defined serv_cste if defined error if /i not %error_code%==0 if not defined showfix ( | ||
| - | set showfix=1 | ||
| - | call :dk_color %Blue% " | ||
| - | if not defined permerror call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option." | ||
| - | ) | ||
| - | |||
| - | if not defined showfix if defined wpaerror ( | ||
| - | set showfix=1 | ||
| - | call :dk_color %Blue% "If activation fails then go back to Main Menu, select Troubleshoot and run Fix WPA Registry option." | ||
| - | ) | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may appear even on healthy systems | ||
| - | |||
| - | :wpatest: | ||
| - | $wpaKey = [Microsoft.Win32.RegistryKey]:: | ||
| - | $count = $wpaKey.SubKeyCount | ||
| - | |||
| - | $osVersion = [System.Environment]:: | ||
| - | $minBuildNumber = 14393 | ||
| - | |||
| - | if ($osVersion.Build -ge $minBuildNumber) { | ||
| - | $subkeyHashTable = @{} | ||
| - | foreach ($subkeyName in $wpaKey.GetSubKeyNames()) { | ||
| - | $keyNumber = $subkeyName -replace ' | ||
| - | $subkeyHashTable[$keyNumber] = $true | ||
| - | } | ||
| - | for ($i=1; $i -le $count; $i++) { | ||
| - | if (-not $subkeyHashTable.ContainsKey(" | ||
| - | Write-Host "Total Keys $count. Error Found- $i key does not exist" | ||
| - | $wpaKey.Close() | ||
| - | exit | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | $wpaKey.GetSubKeyNames() | ForEach-Object { | ||
| - | $subkey = $wpaKey.OpenSubKey($_) | ||
| - | $p = $subkey.GetValueNames() | ||
| - | if (($p | Where-Object { $subkey.GetValueKind($_) -eq [Microsoft.Win32.RegistryValueKind]:: | ||
| - | Write-Host "Total Keys $count. Error Found- Binary Data is corrupt" | ||
| - | $wpaKey.Close() | ||
| - | exit | ||
| - | } | ||
| - | } | ||
| - | $count | ||
| - | $wpaKey.Close() | ||
| - | :wpatest: | ||
| - | |||
| - | :: | ||
| - | |||
| - | :dk_color | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | echo %esc%[%~1%~2%esc%[0m | ||
| - | ) else ( | ||
| - | %psc% write-host -back ' | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :dk_color2 | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m | ||
| - | ) else ( | ||
| - | %psc% write-host -back ' | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :dk_done | ||
| - | |||
| - | echo: | ||
| - | if %_unattended%==1 timeout /t 2 & exit /b | ||
| - | call :dk_color %_Yellow% "Press any key to %_exitmsg%..." | ||
| - | pause %nul1% | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 1st column = Activation ID | ||
| - | :: 2nd column = Generic Retail/ | ||
| - | :: 3rd column = SKU ID | ||
| - | :: 4th column = Key part number | ||
| - | :: 5th column = Ticket signature value. It's as it is, it's not encoded. (Check mass grave[.]dev/ | ||
| - | :: 6th column = 1 = activation is not working (at the time of writing this), 0 = activation is working | ||
| - | :: 7th column = Key Type | ||
| - | :: 8th column = WMI Edition ID (For reference only) | ||
| - | :: 9th column = Version name incase same Edition ID is used in different OS versions with different key | ||
| - | :: Separator | ||
| - | |||
| - | |||
| - | :hwiddata | ||
| - | |||
| - | set f= | ||
| - | for %%# in ( | ||
| - | 8b351c9c-f398-4515-9900-09df49427262_XG%f%VPP-NMH%f%47-7T%f%THJ-W3F%f%W7-8H%f%V2C___4_X19-99683_HGNKjkKcKQHO6n8srMUrDh/ | ||
| - | c83cef07-6b72-4bbc-a28f-a00386872839_3V%f%6Q6-NQX%f%CX-V8%f%YXR-9QC%f%YV-QP%f%FCT__27_X19-98746_NHn2n0N1UfVf00CfaI5LCDMDsKdVAWpD/ | ||
| - | 4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK%f%7JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T__48_X19-98841_Yl/ | ||
| - | 9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B%f%87N-8KF%f%HP-DK%f%V6R-Y2C%f%8J-PK%f%CKT__49_X19-98859_Ge0mRQbW8ALk7T09V+1k1yg66qoS0lhkgPIROOIOgxKmWPAvsiLAYPKDqM4+neFCA/ | ||
| - | f742e4ff-909d-4fe9-aacb-3231d24a0c58_4C%f%PRK-NM3%f%K3-X6%f%XXQ-RXX%f%86-WX%f%CHW__98_X19-98877_vel4ytVtnE8FhvN87Cflz9sbh5QwHD1YGOeej9QP7hF3vlBR4EX2/ | ||
| - | 1d1bac85-7365-4fea-949a-96978ec91ae0_N2%f%434-X9D%f%7W-8P%f%F6X-8DV%f%9T-8T%f%YMD__99_X19-99652_Nv17eUTrr1TmUX6frlI7V69VR6yWb7alppCFJPcdjfI+xX4/ | ||
| - | 3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT%f%79Q-G7N%f%6G-PG%f%BYW-4YW%f%X6-6F%f%4BT_100_X19-99661_FV2Eao/ | ||
| - | 2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YT%f%MG3-N6D%f%KC-DK%f%B77-7M9%f%GH-8H%f%VX7_101_X19-98868_GH/ | ||
| - | 2a6137f3-75c0-4f26-8e3e-d83d802865a4_XK%f%CNC-J26%f%Q9-KF%f%HD2-FKT%f%HY-KD%f%72Y_119_X19-99606_hci78IRWDLBtdbnAIKLDgV9whYgtHc1uYyp9y6FszE9wZBD5Nc8CUD2pI2s2RRd3M04C4O7M3tisB3Ov/ | ||
| - | e558417a-5123-4f6f-91e7-385c1c7ca9d4_YN%f%MGQ-8RY%f%V3-4P%f%GQ3-C8X%f%TP-7C%f%FBY_121_X19-98886_x9tPFDZmjZMf29zFeHV5SHbXj8Wd8YAcCn/ | ||
| - | c5198a66-e435-4432-89cf-ec777c9d0352_84%f%NGF-MHB%f%T6-FX%f%BX8-QWJ%f%K7-DR%f%R8H_122_X19-98892_jkL4YZkmBCJtvL1fT30ZPBcjmzshBSxjwrE0Q00AZ1hYnhrH+npzo1MPCT6ZRHw19ZLTz7wzyBb0qqcBVbtEjZW0Xs2MYLxgriyoONkhnPE6KSUJBw7C0enFVLHEqnVu/ | ||
| - | f6e29426-a256-4316-88bf-cc5b0f95ec0c_PJ%f%B47-8PN%f%2T-MC%f%GDY-JTY%f%3D-CB%f%CPV_125_X23-50331_OPGhsyx+Ctw7w/ | ||
| - | cce9d2de-98ee-4ce2-8113-222620c64a27_KC%f%NVH-YKW%f%X8-GJ%f%JB9-H9F%f%DT-6F%f%7W2_125_X22-66075_GCqWmJOsTVun9z4QkE9n2XqBvt3ZWSPl9QmIh9Q2mXMG/ | ||
| - | d06934ee-5448-4fd1-964a-cd077618aa06_43%f%TBQ-NH9%f%2J-XK%f%TM7-KT3%f%KK-P3%f%9PB_125_X21-83233_EpB6qOCo8pRgO5kL4vxEHck2J1vxyd9OqvxUenDnYO9AkcGWat/ | ||
| - | 706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK%f%96Y-D9C%f%D8-W4%f%4CQ-R8Y%f%TK-DY%f%JWX_125_X21-05035_ntcKmazIvLpZOryft28gWBHu1nHSbR+Gp143f/ | ||
| - | faa57748-75c8-40a2-b851-71ce92aa8b45_FW%f%N7H-PF9%f%3Q-4G%f%GP8-M8R%f%F3-MD%f%WWW_125_X19-99617_Fe9CDClilrAmwwT7Yhfx67GafWRQEpwyj8R+a4eaTqbpPcAt7d1hv1rx8Sa9AzopEGxIrb7IhiPoDZs0XaT1HN0/ | ||
| - | 837766ff-61c5-427d-87c3-a2acbd44767a_XF%f%C77-XNR%f%XM-2Q%f%36W-FCM%f%9T-YH%f%DJ9_126_X23-50304_h6V6Q4DL/ | ||
| - | 2c060131-0e43-4e01-adc1-cf5ad1100da8_RQ%f%FNW-9TP%f%M3-JQ%f%73T-QV4%f%VQ-DV%f%9PT_126_X22-66108_w/ | ||
| - | e8f74caa-03fb-4839-8bcc-2e442b317e53_M3%f%3WV-NHY%f%3C-R7%f%FPM-BQG%f%PT-23%f%9PG_126_X21-83264_Fl7tjifybEI9hArxMVFKqIqmI6mrCZy4EtJyVjpo2eSfeMTBli55+E0i2AaPfE2FJknUig7HuiNC1Pu2IWZcj5ShVFQEKPY6K// | ||
| - | 3d1022d8-969f-4222-b54b-327f5a5af4c9_2D%f%BW3-N2P%f%JG-MV%f%HW3-G7T%f%DK-9H%f%KR4_126_X21-04921_zLPNvcl1iqOefy0VLg+WZgNtRNhuGpn8+BFKjMqjaNOSKiuDcR6GNDS5FF1Aqk6/ | ||
| - | 60c243e1-f90b-4a1b-ba89-387294948fb6_NT%f%X6B-BRY%f%C2-K6%f%786-F6M%f%VQ-M7%f%V2X_126_X19-98770_kbXfe0z9Vi1S0yfxMWzI5+UtWsJKzxs7wLGUDLjrckFDn1bDQb4MvvuCK1w+Qrq33lemiGpNDspa+ehXiYEeSPFcCvUBpoMlGBFfzurNCHWiv3o1k3jBoawJr/ | ||
| - | 01eb852c-424d-4060-94b8-c10d799d7364_3X%f%P6D-CRN%f%D4-DR%f%YM2-GM8%f%4D-4G%f%G8Y_139_X23-37869_PVW0XnRJnsWYjTqxb6StCi2tge/ | ||
| - | eb6d346f-1c60-4643-b960-40ec31596c45_DX%f%G7C-N36%f%C4-C4%f%HTG-X4T%f%3X-2Y%f%V77_161_X21-43626_MaVqTkRrGnOqYizl15whCOKWzx01+BZTVAalvEuHXM+WV55jnIfhWmd/ | ||
| - | 89e87510-ba92-45f6-8329-3afa905e3e83_WY%f%PNQ-8C4%f%67-V2%f%W6J-TX4%f%WX-WT%f%2RQ_162_X21-43644_JVGQowLiCcPtGY9ndbBDV+rTu/ | ||
| - | 62f0c100-9c53-4e02-b886-a3528ddfe7f6_8P%f%TT6-RNW%f%4C-6V%f%7J2-C2D%f%3X-MH%f%BPB_164_X21-04955_CEDgxI8f/ | ||
| - | 13a38698-4a49-4b9e-8e83-98fe51110953_GJ%f%TYN-HDM%f%QY-FR%f%R76-HVG%f%C7-QP%f%F8P_165_X21-04956_r35zp9OfxKSBcTxKWon3zFtbOiCufAPo6xRGY5DJqCRFKdB0jgZalNQitvjmaZ/ | ||
| - | df96023b-dcd9-4be2-afa0-c6c871159ebe_NJ%f%CF7-PW8%f%QT-33%f%24D-688%f%JX-2Y%f%V66_175_X21-41295_rVpetYUmiRB48YJfCvJHiaZapJ0bO8gQDRoql+rq5IobiSRu// | ||
| - | d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3%f%WVW-N2P%f%V2-CG%f%WC3-34Q%f%GF-VM%f%J2C_178_X21-32983_Xzme9hDZR6H0Yx0deURVdE6LiTOkVqWng5W/ | ||
| - | af5c9381-9240-417d-8d35-eb40cd03e484_NH%f%9J3-68W%f%K7-6F%f%B93-4K3%f%DF-DJ%f%4F6_179_X21-32987_QGRDZOU/ | ||
| - | 8ab9bdd1-1f67-4997-82d9-8878520837d9_XQ%f%QYW-NFF%f%MW-XJ%f%PBH-K87%f%32-CK%f%FFD_188_X21-99378_djy0od0uuKd2rrIl+V1/ | ||
| - | ed655016-a9e8-4434-95d9-4345352c2552_QP%f%M6N-7J2%f%WJ-P8%f%8HH-P3Y%f%RH-YY%f%74H_191_X21-99682_qHs/ | ||
| - | 6c4de1b8-24bb-4c17-9a77-7b939414c298_CG%f%K42-GYN%f%6Y-VD%f%22B-BX9%f%8W-J8%f%JXD_191_X23-12617_J/ | ||
| - | d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9%f%VKN-3BG%f%WV-Y6%f%24W-MCR%f%MQ-BH%f%DCD_202_X22-53884_kyoNx2s93U6OUSklB1xn+GXcwCJO1QTEtACYnChi8aXSoxGQ6H2xHfUdHVCwUA1OR0UeNcRrMmOzZBOEUBtdoGWSYPg9AMjvxlxq9JOzYAH+G6lT0UbCWgMSGGrqdcIfmshyEak3aUmsZK6l+uIAFCCZZ/ | ||
| - | 92fb8726-92a8-4ffc-94ce-f82e07444653_KY%f%7PN-VR6%f%RX-83%f%W6Y-6DD%f%YQ-T6%f%R4W_203_X22-53847_gD6HnT4jP4rcNu9u83gvDiQq1xs7QSujcDbo60Di5iSVa9/ | ||
| - | 5a85300a-bfce-474f-ac07-a30983e3fb90_N9%f%79K-XWD%f%77-YW%f%3GB-HBG%f%H6-D3%f%2MH_205_X23-15042_blZopkUuayCTgZKH4bOFiisH9GTAHG5/ | ||
| - | 80083eae-7031-4394-9e88-4901973d56fe_P8%f%Q7T-WNK%f%7X-PM%f%FXY-VXH%f%BG-RR%f%K69_206_X23-62084_habUJ0hhAG0P8iIKaRQ74/ | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | |||
| - | REM Detect key | ||
| - | |||
| - | if %1==key if %osSKU%==%%C if not defined key ( | ||
| - | set skufound=1 | ||
| - | echo " | ||
| - | if %%F==1 set notworking=1 | ||
| - | set key=%%B | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | REM Generate ticket | ||
| - | |||
| - | if %1==ticket if " | ||
| - | set " | ||
| - | for /f " | ||
| - | echo " | ||
| - | |||
| - | <nul set /p " | ||
| - | ) | ||
| - | |||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Below code is used to get alternate edition name and key if current edition doesn' | ||
| - | |||
| - | :: 1st column = Current SKU ID | ||
| - | :: 2nd column = Current Edition Name | ||
| - | :: 3rd column = Current Edition Activation ID | ||
| - | :: 4th column = Alternate Edition Activation ID | ||
| - | :: 5th column = Alternate Edition HWID Key | ||
| - | :: 6th column = Alternate Edition Name | ||
| - | :: Separator | ||
| - | |||
| - | |||
| - | : | ||
| - | |||
| - | set notfoundaltactID= | ||
| - | if %_NoEditionChange%==1 exit /b | ||
| - | |||
| - | for %%# in ( | ||
| - | 125_EnterpriseS-2021_______________cce9d2de-98ee-4ce2-8113-222620c64a27_ed655016-a9e8-4434-95d9-4345352c2552_QPM%f%6N-7J2%f%WJ-P8%f%8HH-P3Y%f%RH-YY%f%74H_IoTEnterpriseS-2021 | ||
| - | 125_EnterpriseS-2024_______________f6e29426-a256-4316-88bf-cc5b0f95ec0c_6c4de1b8-24bb-4c17-9a77-7b939414c298_CGK%f%42-GYN%f%6Y-VD%f%22B-BX9%f%8W-J8%f%JXD_IoTEnterpriseS-2024 | ||
| - | 138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T_Professional | ||
| - | 139_ProfessionalCountrySpecific____f7af7d09-40e4-419c-a49b-eae366689ebd_4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T_Professional | ||
| - | 139_ProfessionalCountrySpecific-Zn_01eb852c-424d-4060-94b8-c10d799d7364_4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7%f%JG-NPH%f%TM-C9%f%7JM-9MP%f%GT-3V%f%66T_Professional | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | echo " | ||
| - | echo " | ||
| - | set altkey=%%E | ||
| - | set altedition=%%F | ||
| - | ) || ( | ||
| - | set altedition=%%F | ||
| - | set notfoundaltactID=1 | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | :: To activate Office with Ohook activation, run the script with "/ | ||
| - | set _act=0 | ||
| - | |||
| - | :: To remove Ohook activation, run the script with / | ||
| - | set _rem=0 | ||
| - | |||
| - | :: If value is changed in above lines or parameter is used then script will run in unattended mode | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Ohook Activation %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 " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%A in (%_act% %_rem%) do (if " | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | for /F %%a in ('echo prompt $E ^| cmd') do set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if %~z0 GEQ 200000 ( | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | 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. | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %_rem%==1 goto : | ||
| - | |||
| - | :oh_menu | ||
| - | |||
| - | if %_unattended%==0 ( | ||
| - | cls | ||
| - | mode 76, 25 | ||
| - | title Ohook Activation %masver% | ||
| - | |||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo | ||
| - | echo: | ||
| - | echo [1] Install Ohook Office Activation | ||
| - | echo: | ||
| - | echo [2] Uninstall | ||
| - | echo | ||
| - | echo: | ||
| - | echo [3] Download Office | ||
| - | echo: | ||
| - | echo [0] %_exitmsg% | ||
| - | echo | ||
| - | echo: | ||
| - | call :dk_color2 %_White% " | ||
| - | choice /C:1230 /N | ||
| - | set _el=!errorlevel! | ||
| - | if !_el!==4 | ||
| - | if !_el!==3 | ||
| - | if !_el!==2 | ||
| - | if !_el!==1 | ||
| - | goto :oh_menu | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :oh_menu2 | ||
| - | |||
| - | cls | ||
| - | mode 130, 32 | ||
| - | %psc% "& | ||
| - | |||
| - | title Ohook Activation %masver% | ||
| - | |||
| - | echo: | ||
| - | echo Initializing... | ||
| - | |||
| - | :: Check PowerShell | ||
| - | |||
| - | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i " | ||
| - | %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 dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | call :dk_product | ||
| - | call : | ||
| - | |||
| - | :: 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% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set error= | ||
| - | |||
| - | cls | ||
| - | echo: | ||
| - | for /f " | ||
| - | for /f " | ||
| - | echo Checking OS Info [%winos% ^| %fullbuild% ^| %osarch%] | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Windows Script Host | ||
| - | |||
| - | set _WSH=1 | ||
| - | reg query " | ||
| - | reg query " | ||
| - | |||
| - | if %_WSH% EQU 0 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | if not " | ||
| - | echo Enabling Windows Script Host [Successful] | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo Initiating Diagnostic Tests... | ||
| - | |||
| - | set " | ||
| - | set officeact=1 | ||
| - | call : | ||
| - | |||
| - | :: Check unsupported office versions | ||
| - | |||
| - | set o14msi= | ||
| - | set o14c2r= | ||
| - | set o16uwp= | ||
| - | |||
| - | set _68=HKLM\SOFTWARE\Microsoft\Office | ||
| - | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | ||
| - | for /f " | ||
| - | for /f " | ||
| - | %nul% reg query %_68%\14.0\CVH /f Click2run /k && | ||
| - | %nul% reg query %_86%\14.0\CVH /f Click2run /k && | ||
| - | |||
| - | if %winbuild% GEQ 10240 %psc% " | ||
| - | |||
| - | if not " | ||
| - | echo: | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check supported office versions | ||
| - | |||
| - | call :oh_getpath | ||
| - | |||
| - | sc query ClickToRunSvc %nul% | ||
| - | set error1=%errorlevel% | ||
| - | |||
| - | if defined o16c2r if %error1% EQU 1060 ( | ||
| - | call :dk_color %Red% " | ||
| - | set o16c2r= | ||
| - | set error=1 | ||
| - | ) | ||
| - | |||
| - | sc query OfficeSvc %nul% | ||
| - | set error2=%errorlevel% | ||
| - | |||
| - | if defined o15c2r if %error1% EQU 1060 if %error2% EQU 1060 ( | ||
| - | call :dk_color %Red% " | ||
| - | set o15c2r= | ||
| - | set error=1 | ||
| - | ) | ||
| - | |||
| - | if " | ||
| - | set error=1 | ||
| - | echo: | ||
| - | if not " | ||
| - | call :dk_color %Red% " | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if %winbuild% GEQ 10240 %psc% " | ||
| - | echo: | ||
| - | echo You have only Office dashboard app installed, you need to install full Office version. | ||
| - | ) | ||
| - | echo: | ||
| - | call :dk_color %Blue% " | ||
| - | echo: | ||
| - | echo %mas%genuine-installation-media.html | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | set multioffice= | ||
| - | if not " | ||
| - | if not " | ||
| - | |||
| - | if defined multioffice ( | ||
| - | call :dk_color %Gray% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Process Office 15.0 C2R | ||
| - | |||
| - | if not defined o15c2r goto : | ||
| - | |||
| - | call :oh_reset | ||
| - | call :oh_actids | ||
| - | |||
| - | set oVer=15 | ||
| - | for /f " | ||
| - | for /f " | ||
| - | if not defined _oArch for /f " | ||
| - | |||
| - | echo " | ||
| - | for /f " | ||
| - | echo " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | if [%_oArch%]==[x64] (set " | ||
| - | if [%_oArch%]==[x86] (set " | ||
| - | if not [%osarch%]==[x86] ( | ||
| - | if [%_oArch%]==[x64] set " | ||
| - | if [%_oArch%]==[x86] set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Activating Office 15.0 %_oArch% C2R... | ||
| - | |||
| - | if not defined _oIds ( | ||
| - | call :dk_color %Red% " | ||
| - | set error=1 | ||
| - | goto : | ||
| - | ) | ||
| - | |||
| - | call :oh_process | ||
| - | call : | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | :: Process Office 16.0 C2R | ||
| - | |||
| - | if not defined o16c2r goto :startmsi | ||
| - | |||
| - | call :oh_reset | ||
| - | call :oh_actids | ||
| - | |||
| - | set oVer=16 | ||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | echo " | ||
| - | for /f " | ||
| - | echo " | ||
| - | ) | ||
| - | set _oIds=%_oIds: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | if [%_oArch%]==[x64] (set " | ||
| - | if [%_oArch%]==[x86] (set " | ||
| - | if not [%osarch%]==[x86] ( | ||
| - | if [%_oArch%]==[x64] set " | ||
| - | if [%_oArch%]==[x86] set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Activating Office 16.0 %_oArch% C2R... | ||
| - | |||
| - | if not defined _oIds ( | ||
| - | call :dk_color %Red% " | ||
| - | set error=1 | ||
| - | goto :startmsi | ||
| - | ) | ||
| - | |||
| - | call :oh_process | ||
| - | call : | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Find remnants of Office vNext license block and remove it because it stops non vNext licenses from appearing | ||
| - | :: https:// | ||
| - | |||
| - | set _sid= | ||
| - | set sub_next= | ||
| - | |||
| - | for /f " | ||
| - | |||
| - | if not defined _sid ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | dir /b /s /a:-d " | ||
| - | dir /b /s /a:-d " | ||
| - | |||
| - | for %%# in (!_sid! HKCU) do if not defined sub_next ( | ||
| - | reg query %%# | ||
| - | reg query %%# | ||
| - | set sub_next=1 | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined sub_next ( | ||
| - | rmdir /s /q " | ||
| - | rmdir /s /q " | ||
| - | for %%# in (!_sid! HKCU) do ( | ||
| - | reg delete %%# | ||
| - | reg delete %%# | ||
| - | reg delete %%# | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined sub_next echo Removing Office vNext Block | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Subscription products attempt to validate the license and may show a banner "There was a problem checking this device' | ||
| - | :: Resiliency registry entry can skip this check | ||
| - | |||
| - | if defined o16c2r ( | ||
| - | for %%# in (!_sid! HKCU) do (reg delete %%# | ||
| - | for %%# in (!_sid! HKCU) do ( | ||
| - | reg query " | ||
| - | reg add %%# | ||
| - | ) | ||
| - | ) | ||
| - | echo Adding Reg Keys To Skip License Check | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: mass grave[.]dev/ | ||
| - | :: Add registry keys for volume products so that ' | ||
| - | :: Script already is using MAK instead of GVLK so it won't appear anyway, but registry keys are added incase Office installs default GVLK grace key for volume products | ||
| - | |||
| - | echo " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if not [%osarch%]==[x86] ( | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | ) | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | echo Adding a Reg To Prevent Banner | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :startmsi | ||
| - | |||
| - | if defined o15msi call : | ||
| - | if defined o16msi call : | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Uninstall other / grace Keys | ||
| - | |||
| - | set upk_result=0 | ||
| - | set allapplist= | ||
| - | |||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkapp% do (if defined allapplist (call set " | ||
| - | |||
| - | for %%# in (%allapplist%) do ( | ||
| - | echo " | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /upk %%# %nul% && ( | ||
| - | set upk_result=1 | ||
| - | ) || ( | ||
| - | set error=1 | ||
| - | set upk_result=2 | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if not %upk_result%==0 echo: | ||
| - | if %upk_result%==1 echo Uninstalling Other/Grace Keys | ||
| - | if %upk_result%==2 call :dk_color %Red% " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Refresh Windows Insider Preview Licenses | ||
| - | :: It required in Insider versions otherwise office may not activate | ||
| - | |||
| - | if exist " | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | ||
| - | if !errorlevel! NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo: | ||
| - | if not defined error ( | ||
| - | call :dk_color %Green% " | ||
| - | echo Help: %mas%troubleshoot | ||
| - | ) else ( | ||
| - | call :dk_color %Red% "Some errors were detected." | ||
| - | if not defined ierror if not defined showfix if not defined serv_cor if not defined serv_cste call :dk_color %Blue% " | ||
| - | echo: | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | ) | ||
| - | |||
| - | goto :dk_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | mode 99, 28 | ||
| - | title Uninstall Ohook Activation %masver% | ||
| - | |||
| - | set _present= | ||
| - | set _unerror= | ||
| - | call :oh_reset | ||
| - | call :oh_getpath | ||
| - | |||
| - | echo: | ||
| - | echo Uninstalling Ohook Activation... | ||
| - | echo: | ||
| - | |||
| - | if defined o16c2r_reg (for /f " | ||
| - | if defined o15c2r_reg (for /f " | ||
| - | if defined o16msi_reg (for /f " | ||
| - | if defined o15msi_reg (for /f " | ||
| - | |||
| - | if defined _16CHook (if exist " | ||
| - | if defined _16CHook (if exist " | ||
| - | if defined _15CHook (if exist " | ||
| - | if defined _15CHook (if exist " | ||
| - | if defined _16MHook (if exist " | ||
| - | if defined _15MHook (if exist " | ||
| - | |||
| - | for %%# in (15 16) do ( | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%# in (System SystemX86) do ( | ||
| - | for %%G in (" | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | reg query HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency %nul% && ( | ||
| - | echo: | ||
| - | echo Deleting - Registry keys to skip license check | ||
| - | reg delete HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency /f | ||
| - | |||
| - | for /f " | ||
| - | for %%# in (!_sid!) do (reg query HKU\%%# | ||
| - | reg delete HKU\%%# | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | echo: | ||
| - | echo Deleting - Registry keys to prevent non-genuine banner | ||
| - | reg delete " | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | reg delete " | ||
| - | ) | ||
| - | |||
| - | echo __________________________________________________________________________________________ | ||
| - | echo: | ||
| - | |||
| - | if not defined _present ( | ||
| - | echo Ohook Activation is not installed. | ||
| - | ) else ( | ||
| - | if defined _unerror ( | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Blue% "Close Office apps if they are running and try again." | ||
| - | ) else ( | ||
| - | call :dk_color %Green% " | ||
| - | ) | ||
| - | ) | ||
| - | echo __________________________________________________________________________________________ | ||
| - | |||
| - | goto :dk_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | :oh_reset | ||
| - | |||
| - | set _oRoot= | ||
| - | set _oArch= | ||
| - | set _oIds= | ||
| - | set _oLPath= | ||
| - | set _hookPath= | ||
| - | set _hook= | ||
| - | set _sppcPath= | ||
| - | set _key= | ||
| - | set _actid= | ||
| - | set _prod= | ||
| - | set _lic= | ||
| - | set _License= | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :oh_getpath | ||
| - | |||
| - | set o16c2r= | ||
| - | set o15c2r= | ||
| - | set o16msi= | ||
| - | set o15msi= | ||
| - | |||
| - | set _68=HKLM\SOFTWARE\Microsoft\Office | ||
| - | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | ||
| - | |||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | if not %errorlevel%==0 cscript //nologo %windir%\system32\slmgr.vbs /ipk %_key% %nul% | ||
| - | set errorcode=%errorlevel% | ||
| - | cmd /c exit /b %errorcode% | ||
| - | if %errorcode% NEQ 0 set " | ||
| - | |||
| - | if %errorcode% EQU 0 ( | ||
| - | call :dk_refresh | ||
| - | echo Installing Generic Product Key [%_key%] [%_prod%] [%_lic%] [Successful] | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | if not defined error ( | ||
| - | call :dk_color %Blue% " | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | set error=1 | ||
| - | ) | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | if not defined _oLPath exit /b | ||
| - | |||
| - | if %oVer%==16 ( | ||
| - | " | ||
| - | ) else ( | ||
| - | " | ||
| - | ) | ||
| - | |||
| - | call :oh_actids | ||
| - | echo " | ||
| - | call :dk_color %Gray% " | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | :: Fallback to /ilc method to install licenses incase integrator.exe is not working | ||
| - | |||
| - | set _License=%_License: | ||
| - | |||
| - | set _License=%_License: | ||
| - | |||
| - | set _License=%_License: | ||
| - | set _License=%_License: | ||
| - | set _License=%_License: | ||
| - | set _License=%_License: | ||
| - | |||
| - | if defined _preview set _License=%_License: | ||
| - | |||
| - | set _License=%_License: | ||
| - | set _License=%_License: | ||
| - | |||
| - | for %%# in (" | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /ilc " | ||
| - | ) | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /ilc " | ||
| - | |||
| - | for %%# in (" | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /ilc " | ||
| - | ) | ||
| - | |||
| - | call :oh_actids | ||
| - | echo " | ||
| - | call :dk_color %Gray% " | ||
| - | ) || ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | set ierror= | ||
| - | set hasherror= | ||
| - | |||
| - | if %_hook%==sppc32.dll set offset=2564 | ||
| - | if %_hook%==sppc64.dll set offset=3076 | ||
| - | |||
| - | del /s /q " | ||
| - | del /s /q " | ||
| - | |||
| - | if exist " | ||
| - | if exist " | ||
| - | |||
| - | mklink " | ||
| - | if not %errorlevel%==0 set ierror=1 | ||
| - | |||
| - | if not exist " | ||
| - | if not exist " | ||
| - | |||
| - | echo: | ||
| - | if not defined ierror ( | ||
| - | echo Symlinking System' | ||
| - | echo Extracting Custom %_hook% To | ||
| - | ) else ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Red% " | ||
| - | echo [" | ||
| - | echo: | ||
| - | call :dk_color %Blue% "Close ALL Office apps including Outlook and try again." | ||
| - | call :dk_color %Blue% "If its still not resolved then restart system and try again." | ||
| - | ) | ||
| - | |||
| - | if not defined ierror ( | ||
| - | if defined hasherror ( | ||
| - | set error=1 | ||
| - | set ierror=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) else ( | ||
| - | echo Modifying Hash of Custom %_hook% | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :oh_process | ||
| - | |||
| - | for %%# in (%_oIds%) do ( | ||
| - | set _key= | ||
| - | set _actid= | ||
| - | set _lic= | ||
| - | set _preview= | ||
| - | set _License=%%# | ||
| - | |||
| - | echo %%# | find /i " | ||
| - | if exist " | ||
| - | ) | ||
| - | set _prod=%%# | ||
| - | |||
| - | call :ohookdata getinfo !_prod! | ||
| - | |||
| - | if not [!_key!]==[] ( | ||
| - | echo " | ||
| - | call : | ||
| - | ) else ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color %Blue% "Make sure you are using Latest MAS script." | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | set msitemp=%SystemRoot%\Temp\_msitemp.txt | ||
| - | |||
| - | if %oVer%==15 set _psmsikey=%o15msi_reg: | ||
| - | if %oVer%==16 set _psmsikey=%o16msi_reg: | ||
| - | |||
| - | if exist %msitemp% del /f /q %msitemp% | ||
| - | %psc% "$Key = ' | ||
| - | |||
| - | if exist %msitemp% call :ohookdata getmsiprod | ||
| - | if exist %msitemp% del /f /q %msitemp% | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | :: Process Office MSI Version | ||
| - | |||
| - | call :oh_reset | ||
| - | call :oh_actids | ||
| - | |||
| - | set oVer=%1 | ||
| - | for /f " | ||
| - | if " | ||
| - | |||
| - | echo " | ||
| - | if not [%osarch%]==[x86] if not defined _oArch set _oArch=x64 | ||
| - | if [%osarch%]==[x86] set _oArch=x86 | ||
| - | |||
| - | if [%_oArch%]==[x64] (set " | ||
| - | if [%_oArch%]==[x86] (set " | ||
| - | if not [%osarch%]==[x86] ( | ||
| - | if [%_oArch%]==[x64] set " | ||
| - | if [%_oArch%]==[x86] set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | call : | ||
| - | |||
| - | echo: | ||
| - | echo Activating Office %1.0 %_oArch% MSI... | ||
| - | |||
| - | if not defined _oIds ( | ||
| - | set error=1 | ||
| - | call :dk_color %Red% " | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | call :oh_process | ||
| - | call : | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Get Office Activation IDs | ||
| - | |||
| - | :oh_actids | ||
| - | |||
| - | set oapplist= | ||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkapp% do (if defined oapplist (call set " | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 1st column = Office version number | ||
| - | :: 2nd column = Activation ID | ||
| - | :: 3rd column = Generic key. Preference is given in this order, Retail: | ||
| - | :: 4th column = Last part of license description | ||
| - | :: 5th column = Edition | ||
| - | :: Separator | ||
| - | |||
| - | :ohookdata | ||
| - | |||
| - | set f= | ||
| - | for %%# in ( | ||
| - | 15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7%f%RFY-7N%f%XPK-Q43%f%42-Y9%f%X2H-3JX%f%4X_Retail________AccessRetail | ||
| - | 15_4374022d-56b8-48c1-9bb7-d8f2fc726343_9M%f%F9G-CN%f%32B-HV7%f%XT-9X%f%J8T-9KV%f%F4_MAK___________AccessVolume | ||
| - | 15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_NT%f%889-MB%f%H4X-8MD%f%4H-X8%f%R2D-WQH%f%F8_Retail________ExcelRetail | ||
| - | 15_ac1ae7fd-b949-4e04-a330-849bc40638cf_Y3%f%N36-YC%f%HDK-XYW%f%BG-KY%f%QVV-BDT%f%J2_MAK___________ExcelVolume | ||
| - | 15_cfaf5356-49e3-48a8-ab3c-e729ab791250_BM%f%K4W-6N%f%88B-BP9%f%QR-PH%f%FCK-MG7%f%GF_Retail________GrooveRetail | ||
| - | 15_4825ac28-ce41-45a7-9e6e-1fed74057601_RN%f%84D-7H%f%CWY-FTC%f%BK-JM%f%XWM-HT7%f%GJ_MAK___________GrooveVolume | ||
| - | 15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2W%f%QNF-GB%f%K4B-XVG%f%6F-BB%f%MX7-M4F%f%2Y_OEM-Perp______HomeBusinessPipcRetail | ||
| - | 15_a2b90e7a-a797-4713-af90-f0becf52a1dd_YW%f%D4R-CN%f%KVT-VG8%f%VJ-93%f%33B-RCW%f%9F_Subscription__HomeBusinessRetail | ||
| - | 15_f2de350d-3028-410a-bfae-283e00b44d0e_6W%f%W3N-BD%f%GM9-PCC%f%HD-9Q%f%PP9-P34%f%QG_Subscription__HomeStudentRetail | ||
| - | 15_44984381-406e-4a35-b1c3-e54f499556e2_RV%f%7NQ-HY%f%3WW-7CK%f%WH-QT%f%VMW-29V%f%HC_Retail________InfoPathRetail | ||
| - | 15_9e016989-4007-42a6-8051-64eb97110cf2_C4%f%TGN-QQ%f%W6Y-FYK%f%XC-6W%f%JW7-X73%f%VG_MAK___________InfoPathVolume | ||
| - | 15_9103f3ce-1084-447a-827e-d6097f68c895_6M%f%DN4-WF%f%3FV-4WH%f%3Q-W6%f%99V-RGC%f%MY_PrepidBypass__LyncAcademicRetail | ||
| - | 15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_N4%f%2BF-CB%f%Y9F-W2C%f%7R-X3%f%97X-DYF%f%QW_PrepidBypass__LyncEntryRetail | ||
| - | 15_fada6658-bfc6-4c4e-825a-59a89822cda8_89%f%P23-2N%f%K2R-JXM%f%2M-3Q%f%8R8-BWM%f%3Y_Retail________LyncRetail | ||
| - | 15_e1264e10-afaf-4439-a98b-256df8bb156f_3W%f%KCD-RN%f%489-4M7%f%XJ-GJ%f%2GQ-YBF%f%Q6_MAK___________LyncVolume | ||
| - | 15_69ec9152-153b-471a-bf35-77ec88683eae_VN%f%WHF-FK%f%FBW-Q2R%f%GD-HY%f%HWF-R3H%f%H2_Subscription__MondoRetail | ||
| - | 15_f33485a0-310b-4b72-9a0e-b1d605510dbd_2Y%f%NYQ-FQ%f%MVG-CB8%f%KW-6X%f%KYD-M7R%f%RJ_MAK___________MondoVolume | ||
| - | 15_3391e125-f6e4-4b1e-899c-a25e6092d40d_4T%f%GWV-6N%f%9P6-G2H%f%8Y-2H%f%WKB-B4F%f%F4_Bypass________OneNoteFreeRetail | ||
| - | 15_8b524bcc-67ea-4876-a509-45e46f6347e8_3K%f%XXQ-PV%f%N2C-8P7%f%YY-HC%f%V88-GVG%f%Q6_Retail________OneNoteRetail | ||
| - | 15_b067e965-7521-455b-b9f7-c740204578a2_JD%f%MWF-NJ%f%C7B-HRC%f%HY-WF%f%T8G-BPX%f%D9_MAK___________OneNoteVolume | ||
| - | 15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_9N%f%4RQ-CF%f%8R2-HBV%f%CB-J3%f%C9V-94P%f%4D_Retail________OutlookRetail | ||
| - | 15_8d577c50-ae5e-47fd-a240-24986f73d503_HN%f%G29-GG%f%WRG-RFC%f%8C-JT%f%FP4-2J9%f%FH_MAK___________OutlookVolume | ||
| - | 15_5aab8561-1686-43f7-9ff5-2c861da58d17_9C%f%YB3-NF%f%MRW-YFD%f%G6-XC%f%7TF-BY3%f%6J_OEM-Perp______PersonalPipcRetail | ||
| - | 15_17e9df2d-ed91-4382-904b-4fed6a12caf0_2N%f%CQJ-MF%f%RMH-TXV%f%83-J7%f%V4C-RVR%f%WC_Retail________PersonalRetail | ||
| - | 15_31743b82-bfbc-44b6-aa12-85d42e644d5b_HV%f%MN2-KP%f%HQH-DVQ%f%MK-7B%f%3CM-FGB%f%FC_Retail________PowerPointRetail | ||
| - | 15_e40dcb44-1d5c-4085-8e8f-943f33c4f004_47%f%DKN-HP%f%JP7-RF9%f%M3-VC%f%YT2-TMQ%f%4G_MAK___________PowerPointVolume | ||
| - | 15_064383fa-1538-491c-859b-0ecab169a0ab_N3%f%QMM-GK%f%DT3-JQG%f%X6-7X%f%3MQ-4GB%f%G3_Retail________ProPlusRetail | ||
| - | 15_2b88c4f2-ea8f-43cd-805e-4d41346e18a7_QK%f%HNX-M9%f%GGH-T3Q%f%MW-YP%f%K4Q-QRP%f%9V_MAK___________ProPlusVolume | ||
| - | 15_4e26cac1-e15a-4467-9069-cb47b67fe191_CF%f%9DD-6C%f%NW2-BJW%f%JQ-CV%f%CFX-Y7T%f%XD_OEM-Perp______ProfessionalPipcRetail | ||
| - | 15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_MB%f%QBN-CQ%f%PT6-PXR%f%MC-TY%f%JFR-3C8%f%MY_Retail________ProfessionalRetail | ||
| - | 15_2f72340c-b555-418d-8b46-355944fe66b8_WP%f%Y8N-PD%f%PY4-FC7%f%TF-KM%f%P7P-KWY%f%FY_Subscription__ProjectProRetail | ||
| - | 15_ed34dc89-1c27-4ecd-8b2f-63d0f4cedc32_WF%f%CT2-NB%f%FQ7-JD7%f%VV-MF%f%JX6-6F2%f%CM_MAK___________ProjectProVolume | ||
| - | 15_58d95b09-6af6-453d-a976-8ef0ae0316b1_NT%f%HQT-VK%f%K6W-BRB%f%87-HV%f%346-Y96%f%W8_Subscription__ProjectStdRetail | ||
| - | 15_2b9e4a37-6230-4b42-bee2-e25ce86c8c7a_3C%f%NQX-T3%f%4TY-99R%f%H4-C4%f%YD2-KWY%f%GV_MAK___________ProjectStdVolume | ||
| - | 15_c3a0814a-70a4-471f-af37-2313a6331111_TW%f%NCJ-YR%f%84W-X7P%f%PF-6D%f%PRP-D67%f%VC_Retail________PublisherRetail | ||
| - | 15_38ea49f6-ad1d-43f1-9888-99a35d7c9409_DJ%f%PHV-NC%f%JV6-GWP%f%T6-K2%f%6JX-C7G%f%X6_MAK___________PublisherVolume | ||
| - | 15_ba3e3833-6a7e-445a-89d0-7802a9a68588_3N%f%Y6J-WH%f%T3F-47B%f%DV-JH%f%F36-234%f%3W_PrepidBypass__SPDRetail | ||
| - | 15_32255c0a-16b4-4ce2-b388-8a4267e219eb_V6%f%VWN-KC%f%2HR-YYD%f%D6-9V%f%7HQ-7T7%f%VP_Retail________StandardRetail | ||
| - | 15_a24cca51-3d54-4c41-8a76-4031f5338cb2_9T%f%N6B-PC%f%YH4-MCV%f%DQ-KT%f%83C-TMQ%f%7T_MAK___________StandardVolume | ||
| - | 15_a56a3b37-3a35-4bbb-a036-eee5f1898eee_NV%f%K2G-2M%f%Y4G-7JX%f%2P-7D%f%6F2-VFQ%f%BR_Subscription__VisioProRetail | ||
| - | 15_3e4294dd-a765-49bc-8dbd-cf8b62a4bd3d_YN%f%7CF-XR%f%H6R-CGK%f%RY-GK%f%PV3-BG7%f%WF_MAK___________VisioProVolume | ||
| - | 15_980f9e3e-f5a8-41c8-8596-61404addf677_NC%f%RB7-VP%f%48F-43F%f%YY-62%f%P3R-367%f%WK_Subscription__VisioStdRetail | ||
| - | 15_44a1f6ff-0876-4edb-9169-dbb43101ee89_RX%f%63Y-4N%f%FK2-XTY%f%C8-C6%f%B3W-YPX%f%PJ_MAK___________VisioStdVolume | ||
| - | 15_191509f2-6977-456f-ab30-cf0492b1e93a_NB%f%77V-RP%f%FQ6-PMM%f%KQ-T8%f%7DV-M4D%f%84_Retail________WordRetail | ||
| - | 15_9cedef15-be37-4ff0-a08a-13a045540641_RP%f%HPB-Y7%f%NC4-3VY%f%FM-DW%f%7VD-G8Y%f%J8_MAK___________WordVolume | ||
| - | 15_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail | ||
| - | 15_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail | ||
| - | 15_149dbce7-a48e-44db-8364-a53386cd4580_2N%f%382-D6%f%PKK-QTX%f%4D-2J%f%JYK-M96%f%P2_Subscription1_O365ProPlusRetail | ||
| - | 15_bacd4614-5bef-4a5e-bafc-de4c788037a2_HN%f%8JP-87%f%TQJ-PBF%f%3P-Y6%f%6KC-W2K%f%9V_Subscription1_O365SmallBusPremRetail | ||
| - | 16_bfa358b0-98f1-4125-842e-585fa13032e6_WH%f%K4N-YQ%f%GHB-XWX%f%CC-G3%f%HYC-6JF%f%94_Retail________AccessRetail | ||
| - | 16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_RN%f%B7V-P4%f%8F4-3FY%f%Y6-2P%f%3R3-63B%f%QV_PrepidBypass__AccessRuntimeRetail | ||
| - | 16_3b2fa33f-cd5a-43a5-bd95-f49f3f546b0b_JJ%f%2Y4-N8%f%KM3-Y8K%f%Y3-Y2%f%2FR-R3K%f%VK_MAK___________AccessVolume | ||
| - | 16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_RK%f%JBN-VW%f%TM2-BDK%f%XX-RK%f%QFD-JTY%f%Q2_Retail________ExcelRetail | ||
| - | 16_685062a7-6024-42e7-8c5f-6bb9e63e697f_FV%f%GNR-X8%f%2B2-6PR%f%JM-YT%f%4W7-8HV%f%36_MAK___________ExcelVolume | ||
| - | 16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2W%f%QNF-GB%f%K4B-XVG%f%6F-BB%f%MX7-M4F%f%2Y_OEM-Perp______HomeBusinessPipcRetail | ||
| - | 16_86834d00-7896-4a38-8fae-32f20b86fa2b_HM%f%6FM-NV%f%F78-KV9%f%PM-F3%f%6B8-D9M%f%XD_Retail________HomeBusinessRetail | ||
| - | 16_c28acdb8-d8b3-4199-baa4-024d09e97c99_PN%f%PRV-F2%f%627-Q8J%f%VC-3D%f%GR9-WTY%f%RK_Retail________HomeStudentRetail | ||
| - | 16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_YW%f%D4R-CN%f%KVT-VG8%f%VJ-93%f%33B-RC3%f%B8_Retail________HomeStudentVNextRetail | ||
| - | 16_69ec9152-153b-471a-bf35-77ec88683eae_VN%f%WHF-FK%f%FBW-Q2R%f%GD-HY%f%HWF-R3H%f%H2_Subscription__MondoRetail | ||
| - | 16_2cd0ea7e-749f-4288-a05e-567c573b2a6c_FM%f%TQQ-84%f%NR8-274%f%4R-MX%f%F4P-PGY%f%R3_MAK___________MondoVolume | ||
| - | 16_436366de-5579-4f24-96db-3893e4400030_XY%f%NTG-R9%f%6FY-369%f%HX-YF%f%PHY-F9C%f%PM_Bypass________OneNoteFreeRetail | ||
| - | 16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_FX%f%F6F-CN%f%C26-W64%f%3C-K6%f%KB7-6XX%f%W3_Retail________OneNoteRetail | ||
| - | 16_23b672da-a456-4860-a8f3-e062a501d7e8_9T%f%YVN-D7%f%6HK-BVM%f%WT-Y7%f%G88-9TP%f%PV_MAK___________OneNoteVolume | ||
| - | 16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_7N%f%4KG-P2%f%QDH-86V%f%9C-DJ%f%FVF-369%f%W9_Retail________OutlookRetail | ||
| - | 16_50059979-ac6f-4458-9e79-710bcb41721a_7Q%f%PNR-3H%f%FDG-YP6%f%T9-JQ%f%CKQ-KKX%f%XC_MAK___________OutlookVolume | ||
| - | 16_5aab8561-1686-43f7-9ff5-2c861da58d17_9C%f%YB3-NF%f%MRW-YFD%f%G6-XC%f%7TF-BY3%f%6J_OEM-Perp______PersonalPipcRetail | ||
| - | 16_a9f645a1-0d6a-4978-926a-abcb363b72a6_FT%f%7VF-XB%f%N92-HPD%f%JV-RH%f%MBY-6VK%f%BF_Retail________PersonalRetail | ||
| - | 16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_N7%f%GCB-WQ%f%T7K-QRH%f%WG-TT%f%PYD-7T9%f%XF_Retail________PowerPointRetail | ||
| - | 16_9b4060c9-a7f5-4a66-b732-faf248b7240f_X3%f%RT9-ND%f%G64-VMK%f%2M-KQ%f%6XY-DPF%f%GV_MAK___________PowerPointVolume | ||
| - | 16_de52bd50-9564-4adc-8fcb-a345c17f84f9_GM%f%43N-F7%f%42Q-6JD%f%DK-M6%f%22J-J8G%f%DV_Retail________ProPlusRetail | ||
| - | 16_c47456e3-265d-47b6-8ca0-c30abbd0ca36_FN%f%VK8-8D%f%VCJ-F7X%f%3J-KG%f%VQB-RC2%f%QY_MAK___________ProPlusVolume | ||
| - | 16_4e26cac1-e15a-4467-9069-cb47b67fe191_CF%f%9DD-6C%f%NW2-BJW%f%JQ-CV%f%CFX-Y7T%f%XD_OEM-Perp______ProfessionalPipcRetail | ||
| - | 16_d64edc00-7453-4301-8428-197343fafb16_NX%f%FTK-YD%f%9Y7-X9M%f%MJ-9B%f%WM6-J2Q%f%VH_Retail________ProfessionalRetail | ||
| - | 16_2f72340c-b555-418d-8b46-355944fe66b8_WP%f%Y8N-PD%f%PY4-FC7%f%TF-KM%f%P7P-KWY%f%FY_Subscription__ProjectProRetail | ||
| - | 16_82f502b5-b0b0-4349-bd2c-c560df85b248_PK%f%C3N-8F%f%99H-28M%f%VY-J4%f%RYY-CWG%f%DH_MAK___________ProjectProVolume | ||
| - | 16_16728639-a9ab-4994-b6d8-f81051e69833_JB%f%NPH-YF%f%2F7-Q9Y%f%29-86%f%CTG-C9Y%f%GV_MAKC2R________ProjectProXVolume | ||
| - | 16_58d95b09-6af6-453d-a976-8ef0ae0316b1_NT%f%HQT-VK%f%K6W-BRB%f%87-HV%f%346-Y96%f%W8_Subscription__ProjectStdRetail | ||
| - | 16_82e6b314-2a62-4e51-9220-61358dd230e6_4T%f%GWV-6N%f%9P6-G2H%f%8Y-2H%f%WKB-B4G%f%93_MAK___________ProjectStdVolume | ||
| - | 16_431058f0-c059-44c5-b9e7-ed2dd46b6789_N3%f%W2Q-69%f%MBT-27R%f%D9-BH%f%8V3-JT2%f%C8_MAKC2R________ProjectStdXVolume | ||
| - | 16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_WK%f%WND-X6%f%G9G-CDM%f%TV-CP%f%GYJ-6MV%f%BF_Retail________PublisherRetail | ||
| - | 16_fcc1757b-5d5f-486a-87cf-c4d6dedb6032_9Q%f%VN2-PX%f%XRX-8V4%f%W8-Q7%f%926-TJG%f%D8_MAK___________PublisherVolume | ||
| - | 16_9103f3ce-1084-447a-827e-d6097f68c895_6M%f%DN4-WF%f%3FV-4WH%f%3Q-W6%f%99V-RGC%f%MY_PrepidBypass__SkypeServiceBypassRetail | ||
| - | 16_971cd368-f2e1-49c1-aedd-330909ce18b6_4N%f%4D8-3J%f%7Y3-YYW%f%7C-73%f%HD2-V8R%f%HY_PrepidBypass__SkypeforBusinessEntryRetail | ||
| - | 16_418d2b9f-b491-4d7f-84f1-49e27cc66597_PB%f%J79-77%f%NY4-VRG%f%FG-Y8%f%WYC-CKC%f%RC_Retail________SkypeforBusinessRetail | ||
| - | 16_03ca3b9a-0869-4749-8988-3cbc9d9f51bb_DM%f%TCJ-KN%f%RKR-JV8%f%TQ-V2%f%CR2-VFT%f%FH_MAK___________SkypeforBusinessVolume | ||
| - | 16_4a31c291-3a12-4c64-b8ab-cd79212be45e_2F%f%PWN-4H%f%6CM-KD8%f%QQ-8H%f%CHC-P9X%f%YW_Retail________StandardRetail | ||
| - | 16_0ed94aac-2234-4309-ba29-74bdbb887083_WH%f%GMQ-JN%f%MGT-MDQ%f%VF-WD%f%R69-KQB%f%WC_MAK___________StandardVolume | ||
| - | 16_a56a3b37-3a35-4bbb-a036-eee5f1898eee_NV%f%K2G-2M%f%Y4G-7JX%f%2P-7D%f%6F2-VFQ%f%BR_Subscription__VisioProRetail | ||
| - | 16_295b2c03-4b1c-4221-b292-1411f468bd02_NR%f%KT9-C8%f%GP2-XDY%f%XQ-YW%f%72K-MG9%f%2B_MAK___________VisioProVolume | ||
| - | 16_0594dc12-8444-4912-936a-747ca742dbdb_G9%f%8Q2-B6%f%N77-CFH%f%9J-K8%f%24G-XQC%f%C4_MAKC2R________VisioProXVolume | ||
| - | 16_980f9e3e-f5a8-41c8-8596-61404addf677_NC%f%RB7-VP%f%48F-43F%f%YY-62%f%P3R-367%f%WK_Subscription__VisioStdRetail | ||
| - | 16_44151c2d-c398-471f-946f-7660542e3369_XN%f%CJB-YY%f%883-JRW%f%64-DP%f%XMX-JXC%f%R6_MAK___________VisioStdVolume | ||
| - | 16_1d1c6879-39a3-47a5-9a6d-aceefa6a289d_B2%f%HTN-JP%f%H8C-J6Y%f%6V-HC%f%HKB-43M%f%GT_MAKC2R________VisioStdXVolume | ||
| - | 16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_P8%f%K82-NQ%f%7GG-JKY%f%8T-6V%f%HVY-88G%f%GD_Retail________WordRetail | ||
| - | 16_c3000759-551f-4f4a-bcac-a4b42cbf1de2_YH%f%MWC-YN%f%6V9-WJP%f%XD-3W%f%QKP-TMV%f%CV_MAK___________WordVolume | ||
| - | 16_518687bd-dc55-45b9-8fa6-f918e1082e83_WR%f%YJ6-G3%f%NP7-7VH%f%94-8X%f%7KP-JB7%f%HC_Retail________Access2019Retail | ||
| - | 16_385b91d6-9c2c-4a2e-86b5-f44d44a48c5f_6F%f%WHX-NK%f%YXK-BW3%f%4Q-7X%f%C9F-Q9P%f%X7_MAK-AE________Access2019Volume | ||
| - | 16_22e6b96c-1011-4cd5-8b35-3c8fb6366b86_FG%f%QNJ-JW%f%JCG-7Q8%f%MG-RM%f%RGJ-9TQ%f%VF_PrepidBypass__AccessRuntime2019Retail | ||
| - | 16_c201c2b7-02a1-41a8-b496-37c72910cd4a_KB%f%PNW-64%f%CMM-8KW%f%CB-23%f%F44-8B7%f%HM_Retail________Excel2019Retail | ||
| - | 16_05cb4e1d-cc81-45d5-a769-f34b09b9b391_8N%f%T4X-GQ%f%MCK-62X%f%4P-TW%f%6QP-YKP%f%YF_MAK-AE________Excel2019Volume | ||
| - | 16_7fe09eef-5eed-4733-9a60-d7019df11cac_QB%f%N2Y-9B%f%284-9KW%f%78-K4%f%8PB-R62%f%YT_Retail________HomeBusiness2019Retail | ||
| - | 16_4539aa2c-5c31-4d47-9139-543a868e5741_XN%f%WPM-32%f%XQC-Y7Q%f%JC-QG%f%GBV-YY7%f%JK_Retail________HomeStudent2019Retail | ||
| - | 16_20e359d5-927f-47c0-8a27-38adbdd27124_WR%f%43D-NM%f%WQQ-HCQ%f%R2-VK%f%XDR-37B%f%7H_Retail________Outlook2019Retail | ||
| - | 16_92a99ed8-2923-4cb7-a4c5-31da6b0b8cf3_RN%f%3QB-GT%f%6D7-YB3%f%VH-F3%f%RPB-3GQ%f%YB_MAK-AE________Outlook2019Volume | ||
| - | 16_2747b731-0f1f-413e-a92d-386ec1277dd8_NM%f%BY8-V3%f%CV7-BX6%f%K6-29%f%22Y-43M%f%7T_Retail________Personal2019Retail | ||
| - | 16_7e63cc20-ba37-42a1-822d-d5f29f33a108_HN%f%27K-JH%f%J8R-7T7%f%KK-WJ%f%YC3-FM7%f%MM_Retail________PowerPoint2019Retail | ||
| - | 16_13c2d7bf-f10d-42eb-9e93-abf846785434_29%f%GNM-VM%f%33V-WR2%f%3K-HG%f%2DT-KTQ%f%YR_MAK-AE________PowerPoint2019Volume | ||
| - | 16_a3072b8f-adcc-4e75-8d62-fdeb9bdfae57_BN%f%4XJ-R9%f%DYY-96W%f%48-YK%f%8DM-MY7%f%PY_Retail________ProPlus2019Retail | ||
| - | 16_6755c7a7-4dfe-46f5-bce8-427be8e9dc62_T8%f%YBN-4Y%f%V3X-KK2%f%4Q-QX%f%BD7-T3C%f%63_MAK-AE________ProPlus2019Volume | ||
| - | 16_1717c1e0-47d3-4899-a6d3-1022db7415e0_9N%f%XDK-MR%f%Y98-2VJ%f%V8-GF%f%73J-TQ9%f%FK_Retail________Professional2019Retail | ||
| - | 16_0d270ef7-5aaf-4370-a372-bc806b96adb7_JD%f%TNC-PP%f%77T-T9H%f%2W-G4%f%J2J-VH8%f%JK_Retail________ProjectPro2019Retail | ||
| - | 16_d4ebadd6-401b-40d5-adf4-a5d4accd72d1_TB%f%XBD-FN%f%WKJ-WRH%f%BD-KB%f%PHH-XD9%f%F2_MAK-AE________ProjectPro2019Volume | ||
| - | 16_bb7ffe5f-daf9-4b79-b107-453e1c8427b5_R3%f%JNT-8P%f%BDP-MTW%f%CK-VD%f%2V8-HMK%f%F9_Retail________ProjectStd2019Retail | ||
| - | 16_fdaa3c03-dc27-4a8d-8cbf-c3d843a28ddc_RB%f%RFX-MQ%f%NDJ-4XF%f%HF-7Q%f%VDR-JHX%f%GC_MAK-AE________ProjectStd2019Volume | ||
| - | 16_f053a7c7-f342-4ab8-9526-a1d6e5105823_4Q%f%C36-NW%f%3YH-D2Y%f%9D-RJ%f%PC7-VVB%f%9D_Retail________Publisher2019Retail | ||
| - | 16_40055495-be00-444e-99cc-07446729b53e_K8%f%F2D-NB%f%M32-BF2%f%6V-YC%f%KFJ-29Y%f%9W_MAK-AE________Publisher2019Volume | ||
| - | 16_b639e55c-8f3e-47fe-9761-26c6a786ad6b_JB%f%DKF-6N%f%CD6-49K%f%3G-2T%f%V79-BKP%f%73_Retail________SkypeforBusiness2019Retail | ||
| - | 16_15a430d4-5e3f-4e6d-8a0a-14bf3caee4c7_9M%f%NQ7-YP%f%Q3B-6WJ%f%XM-G8%f%3T3-CBB%f%DK_MAK-AE________SkypeforBusiness2019Volume | ||
| - | 16_f88cfdec-94ce-4463-a969-037be92bc0e7_N9%f%722-BV%f%9H6-WTJ%f%TT-FP%f%B93-978%f%MK_PrepidBypass__SkypeforBusinessEntry2019Retail | ||
| - | 16_fdfa34dd-a472-4b85-bee6-cf07bf0aaa1c_ND%f%GVM-MD%f%27H-2XH%f%VC-KD%f%DX2-YKP%f%74_Retail________Standard2019Retail | ||
| - | 16_beb5065c-1872-409e-94e2-403bcfb6a878_NT%f%3V6-XM%f%BK7-Q66%f%MF-VM%f%KR4-FC3%f%3M_MAK-AE________Standard2019Volume | ||
| - | 16_a6f69d68-5590-4e02-80b9-e7233dff204e_2N%f%WVW-QG%f%F4T-9CP%f%MB-WY%f%DQ9-7XP%f%79_Retail________VisioPro2019Retail | ||
| - | 16_f41abf81-f409-4b0d-889d-92b3e3d7d005_33%f%YF4-GN%f%CQ3-J6G%f%DM-J6%f%7P3-FM7%f%QP_MAK-AE________VisioPro2019Volume | ||
| - | 16_4a582021-18c2-489f-9b3d-5186de48f1cd_26%f%3WK-3N%f%797-7R4%f%37-28%f%BKG-3V8%f%M8_Retail________VisioStd2019Retail | ||
| - | 16_933ed0e3-747d-48b0-9c2c-7ceb4c7e473d_BG%f%NHX-QT%f%PRJ-F9C%f%9G-R8%f%QQG-8T2%f%7F_MAK-AE________VisioStd2019Volume | ||
| - | 16_72cee1c2-3376-4377-9f25-4024b6baadf8_JX%f%R8H-NJ%f%3MK-X66%f%W8-78%f%CWD-QRV%f%R2_Retail________Word2019Retail | ||
| - | 16_fe5fe9d5-3b06-4015-aa35-b146f85c4709_9F%f%36R-PN%f%VHH-3DX%f%GQ-7C%f%D2H-R9D%f%3V_MAK-AE________Word2019Volume | ||
| - | 16_f634398e-af69-48c9-b256-477bea3078b5_P2%f%86B-N3%f%XYP-36Q%f%RQ-29%f%CMP-RVX%f%9M_Retail________Access2021Retail | ||
| - | 16_ae17db74-16b0-430b-912f-4fe456e271db_JB%f%H3N-P9%f%7FP-FRT%f%JD-MG%f%K2C-VFW%f%G6_MAK-AE________Access2021Volume | ||
| - | 16_fb099c19-d48b-4a2f-a160-4383011060aa_V6%f%QFB-7N%f%7G9-PF7%f%W9-M8%f%FQM-MY8%f%G9_Retail________Excel2021Retail | ||
| - | 16_9da1ecdb-3a62-4273-a234-bf6d43dc0778_WN%f%YR4-KM%f%R9H-KVC%f%8W-7H%f%J8B-K79%f%DQ_MAK-AE________Excel2021Volume | ||
| - | 16_38b92b63-1dff-4be7-8483-2a839441a2bc_JM%f%99N-4M%f%MD8-DQC%f%GJ-VM%f%YFY-R63%f%YK_Subscription__HomeBusiness2021Retail | ||
| - | 16_2f258377-738f-48dd-9397-287e43079958_N3%f%CWD-38%f%XVH-KRX%f%2Y-YR%f%P74-6RB%f%B2_Subscription__HomeStudent2021Retail | ||
| - | 16_279706f4-3a4b-4877-949b-f8c299cf0cc5_NB%f%2TQ-3Y%f%79C-77C%f%6M-QM%f%Y7H-7QY%f%8P_Retail________OneNote2021Retail | ||
| - | 16_ecea2cfa-d406-4a7f-be0d-c6163250d126_4N%f%CWR-9V%f%92Y-34V%f%B2-RP%f%THR-YTG%f%R7_Retail________Outlook2021Retail | ||
| - | 16_45bf67f9-0fc8-4335-8b09-9226cef8a576_JQ%f%9MJ-QY%f%N6B-67P%f%X9-GY%f%FVY-QJ6%f%TB_MAK-AE________Outlook2021Volume | ||
| - | 16_8f89391e-eedb-429d-af90-9d36fbf94de6_RR%f%RYB-DN%f%749-GCP%f%W4-9H%f%6VK-HCH%f%PT_Retail________Personal2021Retail | ||
| - | 16_c9bf5e86-f5e3-4ac6-8d52-e114a604d7bf_3K%f%XXQ-PV%f%N2C-8P7%f%YY-HC%f%V88-GVM%f%96_Retail1_______PowerPoint2021Retail | ||
| - | 16_716f2434-41b6-4969-ab73-e61e593a3875_39%f%G2N-3B%f%D9C-C4X%f%CM-BD%f%4QG-FVY%f%DY_MAK-AE________PowerPoint2021Volume | ||
| - | 16_c2f04adf-a5de-45c5-99a5-f5fddbda74a8_8W%f%XTP-MN%f%628-KY4%f%4G-VJ%f%WCK-C7P%f%CF_Retail________ProPlus2021Retail | ||
| - | 16_3f180b30-9b05-4fe2-aa8d-0c1c4790f811_RN%f%HJY-DT%f%FXW-HW9%f%F8-49%f%82D-MD2%f%CW_MAK-AE1_______ProPlus2021Volume | ||
| - | 16_96097a68-b5c5-4b19-8600-2e8d6841a0db_JR%f%JNJ-33%f%M7C-R73%f%X3-P9%f%XF7-R9F%f%6M_MAK-AE________ProPlusSPLA2021Volume | ||
| - | 16_711e48a6-1a79-4b00-af10-73f4ca3aaac4_DJ%f%PHV-NC%f%JV6-GWP%f%T6-K2%f%6JX-C7P%f%BG_Retail________Professional2021Retail | ||
| - | 16_3747d1d5-55a8-4bc3-b53d-19fff1913195_QK%f%HNX-M9%f%GGH-T3Q%f%MW-YP%f%K4Q-QRW%f%MV_Retail________ProjectPro2021Retail | ||
| - | 16_17739068-86c4-4924-8633-1e529abc7efc_HV%f%C34-CV%f%NPG-RVC%f%MT-X2%f%JRF-CR7%f%RK_MAK-AE1_______ProjectPro2021Volume | ||
| - | 16_4ea64dca-227c-436b-813f-b6624be2d54c_2B%f%96V-X9%f%NJY-WFB%f%RC-Q8%f%MP2-7CH%f%RR_Retail________ProjectStd2021Retail | ||
| - | 16_84313d1e-47c8-4e27-8ced-0476b7ee46c4_3C%f%NQX-T3%f%4TY-99R%f%H4-C4%f%YD2-KW6%f%WH_MAK-AE________ProjectStd2021Volume | ||
| - | 16_b769b746-53b1-4d89-8a68-41944dafe797_CD%f%NFG-77%f%T8D-VKQ%f%JX-B7%f%KT3-KK2%f%8V_Retail1_______Publisher2021Retail | ||
| - | 16_a0234cfe-99bd-4586-a812-4f296323c760_2K%f%XJH-3N%f%HTW-RDB%f%PX-QF%f%RXJ-MTG%f%XF_MAK-AE________Publisher2021Volume | ||
| - | 16_c3fb48b2-1fd4-4dc8-af39-819edf194288_DV%f%BXN-HF%f%T43-CVP%f%RQ-J8%f%9TF-VMM%f%HG_Retail________SkypeforBusiness2021Retail | ||
| - | 16_6029109c-ceb8-4ee5-b324-f8eb2981e99a_R3%f%FCY-NH%f%GC7-CBP%f%VP-8Q%f%934-YTG%f%XG_MAK-AE________SkypeforBusiness2021Volume | ||
| - | 16_9e7e7b8e-a0e7-467b-9749-d0de82fb7297_HX%f%NXB-J4%f%JGM-TCF%f%44-2X%f%2CV-FJV%f%VH_Retail________Standard2021Retail | ||
| - | 16_223a60d8-9002-4a55-abac-593f5b66ca45_2C%f%JN4-C9%f%XK2-HFP%f%Q6-YH%f%498-82T%f%XH_MAK-AE________Standard2021Volume | ||
| - | 16_b99ba8c4-e257-4b70-a31a-8bd308ce7073_BQ%f%WDW-NJ%f%9YF-P7Y%f%79-H6%f%DCT-MKQ%f%9C_MAK-AE________StandardSPLA2021Volume | ||
| - | 16_814014d3-c30b-4f63-a493-3708e0dc0ba8_T6%f%P26-NJ%f%VBR-76B%f%K8-WB%f%CDY-TX3%f%BC_Retail________VisioPro2021Retail | ||
| - | 16_c590605a-a08a-4cc7-8dc2-f1ffb3d06949_JN%f%KBX-MH%f%9P4-K8Y%f%YV-8C%f%G2Y-VQ2%f%C8_MAK-AE________VisioPro2021Volume | ||
| - | 16_16d43989-a5ef-47e2-9ff1-272784caee24_89%f%NYY-KB%f%93R-7X2%f%2F-93%f%QDF-DJ6%f%YM_Retail________VisioStd2021Retail | ||
| - | 16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW%f%43B-4P%f%NFP-V63%f%7F-23%f%TR2-J47%f%TX_MAK-AE________VisioStd2021Volume | ||
| - | 16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VN%f%CC4-CJ%f%QVK-BKX%f%34-77%f%Y8H-CYX%f%MR_Retail________Word2021Retail | ||
| - | 16_0c728382-95fb-4a55-8f12-62e605f91727_BJ%f%G97-NW%f%3GM-8QQ%f%Q7-FH%f%76G-686%f%XM_MAK-AE________Word2021Volume | ||
| - | 16_8fdb1f1e-663f-4f2e-8fdb-7c35aee7d5ea_GN%f%XWX-DF%f%797-B2J%f%T3-82%f%W27-KHP%f%XT_MAK-AE________ProPlus2024Volume-Preview | ||
| - | 16_33b11b14-91fd-4f7b-b704-e64a055cf601_X8%f%6XX-N3%f%QMW-B4W%f%GQ-QC%f%B69-V26%f%KW_MAK-AE________ProjectPro2024Volume-Preview | ||
| - | 16_eb074198-7384-4bdd-8e6c-c3342dac8435_DW%f%99Y-H7%f%NT6-6B2%f%9D-8J%f%Q8F-R3Q%f%T7_MAK-AE________VisioPro2024Volume-Preview | ||
| - | 16_6337137e-7c07-4197-8986-bece6a76fc33_2P%f%3C9-BQ%f%NJH-VCV%f%PH-YD%f%Y6M-43J%f%PQ_Subscription__O365BusinessRetail | ||
| - | 16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W6%f%2NQ-26%f%7QR-RTF%f%74-PF%f%2MH-JQM%f%TH_Subscription__O365EduCloudRetail | ||
| - | 16_537ea5b5-7d50-4876-bd38-a53a77caca32_J2%f%W28-TN%f%9C8-26P%f%WV-F7%f%J4G-72X%f%CB_Subscription1_O365HomePremRetail | ||
| - | 16_149dbce7-a48e-44db-8364-a53386cd4580_2N%f%382-D6%f%PKK-QTX%f%4D-2J%f%JYK-M96%f%P2_Subscription1_O365ProPlusRetail | ||
| - | 16_bacd4614-5bef-4a5e-bafc-de4c788037a2_HN%f%8JP-87%f%TQJ-PBF%f%3P-Y6%f%6KC-W2K%f%9V_Subscription1_O365SmallBusPremRetail | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | |||
| - | if %1==getinfo if not defined _key ( | ||
| - | if %oVer%==%%A if /i " | ||
| - | set _key=%%C | ||
| - | set _actid=%%B | ||
| - | set _allactid=!_allactid! %%B | ||
| - | set _lic=%%D | ||
| - | if %oVer%==16 (echo " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if %1==getmsiprod if %oVer%==%%A ( | ||
| - | find /i " | ||
| - | if defined _oIds (set _oIds=!_oIds! %%E) else (set _oIds=%%E) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: This code is used to modify the timestamp value of sppc dll file in order to change checksums | ||
| - | :: It's done to lower the potential false positive detection by antivirus' | ||
| - | |||
| - | : | ||
| - | |||
| - | set b= | ||
| - | %psc% " | ||
| - | exit /b | ||
| - | |||
| - | :hexedit: | ||
| - | # Use a MemoryStream to perform operations on the bytes | ||
| - | $MemoryStream = New-Object System.IO.MemoryStream | ||
| - | $Writer = New-Object System.IO.BinaryWriter($MemoryStream) | ||
| - | $Writer.Write($bytes) | ||
| - | |||
| - | # Define dynamic assembly, module, and type | ||
| - | $AssemblyBuilder = [AppDomain]:: | ||
| - | $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, | ||
| - | $TypeBuilder = $ModuleBuilder.DefineType(0) | ||
| - | |||
| - | # Define P/Invoke method | ||
| - | [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | |||
| - | # Create the type | ||
| - | $Imagehlp = $TypeBuilder.CreateType() | ||
| - | |||
| - | # Offset information | ||
| - | $timestampOffset = 136 | ||
| - | $exportTimestampOffset = $offset | ||
| - | $checkSumOffset = 216 | ||
| - | |||
| - | # Calculate timestamp | ||
| - | $currentTimestamp = [DateTime]:: | ||
| - | $unixTimestamp = [int]($currentTimestamp - (Get-Date -Year 1970 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0)).TotalSeconds | ||
| - | |||
| - | # Change timestamps | ||
| - | $Writer.BaseStream.Position = $timestampOffset | ||
| - | $Writer.Write($unixTimestamp) | ||
| - | |||
| - | $Writer.BaseStream.Position = $exportTimestampOffset | ||
| - | $Writer.Write($unixTimestamp) | ||
| - | |||
| - | $Writer.Flush() | ||
| - | |||
| - | # Write the current state of the MemoryStream to a temporary file | ||
| - | $tempFilePath = [System.IO.Path]:: | ||
| - | [System.IO.File]:: | ||
| - | |||
| - | # Update hash using the temporary file | ||
| - | [int]$HeaderSum = 0 | ||
| - | [int]$CheckSum = 0 | ||
| - | [void]$Imagehlp:: | ||
| - | |||
| - | # If the checksums don't match, update the checksum in the MemoryStream | ||
| - | if ($HeaderSum -ne $CheckSum) { | ||
| - | $Writer.BaseStream.Position = $checkSumOffset | ||
| - | $Writer.Write($CheckSum) | ||
| - | $Writer.Flush() | ||
| - | } else { | ||
| - | Write-host Error found | ||
| - | } | ||
| - | |||
| - | # Delete the temporary file | ||
| - | Remove-Item -Path $tempFilePath -Force | ||
| - | |||
| - | # Get the modified bytes | ||
| - | $modifiedBytes = $MemoryStream.ToArray() | ||
| - | |||
| - | # Write the modified bytes to the final file | ||
| - | [System.IO.File]:: | ||
| - | |||
| - | [void]$Imagehlp:: | ||
| - | if ($HeaderSum -ne $CheckSum) { | ||
| - | Write-host Error found | ||
| - | } | ||
| - | |||
| - | $MemoryStream.Close() | ||
| - | :hexedit: | ||
| - | |||
| - | :: | ||
| - | :: | ||
| - | :: This below blocks of text is encoded in base64 format | ||
| - | :: The blocks in labels " | ||
| - | :: | ||
| - | :: e6ac83560c19ec7eb868c50ea97ea0ed5632a397a9f43c17e24e6de4a694d118 *sppc32.dll | ||
| - | :: c6df24deef2e83813dee9c81ddd9793a3d60c117a4e8e231b82e32b3192927e7 *sppc64.dll | ||
| - | :: | ||
| - | :: The files are encoded in base64 to make MAS AIO version. | ||
| - | :: | ||
| - | :: mass grave[.]dev/ | ||
| - | :: Here you can find the files source code and info on how to rebuild the identical sppc.dll files | ||
| - | :: | ||
| - | :: stackoverflow.com/ | ||
| - | :: Here you can check how to extract sppc.dll files from base64 | ||
| - | :: | ||
| - | :: For any further question, feel free to contact us on mass grave[.]dev/ | ||
| - | :: | ||
| - | :: | ||
| - | |||
| - | :: Replace - with A and _ with a before base64 conversion | ||
| - | |||
| - | : | ||
| - | TVqQ--M----E----// | ||
| - | DiML-QIo--I----e---------B-----Q----------C-_g-Q-----g--B-----E----G----------CQ----B---i9M---I-Q-E--C---B------E---E--------B------Q---jR----Bg---Y-Q---H---HgD-------------------------I---BQ--------- | ||
| - | ----------------------------------------------------------BsY---H------------------------------------C50ZXh0----c-E----Q-----g----Q------------------C---G-ucmRhdGE--Bg-----I-----I----G---------------- | ||
| - | --B---B-LmVoX2ZyYW2------D-----C----C-------------------Q---QC5lZGF0YQ--jR----B-----Eg----o------------------E---E-u_WRhdGE--BgB----Y-----I----c------------------B---D-LnJzcmM---B4-w---H-----E----Hg-- | ||
| - | ----------------Q---wC5yZWxvYw--F-----C------g---CI------------------E---EI----------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------LgB----wgw-VYnlVlONRfCD7DDHRf------ | ||
| - | iUQkFI1F9IlEJBCLRQzHRCQM-----IlEJ-SLRQjHRCQI-CC-_okEJMdF9-----Do-gE--Is1eGC-_oPsGIX-icOLRfB0CokEJDHb/ | ||
| - | GIt1HIlEJBCLRRSJdCQUiUQkDItFEIlEJ-iLRQyJRCQEi0UIiQQk6Hw----xyYPsGInHhcB1XItFGDkIdlVr2SiLBgHYg3gQ-HRFiUQkBItFCIlN5IkEJOj7/ | ||
| - | ifhbXl9dwhg-kP8lcGC-_pCQ/ | ||
| - | ------------------------------------------------TgBh-G0-ZQ---Ec-cgBh-GM-ZQ------------------------------------------------------------------------------------------------------------------------------ | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -----------------------------------------------------------------------------------------------------------------------------------U----------F6Ug-Bf-gBGwwEBIgB---Q----H----ODf// | ||
| - | 1N/// | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ------------------D-3NBk-----MZC---B----Qw---EM----oQ---NEE--EBC--DPQg--70I---VD---pQw--XUM--KFD--DpQw--F0Q--DVE--BnR---nUQ--ONE---tRQ--YUU--J9F--DTRQ--DUY--DtG--BxRg--r0Y--M9G--D7Rg--pR---FFH--BvRw-- | ||
| - | n0c--NNH---RS---TUg--G9I--ClS---zUg---VJ--BBSQ--bUk--KdJ--C7SQ--+0k--DlK--BPSg--dUo--J1K--DTSg--B0s--D1L--BpSw--pUs--ONL---NT---OUw--IlM--DRT---EU0--FlN--CjTQ--8U0--BtO--BHTg--h04--LtO--DnTg--K08--FtP | ||
| - | --C1Tw--608--CdQ--BdU---4kI--P1C---_Qw--RkM--IJD--DIQw---0Q--ClE--BRR---hUQ--MNE---LRQ--SkU--INF--C8RQ--80U--CdG--BZRg--k0Y--MJG--DoRg--GUc--DFH--BjRw--ikc--LxH--D1Rw--Mkg--GFI--CNS---vEg--OxI---mSQ-- | ||
| - | Wkk--I1J--C0SQ--3kk--B1K--BHSg--ZUo--IxK--C7Sg--8Eo--CVL--BWSw--iks--MdL--D7Sw--Jkw--GRM--CwT---9Ew--DhN--CBTQ--zU0---lO---0Tg--_k4--KRO--DUTg--DE8--EZP--CLTw--008---xQ--BFU---eF-------Q-C--M-B--F--Y- | ||
| - | Bw-I--k-Cg-L--w-DQ-O--8-E--R-BI-Ew-U-BU-Fg-X-Bg-GQ-_-Bs-H--d-B4-Hw-g-CE-Ig-j-CQ-JQ-m-Cc-K--p-Co-Kw-s-C0-Lg-v-D--MQ-y-DM-N--1-DY-Nw-4-Dk-Og-7-Dw-PQ-+-D8-Q-BB-EI-c3BwYy5kbGw-U1BQQ1MuU0xDYWxsU2VydmVy-FNM | ||
| - | Q2FsbFNlcnZlcgBTUFBDUy5TTENsb3Nl-FNMQ2xvc2U-U1BQQ1MuU0xDb25zdW1lUmln_HQ-U0xDb25zdW1lUmln_HQ-U1BQQ1MuU0xEZXBvc2l0TWlncmF0_W9uQmxvYgBTTERlcG9z_XRN_WdyYXRpb25CbG9i-FNQUENTLlNMRGVwb3NpdE9mZmxpbmVDb25m_XJt | ||
| - | YXRpb25JZ-BTTERlcG9z_XRPZmZs_W5lQ29uZmlybWF0_W9uSWQ-U1BQQ1MuU0xEZXBvc2l0T2ZmbGluZUNvbmZpcm1hdGlvbklkRXg-U0xEZXBvc2l0T2ZmbGluZUNvbmZpcm1hdGlvbklkRXg-U1BQQ1MuU0xEZXBvc2l0U3RvcmVUb2tlbgBTTERlcG9z_XRTdG9y | ||
| - | ZVRv_2Vu-FNQUENTLlNMRmlyZUV2ZW50-FNMRmlyZUV2ZW50-FNQUENTLlNMR2F0_GVyTWlncmF0_W9uQmxvYgBTTEdhdGhlck1pZ3JhdGlvbkJsb2I-U1BQQ1MuU0xHYXRoZXJN_WdyYXRpb25CbG9iRXg-U0xHYXRoZXJN_WdyYXRpb25CbG9iRXg-U1BQQ1MuU0xH | ||
| - | ZW5lcmF0ZU9mZmxpbmVJbnN0YWxsYXRpb25JZ-BTTEdlbmVyYXRlT2ZmbGluZUluc3RhbGxhdGlvbklk-FNQUENTLlNMR2VuZXJhdGVPZmZs_W5lSW5zdGFsbGF0_W9uSWRFe-BTTEdlbmVyYXRlT2ZmbGluZUluc3RhbGxhdGlvbklkRXg-U1BQQ1MuU0xHZXRBY3Rp | ||
| - | dmVM_WNlbnNlSW5mbwBTTEdldEFjdGl2ZUxpY2Vuc2VJbmZv-FNQUENTLlNMR2V0QXBwbGljYXRpb25JbmZvcm1hdGlvbgBTTEdldEFwcGxpY2F0_W9uSW5mb3JtYXRpb24-U1BQQ1MuU0xHZXRBcHBs_WNhdGlvblBvbGljeQBTTEdldEFwcGxpY2F0_W9uUG9s_WN5 | ||
| - | -FNQUENTLlNMR2V0QXV0_GVudGljYXRpb25SZXN1bHQ-U0xHZXRBdXRoZW50_WNhdGlvblJlc3Vsd-BTUFBDUy5TTEdldEVuY3J5cHRlZFBJREV4-FNMR2V0RW5jcnlwdGVkUElERXg-U1BQQ1MuU0xHZXRHZW51_W5lSW5mb3JtYXRpb24-U0xHZXRHZW51_W5lSW5m | ||
| - | b3JtYXRpb24-U1BQQ1MuU0xHZXRJbnN0YWxsZWRQcm9kdWN0S2V5SWRz-FNMR2V0SW5zdGFsbGVkUHJvZHVjdEtleUlkcwBTUFBDUy5TTEdldExpY2Vuc2U-U0xHZXRM_WNlbnNl-FNQUENTLlNMR2V0TGljZW5zZUZpbGVJZ-BTTEdldExpY2Vuc2VG_WxlSWQ-U1BQ | ||
| - | Q1MuU0xHZXRM_WNlbnNlSW5mb3JtYXRpb24-U0xHZXRM_WNlbnNlSW5mb3JtYXRpb24-U0xHZXRM_WNlbnNpbmdTdGF0dXNJbmZvcm1hdGlvbgBTUFBDUy5TTEdldFBLZXlJZ-BTTEdldFBLZXlJZ-BTUFBDUy5TTEdldFBLZXlJbmZvcm1hdGlvbgBTTEdldFBLZXlJ | ||
| - | bmZvcm1hdGlvbgBTUFBDUy5TTEdldFBvbGljeUluZm9ybWF0_W9u-FNMR2V0UG9s_WN5SW5mb3JtYXRpb24-U1BQQ1MuU0xHZXRQb2xpY3lJbmZvcm1hdGlvbkRXT1JE-FNMR2V0UG9s_WN5SW5mb3JtYXRpb25EV09SR-BTUFBDUy5TTEdldFByb2R1Y3RT_3VJbmZv | ||
| - | cm1hdGlvbgBTTEdldFByb2R1Y3RT_3VJbmZvcm1hdGlvbgBTUFBDUy5TTEdldFNMSURM_XN0-FNMR2V0U0xJRExpc3Q-U1BQQ1MuU0xHZXRTZXJ2_WNlSW5mb3JtYXRpb24-U0xHZXRTZXJ2_WNlSW5mb3JtYXRpb24-U1BQQ1MuU0xJbnN0YWxsTGljZW5zZQBTTElu | ||
| - | c3RhbGxM_WNlbnNl-FNQUENTLlNMSW5zdGFsbFByb29mT2ZQdXJj_GFzZQBTTEluc3RhbGxQcm9vZk9mUHVyY2hhc2U-U1BQQ1MuU0xJbnN0YWxsUHJvb2ZPZlB1cmNoYXNlRXg-U0xJbnN0YWxsUHJvb2ZPZlB1cmNoYXNlRXg-U1BQQ1MuU0xJc0dlbnVpbmVMb2Nh | ||
| - | bEV4-FNMSXNHZW51_W5lTG9jYWxFe-BTUFBDUy5TTExvYWRBcHBs_WNhdGlvblBvbGlj_WVz-FNMTG9hZEFwcGxpY2F0_W9uUG9s_WNpZXM-U1BQQ1MuU0xPcGVu-FNMT3BlbgBTUFBDUy5TTFBlcnNpc3RBcHBs_WNhdGlvblBvbGlj_WVz-FNMUGVyc2lzdEFwcGxp | ||
| - | Y2F0_W9uUG9s_WNpZXM-U1BQQ1MuU0xQZXJz_XN0UlRTUGF5bG9hZE92ZXJy_WRl-FNMUGVyc2lzdFJUU1BheWxvYWRPdmVycmlkZQBTUFBDUy5TTFJlQXJt-FNMUmVBcm0-U1BQQ1MuU0xSZWdpc3RlckV2ZW50-FNMUmVn_XN0ZXJFdmVud-BTUFBDUy5TTFJlZ2lz | ||
| - | dGVyUGx1Z2lu-FNMUmVn_XN0ZXJQbHVn_W4-U1BQQ1MuU0xTZXRBdXRoZW50_WNhdGlvbkRhdGE-U0xTZXRBdXRoZW50_WNhdGlvbkRhdGE-U1BQQ1MuU0xTZXRDdXJyZW50UHJvZHVjdEtleQBTTFNldEN1cnJlbnRQcm9kdWN0S2V5-FNQUENTLlNMU2V0R2VudWlu | ||
| - | ZUluZm9ybWF0_W9u-FNMU2V0R2VudWluZUluZm9ybWF0_W9u-FNQUENTLlNMVW5pbnN0YWxsTGljZW5zZQBTTFVu_W5zdGFsbExpY2Vuc2U-U1BQQ1MuU0xVbmluc3RhbGxQcm9vZk9mUHVyY2hhc2U-U0xVbmluc3RhbGxQcm9vZk9mUHVyY2hhc2U-U1BQQ1MuU0xV | ||
| - | bmxvYWRBcHBs_WNhdGlvblBvbGlj_WVz-FNMVW5sb2FkQXBwbGljYXRpb25Qb2xpY2llcwBTUFBDUy5TTFVucmVn_XN0ZXJFdmVud-BTTFVucmVn_XN0ZXJFdmVud-BTUFBDUy5TTFVucmVn_XN0ZXJQbHVn_W4-U0xVbnJlZ2lzdGVyUGx1Z2lu-FNQUENTLlNMcEF1 | ||
| - | dGhlbnRpY2F0ZUdlbnVpbmVU_WNrZXRSZXNwb25zZQBTTHBBdXRoZW50_WNhdGVHZW51_W5lVGlj_2V0UmVzcG9uc2U-U1BQQ1MuU0xwQmVn_W5HZW51_W5lVGlj_2V0VHJhbnNhY3Rpb24-U0xwQmVn_W5HZW51_W5lVGlj_2V0VHJhbnNhY3Rpb24-U1BQQ1MuU0xw | ||
| - | Q2xlYXJBY3RpdmF0_W9uSW5Qcm9ncmVzcwBTTHBDbGVhckFjdGl2YXRpb25JblByb2dyZXNz-FNQUENTLlNMcERlcG9z_XREb3dubGV2ZWxHZW51_W5lVGlj_2V0-FNMcERlcG9z_XREb3dubGV2ZWxHZW51_W5lVGlj_2V0-FNQUENTLlNMcERlcG9z_XRUb2tlbkFj | ||
| - | dGl2YXRpb25SZXNwb25zZQBTTHBEZXBvc2l0VG9rZW5BY3RpdmF0_W9uUmVzcG9uc2U-U1BQQ1MuU0xwR2VuZXJhdGVUb2tlbkFjdGl2YXRpb25D_GFsbGVuZ2U-U0xwR2VuZXJhdGVUb2tlbkFjdGl2YXRpb25D_GFsbGVuZ2U-U1BQQ1MuU0xwR2V0R2VudWluZUJs | ||
| - | b2I-U0xwR2V0R2VudWluZUJsb2I-U1BQQ1MuU0xwR2V0R2VudWluZUxvY2Fs-FNMcEdldEdlbnVpbmVMb2Nhb-BTUFBDUy5TTHBHZXRM_WNlbnNlQWNxdWlz_XRpb25JbmZv-FNMcEdldExpY2Vuc2VBY3F1_XNpdGlvbkluZm8-U1BQQ1MuU0xwR2V0TVNQ_WRJbmZv | ||
| - | cm1hdGlvbgBTTHBHZXRNU1BpZEluZm9ybWF0_W9u-FNQUENTLlNMcEdldE1hY2hpbmVVR1VJR-BTTHBHZXRNYWNo_W5lVUdVSUQ-U1BQQ1MuU0xwR2V0VG9rZW5BY3RpdmF0_W9uR3JhbnRJbmZv-FNMcEdldFRv_2VuQWN0_XZhdGlvbkdyYW50SW5mbwBTUFBDUy5T | ||
| - | THBJQUFjdGl2YXRlUHJvZHVjd-BTTHBJQUFjdGl2YXRlUHJvZHVjd-BTUFBDUy5TTHBJc0N1cnJlbnRJbnN0YWxsZWRQcm9kdWN0S2V5RGVmYXVsdEtleQBTTHBJc0N1cnJlbnRJbnN0YWxsZWRQcm9kdWN0S2V5RGVmYXVsdEtleQBTUFBDUy5TTHBQcm9jZXNzVk1Q | ||
| - | _XBlTWVzc2FnZQBTTHBQcm9jZXNzVk1Q_XBlTWVzc2FnZQBTUFBDUy5TTHBTZXRBY3RpdmF0_W9uSW5Qcm9ncmVzcwBTTHBTZXRBY3RpdmF0_W9uSW5Qcm9ncmVzcwBTUFBDUy5TTHBUcmlnZ2VyU2VydmljZVdvcmtlcgBTTHBUcmlnZ2VyU2VydmljZVdvcmtlcgBT | ||
| - | UFBDUy5TTHBWTEFjdGl2YXRlUHJvZHVjd-BTTHBWTEFjdGl2YXRlUHJvZHVjd------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------FBg-------------Ohg--BsY---XG-------------- | ||
| - | +G---Hhg--BkY--------------MYQ--gG------------------------------iG---Kpg--------yG--------DUY--------Ihg--CqY--------Mhg--------1G---------C-FNMR2V0TGljZW5z_W5nU3RhdHVzSW5mb3JtYXRpb24--QBTTEdldFByb2R1 | ||
| - | Y3RT_3VJbmZvcm1hdGlvbg--3QNMb2NhbEZyZWU-RwFTdHJTdHJOSVc--G----Bg--BzcHBjcy5kbGw----UY---S0VSTkVMMzIuZGxs-----Chg--BTSExXQVBJLmRsb----------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -----------------------------------------------------------B-B-----Y--C--------------------B--E----w--C--------------------B--kE--BI----WH---BwD-------------BwDN----FY-UwBf-FY-RQBS-FM-SQBP-E4-XwBJ-E4- | ||
| - | RgBP------C9BO/ | ||
| - | --BB-G4-bwBt-GE-b-Bv-HU-cw-g-FM-bwBm-HQ-dwBh-HI-ZQ-g-EQ-ZQB0-GU-cgBp-G8-cgBh-HQ-_QBv-G4-I-BD-G8-cgBw-G8-cgBh-HQ-_QBv-G4------D4-Cw-B-EY-_QBs-GU-R-Bl-HM-YwBy-Gk-c-B0-Gk-bwBu------Bv-Gg-bwBv-Gs-I-BT-F-- | ||
| - | U-BD-------w--g--QBG-Gk-b-Bl-FY-ZQBy-HM-_QBv-G4------D--Lg-z-C4-M--u-D-----q--U--QBJ-G4-d-Bl-HI-bgBh-Gw-TgBh-G0-ZQ---HM-c-Bw-GM------Iw-N--B-Ew-ZQBn-GE-b-BD-G8-c-B5-HI-_QBn-Gg-d----Kk-I--y-D--Mg-z-C-- | ||
| - | QQBu-G8-bQBh-Gw-bwB1-HM-I-BT-G8-ZgB0-Hc-YQBy-GU-I-BE-GU-d-Bl-HI-_QBv-HI-YQB0-Gk-bwBu-C--QwBv-HI-c-Bv-HI-YQB0-Gk-bwBu----Og-J--E-TwBy-Gk-ZwBp-G4-YQBs-EY-_QBs-GU-bgBh-G0-ZQ---HM-c-Bw-GM-LgBk-Gw-b------- | ||
| - | L--G--E-U-By-G8-Z-B1-GM-d-BO-GE-bQBl------Bv-Gg-bwBv-Gs----0--g--QBQ-HI-bwBk-HU-YwB0-FY-ZQBy-HM-_QBv-G4----w-C4-Mw-u-D--Lg-w----R-----E-VgBh-HI-RgBp-Gw-ZQBJ-G4-ZgBv-------k--Q---BU-HI-YQBu-HM-b-Bh-HQ- | ||
| - | _QBv-G4-------kE5-Q------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------Q---U----OzBQMHEwfjBSMVox------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ---------------------------------------------------------------------------------------- | ||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | :: Replace - with A and _ with a before base64 conversion | ||
| - | |||
| - | : | ||
| - | TVqQ--M----E----// | ||
| - | LiIL-gIo--I----e---------B-----Q-----JIx-g-----Q-----g--B----------G----------CQ----B---39----I-Y-E--C---------Q-----------Q--------E--------------Q-----F---I0Q----c---U-E---C---B4-w---D---CQ--------- | ||
| - | --------------------------------------------------------------------------------iH---Dg------------------------------------udGV4d----H-B----E-----I----E-------------------g--BgLnJkYXRh---g-----C-----C | ||
| - | ----Bg------------------Q---QC5wZGF0YQ--J------w-----g----g------------------E---E-ueGRhdGE--CQ-----Q-----I----K------------------B---B-LmVkYXRh--CNE----F-----S----D-------------------Q---QC5pZGF0YQ-- | ||
| - | U-E---Bw-----g---B4------------------E---M-ucnNyYw---HgD----g-----Q----g------------------B---D--------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------LgB----w0FUU0iD7EhFMclMjQXpDw--SI1E | ||
| - | JDjHRCQ0-----EiJRCQoSI1EJDRIiUQkIEjHRCQ4-----Oj/ | ||
| - | IEiJz0iJbCQo6Io---BBicSFwHVEQTl1-HY+SGveKEiLVQBI-dqDeh--dChIifnoIv/// | ||
| - | kJD/ | ||
| - | ------------------------------------------------TgBh-G0-ZQ---Ec-cgBh-GM-ZQ------------------------------------------------------------------------------------------------------------------------------ | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ------------------------------------------------------------------------------------------------------------------------------------E---Bh----B----GE---jh----R---COE---GRE--BB------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | --------------E----BBwM-B4IDM-L----BD-c-DGIIM-dgBn-FU-T--t---------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -----------------------------------------------------------------------------------------------------MDc0GQ-----xlI---E---BD----Qw---ChQ---0UQ--QFI--M9S--DvUg--BVM--ClT--BdUw--oVM--OlT---XV---NVQ--GdU | ||
| - | --CdV---41Q--C1V--BhVQ--n1U--NNV---NVg--O1Y--HFW--CvVg--z1Y--PtW--COE---UVc--G9X--CfVw--01c--BFY--BNW---b1g--KVY--DNW---BVk--EFZ--BtWQ--p1k--LtZ--D7WQ--OVo--E9_--B1Wg--nVo--NN_---HWw--PVs--Glb--ClWw-- | ||
| - | 41s---1c---5X---iVw--NFc---RXQ--WV0--KNd--DxXQ--G14--Ede--CHXg--u14--Ode---rXw--W18--LVf--DrXw--J2---F1g--DiUg--/ | ||
| - | --CTVg--wlY--OhW---ZVw--MVc--GNX--CKVw--vFc--PVX---yW---YVg--I1Y--C8W---7Fg--CZZ--B_WQ--jVk--LRZ--DeWQ--HVo--Ed_--BlWg--jFo--Lt_--DwWg--JVs--FZb--CKWw--x1s--Ptb---mX---ZFw--LBc--D0X---OF0--IFd--DNXQ-- | ||
| - | CV4--DRe--BqXg--pF4--NRe---MXw--Rl8--Itf--DTXw--DG---EVg--B4Y------B--I--w-E--U-Bg-H--g-CQ-K--s-D--N--4-Dw-Q-BE-Eg-T-BQ-FQ-W-Bc-G--Z-Bo-Gw-c-B0-Hg-f-C--IQ-i-CM-J--l-CY-Jw-o-Ck-Kg-r-Cw-LQ-u-C8-M--x-DI- | ||
| - | Mw-0-DU-Ng-3-Dg-OQ-6-Ds-P--9-D4-PwB--EE-QgBzcHBjLmRsb-BTUFBDUy5TTENhbGxTZXJ2ZXI-U0xDYWxsU2VydmVy-FNQUENTLlNMQ2xvc2U-U0xDbG9zZQBTUFBDUy5TTENvbnN1bWVS_Wdod-BTTENvbnN1bWVS_Wdod-BTUFBDUy5TTERlcG9z_XRN_Wdy | ||
| - | YXRpb25CbG9i-FNMRGVwb3NpdE1pZ3JhdGlvbkJsb2I-U1BQQ1MuU0xEZXBvc2l0T2ZmbGluZUNvbmZpcm1hdGlvbklk-FNMRGVwb3NpdE9mZmxpbmVDb25m_XJtYXRpb25JZ-BTUFBDUy5TTERlcG9z_XRPZmZs_W5lQ29uZmlybWF0_W9uSWRFe-BTTERlcG9z_XRP | ||
| - | ZmZs_W5lQ29uZmlybWF0_W9uSWRFe-BTUFBDUy5TTERlcG9z_XRTdG9yZVRv_2Vu-FNMRGVwb3NpdFN0b3JlVG9rZW4-U1BQQ1MuU0xG_XJlRXZlbnQ-U0xG_XJlRXZlbnQ-U1BQQ1MuU0xHYXRoZXJN_WdyYXRpb25CbG9i-FNMR2F0_GVyTWlncmF0_W9uQmxvYgBT | ||
| - | UFBDUy5TTEdhdGhlck1pZ3JhdGlvbkJsb2JFe-BTTEdhdGhlck1pZ3JhdGlvbkJsb2JFe-BTUFBDUy5TTEdlbmVyYXRlT2ZmbGluZUluc3RhbGxhdGlvbklk-FNMR2VuZXJhdGVPZmZs_W5lSW5zdGFsbGF0_W9uSWQ-U1BQQ1MuU0xHZW5lcmF0ZU9mZmxpbmVJbnN0 | ||
| - | YWxsYXRpb25JZEV4-FNMR2VuZXJhdGVPZmZs_W5lSW5zdGFsbGF0_W9uSWRFe-BTUFBDUy5TTEdldEFjdGl2ZUxpY2Vuc2VJbmZv-FNMR2V0QWN0_XZlTGljZW5zZUluZm8-U1BQQ1MuU0xHZXRBcHBs_WNhdGlvbkluZm9ybWF0_W9u-FNMR2V0QXBwbGljYXRpb25J | ||
| - | bmZvcm1hdGlvbgBTUFBDUy5TTEdldEFwcGxpY2F0_W9uUG9s_WN5-FNMR2V0QXBwbGljYXRpb25Qb2xpY3k-U1BQQ1MuU0xHZXRBdXRoZW50_WNhdGlvblJlc3Vsd-BTTEdldEF1dGhlbnRpY2F0_W9uUmVzdWx0-FNQUENTLlNMR2V0RW5jcnlwdGVkUElERXg-U0xH | ||
| - | ZXRFbmNyeXB0ZWRQSURFe-BTUFBDUy5TTEdldEdlbnVpbmVJbmZvcm1hdGlvbgBTTEdldEdlbnVpbmVJbmZvcm1hdGlvbgBTUFBDUy5TTEdldEluc3RhbGxlZFByb2R1Y3RLZXlJZHM-U0xHZXRJbnN0YWxsZWRQcm9kdWN0S2V5SWRz-FNQUENTLlNMR2V0TGljZW5z | ||
| - | ZQBTTEdldExpY2Vuc2U-U1BQQ1MuU0xHZXRM_WNlbnNlRmlsZUlk-FNMR2V0TGljZW5zZUZpbGVJZ-BTUFBDUy5TTEdldExpY2Vuc2VJbmZvcm1hdGlvbgBTTEdldExpY2Vuc2VJbmZvcm1hdGlvbgBTTEdldExpY2Vuc2luZ1N0YXR1c0luZm9ybWF0_W9u-FNQUENT | ||
| - | LlNMR2V0UEtleUlk-FNMR2V0UEtleUlk-FNQUENTLlNMR2V0UEtleUluZm9ybWF0_W9u-FNMR2V0UEtleUluZm9ybWF0_W9u-FNQUENTLlNMR2V0UG9s_WN5SW5mb3JtYXRpb24-U0xHZXRQb2xpY3lJbmZvcm1hdGlvbgBTUFBDUy5TTEdldFBvbGljeUluZm9ybWF0 | ||
| - | _W9uRFdPUkQ-U0xHZXRQb2xpY3lJbmZvcm1hdGlvbkRXT1JE-FNQUENTLlNMR2V0UHJvZHVjdFNrdUluZm9ybWF0_W9u-FNMR2V0UHJvZHVjdFNrdUluZm9ybWF0_W9u-FNQUENTLlNMR2V0U0xJRExpc3Q-U0xHZXRTTElETGlzd-BTUFBDUy5TTEdldFNlcnZpY2VJ | ||
| - | bmZvcm1hdGlvbgBTTEdldFNlcnZpY2VJbmZvcm1hdGlvbgBTUFBDUy5TTEluc3RhbGxM_WNlbnNl-FNMSW5zdGFsbExpY2Vuc2U-U1BQQ1MuU0xJbnN0YWxsUHJvb2ZPZlB1cmNoYXNl-FNMSW5zdGFsbFByb29mT2ZQdXJj_GFzZQBTUFBDUy5TTEluc3RhbGxQcm9v | ||
| - | Zk9mUHVyY2hhc2VFe-BTTEluc3RhbGxQcm9vZk9mUHVyY2hhc2VFe-BTUFBDUy5TTElzR2VudWluZUxvY2FsRXg-U0xJc0dlbnVpbmVMb2NhbEV4-FNQUENTLlNMTG9hZEFwcGxpY2F0_W9uUG9s_WNpZXM-U0xMb2FkQXBwbGljYXRpb25Qb2xpY2llcwBTUFBDUy5T | ||
| - | TE9wZW4-U0xPcGVu-FNQUENTLlNMUGVyc2lzdEFwcGxpY2F0_W9uUG9s_WNpZXM-U0xQZXJz_XN0QXBwbGljYXRpb25Qb2xpY2llcwBTUFBDUy5TTFBlcnNpc3RSVFNQYXlsb2FkT3ZlcnJpZGU-U0xQZXJz_XN0UlRTUGF5bG9hZE92ZXJy_WRl-FNQUENTLlNMUmVB | ||
| - | cm0-U0xSZUFybQBTUFBDUy5TTFJlZ2lzdGVyRXZlbnQ-U0xSZWdpc3RlckV2ZW50-FNQUENTLlNMUmVn_XN0ZXJQbHVn_W4-U0xSZWdpc3RlclBsdWdpbgBTUFBDUy5TTFNldEF1dGhlbnRpY2F0_W9uRGF0YQBTTFNldEF1dGhlbnRpY2F0_W9uRGF0YQBTUFBDUy5T | ||
| - | TFNldEN1cnJlbnRQcm9kdWN0S2V5-FNMU2V0Q3VycmVudFByb2R1Y3RLZXk-U1BQQ1MuU0xTZXRHZW51_W5lSW5mb3JtYXRpb24-U0xTZXRHZW51_W5lSW5mb3JtYXRpb24-U1BQQ1MuU0xVbmluc3RhbGxM_WNlbnNl-FNMVW5pbnN0YWxsTGljZW5zZQBTUFBDUy5T | ||
| - | TFVu_W5zdGFsbFByb29mT2ZQdXJj_GFzZQBTTFVu_W5zdGFsbFByb29mT2ZQdXJj_GFzZQBTUFBDUy5TTFVubG9hZEFwcGxpY2F0_W9uUG9s_WNpZXM-U0xVbmxvYWRBcHBs_WNhdGlvblBvbGlj_WVz-FNQUENTLlNMVW5yZWdpc3RlckV2ZW50-FNMVW5yZWdpc3Rl | ||
| - | ckV2ZW50-FNQUENTLlNMVW5yZWdpc3RlclBsdWdpbgBTTFVucmVn_XN0ZXJQbHVn_W4-U1BQQ1MuU0xwQXV0_GVudGljYXRlR2VudWluZVRpY2tldFJlc3BvbnNl-FNMcEF1dGhlbnRpY2F0ZUdlbnVpbmVU_WNrZXRSZXNwb25zZQBTUFBDUy5TTHBCZWdpbkdlbnVp | ||
| - | bmVU_WNrZXRUcmFuc2FjdGlvbgBTTHBCZWdpbkdlbnVpbmVU_WNrZXRUcmFuc2FjdGlvbgBTUFBDUy5TTHBDbGVhckFjdGl2YXRpb25JblByb2dyZXNz-FNMcENsZWFyQWN0_XZhdGlvbkluUHJvZ3Jlc3M-U1BQQ1MuU0xwRGVwb3NpdERvd25sZXZlbEdlbnVpbmVU | ||
| - | _WNrZXQ-U0xwRGVwb3NpdERvd25sZXZlbEdlbnVpbmVU_WNrZXQ-U1BQQ1MuU0xwRGVwb3NpdFRv_2VuQWN0_XZhdGlvblJlc3BvbnNl-FNMcERlcG9z_XRUb2tlbkFjdGl2YXRpb25SZXNwb25zZQBTUFBDUy5TTHBHZW5lcmF0ZVRv_2VuQWN0_XZhdGlvbkNoYWxs | ||
| - | ZW5nZQBTTHBHZW5lcmF0ZVRv_2VuQWN0_XZhdGlvbkNoYWxsZW5nZQBTUFBDUy5TTHBHZXRHZW51_W5lQmxvYgBTTHBHZXRHZW51_W5lQmxvYgBTUFBDUy5TTHBHZXRHZW51_W5lTG9jYWw-U0xwR2V0R2VudWluZUxvY2Fs-FNQUENTLlNMcEdldExpY2Vuc2VBY3F1 | ||
| - | _XNpdGlvbkluZm8-U0xwR2V0TGljZW5zZUFjcXVpc2l0_W9uSW5mbwBTUFBDUy5TTHBHZXRNU1BpZEluZm9ybWF0_W9u-FNMcEdldE1TUGlkSW5mb3JtYXRpb24-U1BQQ1MuU0xwR2V0TWFj_GluZVVHVUlE-FNMcEdldE1hY2hpbmVVR1VJR-BTUFBDUy5TTHBHZXRU | ||
| - | b2tlbkFjdGl2YXRpb25HcmFudEluZm8-U0xwR2V0VG9rZW5BY3RpdmF0_W9uR3JhbnRJbmZv-FNQUENTLlNMcElBQWN0_XZhdGVQcm9kdWN0-FNMcElBQWN0_XZhdGVQcm9kdWN0-FNQUENTLlNMcElzQ3VycmVudEluc3RhbGxlZFByb2R1Y3RLZXlEZWZhdWx0S2V5 | ||
| - | -FNMcElzQ3VycmVudEluc3RhbGxlZFByb2R1Y3RLZXlEZWZhdWx0S2V5-FNQUENTLlNMcFByb2Nlc3NWTVBpcGVNZXNzYWdl-FNMcFByb2Nlc3NWTVBpcGVNZXNzYWdl-FNQUENTLlNMcFNldEFjdGl2YXRpb25JblByb2dyZXNz-FNMcFNldEFjdGl2YXRpb25JblBy | ||
| - | b2dyZXNz-FNQUENTLlNMcFRy_WdnZXJTZXJ2_WNlV29y_2Vy-FNMcFRy_WdnZXJTZXJ2_WNlV29y_2Vy-FNQUENTLlNMcFZMQWN0_XZhdGVQcm9kdWN0-FNMcFZMQWN0_XZhdGVQcm9kdWN0-------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| - | ----------------------------------------UH--------------IHE--Ihw--Boc--------------wcQ--oH---Hhw-------------ERx--Cwc-----------------------------D-c--------OJw--------------------cQ------------------ | ||
| - | DHE------------------MBw--------4n--------------------Bx-------------------McQ-------------------gBTTEdldExpY2Vuc2luZ1N0YXR1c0luZm9ybWF0_W9u--E-U0xHZXRQcm9kdWN0U2t1SW5mb3JtYXRpb24--OgDTG9jYWxGcmVl-FEB | ||
| - | U3RyU3RyTklX--Bw----c---c3BwY3MuZGxs----FH---EtFUk5FTDMyLmRsb------oc---U0hMV0FQSS5kbGw----------------------------------------------------------------------------------------------------------------- | ||
| - | ----------------------------------------------------------------------------------------------------------------------------------------------E-E----Bg--I--------------------E--Q---D---I-------------- | ||
| - | ------E-CQQ--Eg---BYg---H-M-------------H-M0----VgBT-F8-VgBF-FI-UwBJ-E8-TgBf-Ek-TgBG-E8------L0E7/ | ||
| - | bgBm-G8---BY-g---Q-w-DQ-M--5-D--N-BF-DQ---B6-C0--QBD-G8-bQBw-GE-bgB5-E4-YQBt-GU------EE-bgBv-G0-YQBs-G8-dQBz-C--UwBv-GY-d-B3-GE-cgBl-C--R-Bl-HQ-ZQBy-Gk-bwBy-GE-d-Bp-G8-bg-g-EM-bwBy-H--bwBy-GE-d-Bp-G8- | ||
| - | bg------Pg-L--E-RgBp-Gw-ZQBE-GU-cwBj-HI-_QBw-HQ-_QBv-G4------G8-_-Bv-G8-_w-g-FM-U-BQ-EM------D--C--B-EY-_QBs-GU-VgBl-HI-cwBp-G8-bg------M--u-DM-Lg-w-C4-M----Co-BQ-B-Ek-bgB0-GU-cgBu-GE-b-BO-GE-bQBl---- | ||
| - | cwBw-H--Yw------j--0--E-T-Bl-Gc-YQBs-EM-bwBw-Hk-cgBp-Gc-_-B0----qQ-g-DI-M--y-DM-I-BB-G4-bwBt-GE-b-Bv-HU-cw-g-FM-bwBm-HQ-dwBh-HI-ZQ-g-EQ-ZQB0-GU-cgBp-G8-cgBh-HQ-_QBv-G4-I-BD-G8-cgBw-G8-cgBh-HQ-_QBv-G4- | ||
| - | ---6--k--QBP-HI-_QBn-Gk-bgBh-Gw-RgBp-Gw-ZQBu-GE-bQBl----cwBw-H--Yw-u-GQ-b-Bs-------s--Y--QBQ-HI-bwBk-HU-YwB0-E4-YQBt-GU------G8-_-Bv-G8-_w---DQ-C--B-F--cgBv-GQ-dQBj-HQ-VgBl-HI-cwBp-G8-bg---D--Lg-z-C4- | ||
| - | M--u-D----BE-----QBW-GE-cgBG-Gk-b-Bl-Ek-bgBm-G8------CQ-B----FQ-cgBh-G4-cwBs-GE-d-Bp-G8-bg------CQTkB--------------------------------------------------------------------------------------------------- | ||
| - | ---------------------------------------------------------------------------------------- | ||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | :: To activate, run the script with "/ | ||
| - | set _act=0 | ||
| - | |||
| - | :: To remove KMS38 protection, run the script with / | ||
| - | set _rem=0 | ||
| - | |||
| - | :: To disable changing edition if current edition doesn' | ||
| - | set _NoEditionChange=0 | ||
| - | |||
| - | :: If value is changed in above lines or parameter is used then script will run in unattended mode | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title KMS38 Activation %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 " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%A in (%_act% %_rem% %_NoEditionChange%) do (if " | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | for /F %%a in ('echo prompt $E ^| cmd') do set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set _k38= | ||
| - | set " | ||
| - | set " | ||
| - | if %~z0 GEQ 200000 ( | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %winbuild% LSS 14393 ( | ||
| - | %eline% | ||
| - | echo Unsupported OS version detected [%winbuild%]. | ||
| - | echo KMS38 Activation is supported for Windows 10/ | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %_rem%==1 goto : | ||
| - | |||
| - | :k_menu | ||
| - | |||
| - | if %_unattended%==0 ( | ||
| - | cls | ||
| - | mode 76, 25 | ||
| - | title KMS38 Activation %masver% | ||
| - | |||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo | ||
| - | echo: | ||
| - | echo [1] KMS38 Activation | ||
| - | echo | ||
| - | echo: | ||
| - | echo [2] Remove KM38 Protection | ||
| - | echo: | ||
| - | echo [0] %_exitmsg% | ||
| - | echo | ||
| - | echo: | ||
| - | call :dk_color2 %_White% " | ||
| - | choice /C:120 /N | ||
| - | set _el=!errorlevel! | ||
| - | if !_el!==3 | ||
| - | if !_el!==2 | ||
| - | if !_el!==1 | ||
| - | goto :k_menu | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :k_menu2 | ||
| - | |||
| - | cls | ||
| - | mode 110, 34 | ||
| - | if exist " | ||
| - | title KMS38 Activation %masver% | ||
| - | |||
| - | echo: | ||
| - | echo Initializing... | ||
| - | |||
| - | :: Check PowerShell | ||
| - | |||
| - | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i " | ||
| - | %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 dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | call :dk_product | ||
| - | call : | ||
| - | |||
| - | :: 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% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check if system is permanently activated or not | ||
| - | |||
| - | call : | ||
| - | if defined _perm ( | ||
| - | cls | ||
| - | echo ___________________________________________________________________________________________ | ||
| - | echo: | ||
| - | call :dk_color2 %_White% " | ||
| - | call :dk_color2 %_White% " | ||
| - | echo ___________________________________________________________________________________________ | ||
| - | if %_unattended%==1 goto dk_done | ||
| - | echo: | ||
| - | choice /C:10 /N /M "> | ||
| - | if errorlevel 2 exit /b | ||
| - | ) | ||
| - | cls | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Evaluation version | ||
| - | |||
| - | set _eval= | ||
| - | set _evalserv= | ||
| - | |||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | |||
| - | if defined _eval ( | ||
| - | reg query " | ||
| - | %eline% | ||
| - | echo [%winos% ^| %winbuild%] | ||
| - | if defined _evalserv ( | ||
| - | echo Server Evaluation cannot be activated. Convert it to full Server OS. | ||
| - | echo: | ||
| - | echo In MAS, goto Extras and use ' | ||
| - | ) else ( | ||
| - | echo Evaluation Editions cannot be activated. | ||
| - | echo You need to install full version of %winos% | ||
| - | echo: | ||
| - | echo Download it from here, | ||
| - | echo %mas%genuine-installation-media.html | ||
| - | ) | ||
| - | goto dk_done | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check clipup.exe for the detection and activation of server cor and acor editions | ||
| - | |||
| - | set a_cor= | ||
| - | if exist " | ||
| - | |||
| - | if defined a_cor ( | ||
| - | if not exist " | ||
| - | %eline% | ||
| - | echo clipup.exe doesn' | ||
| - | echo It's required for KMS38 Activation. | ||
| - | echo Check below page on how to activate it. | ||
| - | echo %mas%kms38.html | ||
| - | goto dk_done | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | call : | ||
| - | |||
| - | if not defined osSKU ( | ||
| - | %eline% | ||
| - | echo SKU value was not detected properly. Aborting... | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set error= | ||
| - | |||
| - | cls | ||
| - | echo: | ||
| - | for /f " | ||
| - | for /f " | ||
| - | echo Checking OS Info [%winos% ^| %fullbuild% ^| %arch%] | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Windows Script Host | ||
| - | |||
| - | set _WSH=1 | ||
| - | reg query " | ||
| - | reg query " | ||
| - | |||
| - | if %_WSH% EQU 0 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | if not " | ||
| - | echo Enabling Windows Script Host [Successful] | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo Initiating Diagnostic Tests... | ||
| - | |||
| - | set " | ||
| - | |||
| - | :: Client License Service (ClipSVC) | ||
| - | :: Software Protection | ||
| - | :: CNG Key Isolation | ||
| - | :: Windows Management Instrumentation | ||
| - | |||
| - | call : | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check if GVLK (KMS key) is already installed or not | ||
| - | |||
| - | set _gvlk= | ||
| - | call :dk_channel | ||
| - | if /i " | ||
| - | |||
| - | :: Detect Key | ||
| - | |||
| - | set key= | ||
| - | set pkey= | ||
| - | set altkey= | ||
| - | set skufound= | ||
| - | set changekey= | ||
| - | set altedition= | ||
| - | |||
| - | call :kms38data getkey | ||
| - | if not defined key call :dk_gvlk %nul% | ||
| - | if defined applist if not defined key call : | ||
| - | |||
| - | if defined altkey (set key=%altkey%& | ||
| - | |||
| - | set /a UBR=0 | ||
| - | if %osSKU%==191 if defined altkey if defined altedition ( | ||
| - | for /f " | ||
| - | if %winbuild% GEQ 19044 if !UBR! LSS 2788 ( | ||
| - | call :dk_color %Blue% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if not defined key if defined notfoundaltactID ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if not defined key if not defined _gvlk ( | ||
| - | %eline% | ||
| - | echo [%winos% ^| %winbuild% ^| SKU: | ||
| - | if not defined skufound ( | ||
| - | echo Unable to find this product in the supported product list. | ||
| - | ) else ( | ||
| - | echo Required License files not installed. | ||
| - | ) | ||
| - | echo Make sure you are using updated version of the script. | ||
| - | echo %mas% | ||
| - | echo: | ||
| - | goto dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Install key | ||
| - | |||
| - | echo: | ||
| - | if defined changekey ( | ||
| - | call :dk_color %Blue% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | set _partial= | ||
| - | if not defined key ( | ||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | call echo Checking Installed Product Key [Partial Key - %%_partial%%] [Volume: | ||
| - | ) | ||
| - | |||
| - | set error_code= | ||
| - | if defined key ( | ||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingService where __CLASS=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | 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 " | ||
| - | |||
| - | if !error_code! EQU 0 ( | ||
| - | call :dk_refresh | ||
| - | echo Installing KMS Client Setup Key | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | if not defined error ( | ||
| - | call :dk_color %Blue% " | ||
| - | set showfix=1 | ||
| - | ) | ||
| - | set error=1 | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check activation ID for setting specific KMS host | ||
| - | |||
| - | set app= | ||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | |||
| - | if not defined app ( | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | goto :dk_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Set specific KMS host to Local Host | ||
| - | :: By doing this, global KMS IP can not replace KMS38 activation but can be used with Office and other Windows Editions | ||
| - | |||
| - | echo: | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | |||
| - | %nul% reg query " | ||
| - | %psc% " | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | |||
| - | set k_error= | ||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | |||
| - | if not defined k_error ( | ||
| - | echo Adding Specific KMS Host [LocalHost 127.0.0.2] [Successful] | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Copy clipup.exe to System32 directory to activate Server Cor/Acor editions | ||
| - | |||
| - | if defined a_cor ( | ||
| - | set " | ||
| - | pushd " | ||
| - | copy /y /b " | ||
| - | popd | ||
| - | |||
| - | echo: | ||
| - | if exist " | ||
| - | echo Copying clipup.exe File to [%systemroot%\System32\] [Successful] | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | goto :k_final | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Generate GenuineTicket.xml and apply | ||
| - | :: In some cases clipup -v -o method fails and in some cases service restart method fails as well | ||
| - | :: To maximize success rate and get better error details, script will install tickets two times (service restart + clipup -v -o) | ||
| - | |||
| - | if not exist %SystemRoot%\system32\ClipUp.exe ( | ||
| - | call :dk_color %Red% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | goto :k_final | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | if not exist " | ||
| - | |||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | |||
| - | :: Signature value is as it is, it's not encoded | ||
| - | :: Session ID is in Base64 encoded format. It's decoded value is " | ||
| - | :: Check mass grave[.]dev/ | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | <nul set /p " | ||
| - | |||
| - | copy /y /b " | ||
| - | |||
| - | if not exist " | ||
| - | call :dk_color %Red% " | ||
| - | if exist " | ||
| - | goto :k_final | ||
| - | ) else ( | ||
| - | echo Generating GenuineTicket.xml | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | |||
| - | :: Stop sppsvc | ||
| - | |||
| - | %psc% Stop-Service sppsvc %nul% | ||
| - | |||
| - | sc query sppsvc | find /i " | ||
| - | echo Stopping sppsvc Service | ||
| - | ) || ( | ||
| - | call :dk_color %Gray% " | ||
| - | ) | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | %psc% Restart-Service ClipSVC %nul% | ||
| - | %_xmlexist% timeout /t 2 %nul% | ||
| - | %_xmlexist% timeout /t 2 %nul% | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | set error=1 | ||
| - | if exist " | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | copy /y /b " | ||
| - | clipup -v -o | ||
| - | |||
| - | set rebuildinfo= | ||
| - | |||
| - | if not exist %ProgramData%\Microsoft\Windows\ClipSVC\tokens.dat ( | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | %_xmlexist% ( | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | set error=1 | ||
| - | set rebuildinfo=1 | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | if defined applist if not defined showfix if defined rebuildinfo ( | ||
| - | set showfix=1 | ||
| - | call :dk_color %Blue% " | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | |||
| - | :: | ||
| - | |||
| - | call :dk_product | ||
| - | |||
| - | echo: | ||
| - | echo Activating... | ||
| - | echo: | ||
| - | |||
| - | call :k_checkexp | ||
| - | if defined _k38 ( | ||
| - | call :k_actinfo | ||
| - | goto :k_final | ||
| - | ) | ||
| - | |||
| - | :: Clear 180 Days KMS Activation lock with Windows SKU specific rearm and without the need to restart the system | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path SoftwareLicensingProduct where ID=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | |||
| - | if %errorlevel%==0 ( | ||
| - | echo Applying SKU-ID Rearm | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | call :dk_refresh | ||
| - | |||
| - | echo: | ||
| - | call :k_checkexp | ||
| - | if defined _k38 ( | ||
| - | call :k_actinfo | ||
| - | goto :k_final | ||
| - | ) | ||
| - | |||
| - | call :dk_color %Red% " | ||
| - | if not defined error call :dk_color %Blue% " | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%troubleshoot" | ||
| - | |||
| - | :: | ||
| - | |||
| - | :k_final | ||
| - | |||
| - | :: Remove the added Specific KMS Host (Local Host) if activation is not completed | ||
| - | |||
| - | echo: | ||
| - | if not defined _k38 ( | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg query " | ||
| - | call :dk_color %Red% " | ||
| - | ) || ( | ||
| - | echo Removing The Added Specific KMS Host [Successful] | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: Protect KMS38 if opted by the user and conditions are correct | ||
| - | |||
| - | if defined _k38 ( | ||
| - | %psc% " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg query " | ||
| - | echo Protect KMS38 From KMS [Successful] [Locked A Registry Key] | ||
| - | ) || ( | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: clipup.exe does not exist in server cor and acor editions by default, it was copied there with this script | ||
| - | |||
| - | if defined a_cor if exist " | ||
| - | |||
| - | if defined a_cor ( | ||
| - | if exist " | ||
| - | call :dk_color %Red% " | ||
| - | ) else ( | ||
| - | echo Deleting copied clipup.exe file | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%# in (175 407) do if %osSKU%==%%# | ||
| - | call :dk_color %Red% " | ||
| - | ) | ||
| - | |||
| - | goto :dk_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | mode 99, 28 | ||
| - | title Remove KMS38 Protection %masver% | ||
| - | |||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | |||
| - | %nul% reg query " | ||
| - | %psc% " | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | %nul% reg query " | ||
| - | call :dk_color %Red% " | ||
| - | ) || ( | ||
| - | echo Removing Specific KMS Host [Successful] | ||
| - | ) | ||
| - | |||
| - | goto :dk_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: This code runs to protect/ | ||
| - | :: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f | ||
| - | |||
| - | :: KMS38 protection stops 180 days KMS Activation from replacing KMS38 activation | ||
| - | |||
| - | :regdel: | ||
| - | param ( | ||
| - | [switch]$protect | ||
| - | ) | ||
| - | |||
| - | $SID = New-Object System.Security.Principal.SecurityIdentifier(' | ||
| - | $Admin = ($SID.Translate([System.Security.Principal.NTAccount])).Value | ||
| - | |||
| - | if($protect) { | ||
| - | $ruleArgs = @(" | ||
| - | } else { | ||
| - | $ruleArgs = @(" | ||
| - | } | ||
| - | |||
| - | $path = ' | ||
| - | $key = [Microsoft.Win32.RegistryKey]:: | ||
| - | $acl = $key.GetAccessControl() | ||
| - | |||
| - | $rule = [System.Security.AccessControl.RegistryAccessRule]:: | ||
| - | $acl.ResetAccessRule($rule) | ||
| - | $key.SetAccessControl($acl) | ||
| - | :regdel: | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check KMS activation status | ||
| - | |||
| - | :k_actinfo | ||
| - | |||
| - | set xpr= | ||
| - | for /f " | ||
| - | call :dk_color %Green% " | ||
| - | exit /b | ||
| - | |||
| - | :: Check remaining KMS activation grace period | ||
| - | |||
| - | :k_checkexp | ||
| - | |||
| - | set gpr=0 | ||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | if %gpr% GTR 259200 (set _k38=1) else (set _k38=) | ||
| - | exit /b | ||
| - | |||
| - | :: Get Windows installed key channel | ||
| - | |||
| - | :dk_channel | ||
| - | |||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Get Product Key from pkeyhelper.dll for future new editions | ||
| - | :: It works on Windows 10 1803 (17134) and later builds. | ||
| - | |||
| - | :dk_pkey | ||
| - | |||
| - | call : | ||
| - | |||
| - | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $out = ''; | ||
| - | |||
| - | set pkey= | ||
| - | for /f %%a in (' | ||
| - | exit /b | ||
| - | |||
| - | :: Get channel name for the key which was extracted from pkeyhelper.dll | ||
| - | |||
| - | : | ||
| - | |||
| - | set k=%1 | ||
| - | set m=[Runtime.InteropServices.Marshal] | ||
| - | set p=%SystemRoot%\System32\spp\tokens\pkeyconfig\pkeyconfig.xrm-ms | ||
| - | |||
| - | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $r = [byte[]]:: | ||
| - | set d1=%d1% [void]$TypeBuilder.CreateType():: | ||
| - | |||
| - | set pkeychannel= | ||
| - | for /f %%a in (' | ||
| - | exit /b | ||
| - | |||
| - | :dk_gvlk | ||
| - | |||
| - | for %%# in (pkeyhelper.dll) do @if " | ||
| - | for %%# in (Volume: | ||
| - | call :dk_pkey %osSKU% ' | ||
| - | if defined pkey call : | ||
| - | if /i [!pkeychannel!]==[%%# | ||
| - | set key=!pkey! | ||
| - | exit /b | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 1st column = Activation ID | ||
| - | :: 2nd column = GVLK (Generic volume licensing key) | ||
| - | :: 3rd column = SKU ID | ||
| - | :: 4th column = WMI Edition ID (For reference only) | ||
| - | :: 5th column = Build Branch name incase same Edition ID is used in different OS versions with different key (For reference only) | ||
| - | :: Separator | ||
| - | |||
| - | :kms38data | ||
| - | |||
| - | set f= | ||
| - | for %%# in ( | ||
| - | 73111121-5638-40f6-bc11-f1d7b0d64300_NP%f%PR9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43___4_Enterprise | ||
| - | 7dc26449-db21-4e09-ba37-28f2958506a6_DP%f%NXD-67Y%f%Y9-WW%f%FJJ-RYH9%f%9-RM%f%832___7_ServerStandard_Ge | ||
| - | 9bd77860-9b31-4b7b-96ad-2564017315bf_VD%f%YBN-27W%f%PP-V4%f%HQT-9VMD%f%4-VM%f%K7H___7_ServerStandard_FE | ||
| - | de32eafd-aaee-4662-9444-c1befb41bde2_N6%f%9G4-B89%f%J2-4G%f%8F4-WWYC%f%C-J4%f%64C___7_ServerStandard_RS5 | ||
| - | 8c1c5410-9f39-4805-8c9d-63a07706358f_WC%f%2BQ-8NR%f%M3-FD%f%DYY-2BFG%f%V-KH%f%KQY___7_ServerStandard_RS1 | ||
| - | c052f164-cdf6-409a-a0cb-853ba0f0f55a_CN%f%FDQ-2BW%f%8H-9V%f%4WM-TKCP%f%D-MD%f%2QF___8_ServerDatacenter_Ge | ||
| - | ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX%f%4NM-KYW%f%YW-QJ%f%JR4-XV3Q%f%B-6V%f%M33___8_ServerDatacenter_FE | ||
| - | 34e1ae55-27f8-4950-8877-7a03be5fb181_WM%f%DGN-G9P%f%QG-XV%f%VXX-R3X4%f%3-63%f%DFG___8_ServerDatacenter_RS5 | ||
| - | 21c56779-b449-4d20-adfc-eece0e1ad74b_CB%f%7KF-BWN%f%84-R7%f%R2Y-793K%f%2-8X%f%DDG___8_ServerDatacenter_RS1 | ||
| - | e272e3e2-732f-4c65-a8f0-484747d0d947_DP%f%H2V-TTN%f%VB-4X%f%9Q3-TJR4%f%H-KH%f%JW4__27_EnterpriseN | ||
| - | 2de67392-b7a7-462a-b1ca-108dd189f588_W2%f%69N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX__48_Professional | ||
| - | a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH%f%37W-N47%f%XK-V7%f%XM9-C722%f%7-GC%f%QG9__49_ProfessionalN | ||
| - | 034d3cbb-5d4b-4245-b3f8-f84571314078_WV%f%DHN-86M%f%7X-46%f%6P6-VHXV%f%7-YY%f%726__50_ServerSolution_RS5 | ||
| - | 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JC%f%KRF-N37%f%P4-C2%f%D82-9YXR%f%T-4M%f%63B__50_ServerSolution_RS1 | ||
| - | 7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3K%f%HY7-WNT%f%83-DG%f%QKR-F7HP%f%R-84%f%4BM__98_CoreN | ||
| - | a9107544-f4a0-4053-a96a-1479abdef912_PV%f%MJN-6DF%f%Y6-9C%f%CP6-7BKT%f%T-D3%f%WVR__99_CoreCountrySpecific | ||
| - | cd918a57-a41b-4c82-8dce-1a538e221a83_7H%f%NRX-D7K%f%GG-3K%f%4RQ-4WPJ%f%4-YT%f%DFH_100_CoreSingleLanguage | ||
| - | 58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX%f%9XD-98N%f%7V-6W%f%MQ6-BX7F%f%G-H8%f%Q99_101_Core | ||
| - | 7b4433f4-b1e7-4788-895a-c45378d38253_QN%f%4C6-GBJ%f%D2-FB%f%422-GHWJ%f%K-GJ%f%G2R_110_ServerCloudStorage | ||
| - | 8de8eb62-bbe0-40ac-ac17-f75595071ea3_GR%f%FBW-QND%f%C4-6Q%f%BHG-CCK3%f%B-2P%f%R88_120_ServerARM64_RS5 | ||
| - | 43d9af6e-5e86-4be8-a797-d072a046896c_K9%f%FYF-G6N%f%CK-73%f%M32-XMVP%f%Y-F9%f%DRR_120_ServerARM64_RS4 | ||
| - | e0c42288-980c-4788-a014-c080d2e1926e_NW%f%6C2-QMP%f%VW-D7%f%KKK-3GKT%f%6-VC%f%FB2_121_Education | ||
| - | 3c102355-d027-42c6-ad23-2e7ef8a02585_2W%f%H4N-8QG%f%BV-H2%f%2JP-CT43%f%Q-MD%f%WWJ_122_EducationN | ||
| - | 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7%f%XTQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_125_EnterpriseS_RS5, | ||
| - | 2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DC%f%PHK-NFM%f%TC-H8%f%8MJ-PFHP%f%Y-QJ%f%4BJ_125_EnterpriseS_RS1 | ||
| - | 7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WN%f%MTR-4C8%f%8C-JK%f%8YV-HQ7T%f%2-76%f%DF9_125_EnterpriseS_TH1 | ||
| - | 7103a333-b8c8-49cc-93ce-d37c09687f92_92%f%NFX-8DJ%f%QP-P6%f%BBQ-THF9%f%C-7C%f%G2H_126_EnterpriseSN_RS5, | ||
| - | 9f776d83-7156-45b2-8a5c-359b9c9f22a3_QF%f%FDN-GRT%f%3P-VK%f%WWX-X7T3%f%R-8B%f%639_126_EnterpriseSN_RS1 | ||
| - | 87b838b7-41b6-4590-8318-5797951d8529_2F%f%77B-TNF%f%GY-69%f%QQF-B8YK%f%P-D6%f%9TJ_126_EnterpriseSN_TH1 | ||
| - | 39e69c41-42b4-4a0a-abad-8e3c10a797cc_QF%f%ND9-D3Y%f%9C-J3%f%KKY-6RPV%f%P-2D%f%PYV_145_ServerDatacenterACor_FE | ||
| - | 90c362e5-0da1-4bfd-b53b-b87d309ade43_6N%f%MRW-2C8%f%FM-D2%f%4W7-TQWM%f%Y-CW%f%H2D_145_ServerDatacenterACor_RS5 | ||
| - | e49c08e7-da82-42f8-bde2-b570fbcae76c_2H%f%XDN-KRX%f%HB-GP%f%YC7-YCKF%f%J-7F%f%VDG_145_ServerDatacenterACor_RS3 | ||
| - | f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67%f%KN8-4FY%f%JW-24%f%87Q-MQ2J%f%7-4C%f%4RG_146_ServerStandardACor_FE | ||
| - | 73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2%f%KJX-J94%f%YW-TQ%f%VFB-DG9Y%f%T-72%f%4CC_146_ServerStandardACor_RS5 | ||
| - | 61c5ef22-f14f-4553-a824-c4b31e84b100_PT%f%XN8-JFH%f%JM-4W%f%C78-MPCB%f%R-9W%f%4KR_146_ServerStandardACor_RS3 | ||
| - | 82bbc092-bc50-4e16-8e18-b74fc486aec3_NR%f%G8B-VKK%f%3Q-CX%f%VCJ-9G2X%f%F-6Q%f%84J_161_ProfessionalWorkstation | ||
| - | 4b1571d3-bafb-4b40-8087-a961be2caf65_9F%f%NHH-K3H%f%BT-3W%f%4TD-6383%f%H-6X%f%YWF_162_ProfessionalWorkstationN | ||
| - | 3f1afc82-f8ac-4f6c-8005-1d233e606eee_6T%f%P4R-GNP%f%TD-KY%f%YHQ-7B7D%f%P-J4%f%47Y_164_ProfessionalEducation | ||
| - | 5300b18c-2e33-4dc2-8291-47ffcec746dd_YV%f%WGF-BXN%f%MC-HT%f%QYQ-CPQ9%f%9-66%f%QFC_165_ProfessionalEducationN | ||
| - | 45b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_QN%f%7G3-4RM%f%92-MT%f%6QR-PR96%f%6-FV%f%YV7_168_ServerAzureCor_Ge | ||
| - | 8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N%f%379-GGT%f%MK-23%f%C6M-XVVT%f%C-CK%f%FRQ_168_ServerAzureCor_FE | ||
| - | a99cc1f0-7719-4306-9645-294102fbff95_FD%f%NH6-VW9%f%RW-BX%f%PJ7-4XTY%f%G-23%f%9TB_168_ServerAzureCor_RS5 | ||
| - | 3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP%f%34G-4NP%f%PG-79%f%JTQ-864T%f%4-R3%f%MQX_168_ServerAzureCor_RS1 | ||
| - | e0b2d383-d112-413f-8a80-97f373a5820c_YY%f%VX9-NTF%f%WV-6M%f%DM3-9PT4%f%T-4M%f%68B_171_EnterpriseG | ||
| - | e38454fb-41a4-4f59-a5dc-25080e354730_44%f%RPN-FTY%f%23-9V%f%TTB-MP9B%f%X-T8%f%4FV_172_EnterpriseGN | ||
| - | ec868e65-fadf-4759-b23e-93fe37f2cc29_CP%f%WHC-NT2%f%C7-VY%f%W78-DHDB%f%2-PG%f%3GK_175_ServerRdsh_RS5 | ||
| - | e4db50ea-bda1-4566-b047-0ca50abc6f07_7N%f%BT4-WGB%f%QX-MP%f%4H7-QXFF%f%8-YP%f%3KX_175_ServerRdsh_RS3 | ||
| - | 0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NB%f%TWJ-3DR%f%69-3C%f%4V8-C26M%f%C-GQ%f%9M6_183_CloudE | ||
| - | 59eb965c-9150-42b7-a0ec-22151b9897c5_KB%f%N8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_191_IoTEnterpriseS_VB, | ||
| - | d30136fc-cb4b-416e-a23d-87207abc44a9_6X%f%N7V-PCB%f%DC-BD%f%BRH-8DQY%f%7-G6%f%R44_202_CloudEditionN | ||
| - | ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37%f%D7F-N49%f%CB-WQ%f%R8W-TBJ7%f%3-FM%f%8RX_203_CloudEdition | ||
| - | c2e946d1-cfa2-4523-8c87-30bc696ee584_NQ%f%8HH-FTD%f%TM-6V%f%GY7-TQ3D%f%V-XF%f%BV2_407_ServerTurbine_Ge | ||
| - | 19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NT%f%BV8-9K7%f%Q8-V2%f%7C6-M2BT%f%V-KH%f%MXV_407_ServerTurbine_RS5 | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | set skufound=1 | ||
| - | if %1==getkey if not defined key echo " | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Below code is used to get alternate edition name and key if current edition doesn' | ||
| - | |||
| - | :: 1st column = Current SKU ID | ||
| - | :: 2nd column = Current Edition Name | ||
| - | :: 3rd column = Current Edition Activation ID | ||
| - | :: 4th column = Alternate Edition Activation ID | ||
| - | :: 5th column = Alternate Edition GVLK | ||
| - | :: 6th column = Alternate Edition Name | ||
| - | :: Separator | ||
| - | |||
| - | |||
| - | : | ||
| - | |||
| - | set notfoundaltactID= | ||
| - | if %_NoEditionChange%==1 exit /b | ||
| - | |||
| - | for %%# in ( | ||
| - | 188_IoTEnterprise__________________8ab9bdd1-1f67-4997-82d9-8878520837d9_73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43_Enterprise | ||
| - | 206_IoTEnterpriseK_________________80083eae-7031-4394-9e88-4901973d56fe_73111121-5638-40f6-bc11-f1d7b0d64300_NPP%f%R9-FWD%f%CX-D2%f%C8J-H872%f%K-2Y%f%T43_Enterprise | ||
| - | 191_IoTEnterpriseS-2021____________ed655016-a9e8-4434-95d9-4345352c2552_32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7X%f%TQ-FN8%f%P6-TT%f%KYV-9D4C%f%C-J4%f%62D_EnterpriseS-2021 | ||
| - | 205_IoTEnterpriseSK________________d4f9b41f-205c-405e-8e08-3d16e88e02be_59eb965c-9150-42b7-a0ec-22151b9897c5_KBN%f%8V-HFG%f%Q4-MG%f%XVD-347P%f%6-PD%f%QGT_IoTEnterpriseS | ||
| - | 138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX_Professional | ||
| - | 139_ProfessionalCountrySpecific____f7af7d09-40e4-419c-a49b-eae366689ebd_2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX_Professional | ||
| - | 139_ProfessionalCountrySpecific-Zn_01eb852c-424d-4060-94b8-c10d799d7364_2de67392-b7a7-462a-b1ca-108dd189f588_W26%f%9N-WFG%f%WX-YV%f%C9B-4J6C%f%9-T8%f%3GX_Professional | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | echo " | ||
| - | echo " | ||
| - | set altkey=%%E | ||
| - | set altedition=%%F | ||
| - | ) || ( | ||
| - | set altedition=%%F | ||
| - | set notfoundaltactID=1 | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Online KMS Activation %masver% | ||
| - | |||
| - | :: You are not supposed to edit anything below this. | ||
| - | |||
| - | set WMI_VBS=0 | ||
| - | set _Debug=0 | ||
| - | set Silent=0 | ||
| - | set Logger=0 | ||
| - | set AutoR2V=1 | ||
| - | set SkipKMS38=1 | ||
| - | set vNextOverride=1 | ||
| - | set ActWindows=1 | ||
| - | set ActOffice=1 | ||
| - | |||
| - | set _uni= | ||
| - | set _args= | ||
| - | set _elev= | ||
| - | set _renetask= | ||
| - | set _renacttask= | ||
| - | set _unattended= | ||
| - | set _unattendedact= | ||
| - | |||
| - | set _args=%* | ||
| - | if defined _args set _args=%_args:" | ||
| - | if defined _args ( | ||
| - | echo " | ||
| - | |||
| - | for %%A in (%_args%) do ( | ||
| - | if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) else if /i " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | call :_colorprep | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if %_Debug% EQU 1 set _unattended=1 | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %~z0 GEQ 300000 (set " | ||
| - | |||
| - | :: Check not x86 Windows | ||
| - | |||
| - | set notx86= | ||
| - | for /f " | ||
| - | if /i not " | ||
| - | |||
| - | :: | ||
| - | |||
| - | for %%# in (wmic.exe) do @if " | ||
| - | %nceline% | ||
| - | echo Unable to find wmic.exe in the system. | ||
| - | if %winbuild% GEQ 22621 echo Make sure WMIC is enabled in optional features. | ||
| - | goto Done | ||
| - | ) | ||
| - | |||
| - | wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i " | ||
| - | %nceline% | ||
| - | echo WMI is not responding in the system. | ||
| - | echo: | ||
| - | echo In MAS, Goto Troubleshoot and run Fix WMI option. | ||
| - | goto Done | ||
| - | ) | ||
| - | |||
| - | set _WSH=1 | ||
| - | reg query " | ||
| - | reg query " | ||
| - | |||
| - | if %_WSH% EQU 0 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | if defined notx86 reg add " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | if defined _uni goto _Complete_Uninstall | ||
| - | |||
| - | if defined _renetask set ActTask=& | ||
| - | cls | ||
| - | if defined _renacttask set ActTask=1& | ||
| - | cls | ||
| - | if defined _unattended if not defined _unattendedact goto Done | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set _gui= | ||
| - | |||
| - | :_KMS_Menu | ||
| - | |||
| - | set sub_next=0 | ||
| - | set sub_o365=0 | ||
| - | set sub_proj=0 | ||
| - | set sub_vsio=0 | ||
| - | set kNext=HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext | ||
| - | reg query %kNext% /v MigrationToV5Done 2>nul | find /i " | ||
| - | |||
| - | set _tskinstalled= | ||
| - | reg query " | ||
| - | find /i " | ||
| - | ) | ||
| - | |||
| - | set _oldtsk= | ||
| - | if not defined _tskinstalled ( | ||
| - | reg query " | ||
| - | set _oldtsk=1 | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined _unattended ( | ||
| - | call : | ||
| - | timeout /t 2 | ||
| - | goto Done | ||
| - | ) | ||
| - | |||
| - | cls | ||
| - | set _gui=1 | ||
| - | title %_title% | ||
| - | mode con: cols=76 lines=30 | ||
| - | |||
| - | echo. | ||
| - | echo. | ||
| - | echo. | ||
| - | echo. | ||
| - | echo. | ||
| - | echo. | ||
| - | echo. [1] Activate - Windows | ||
| - | echo. [2] Activate - Office | ||
| - | echo. [3] Activate - All | ||
| - | echo. | ||
| - | if defined _tskinstalled call :_color2 %_White% " | ||
| - | if defined _oldtsk | ||
| - | if not defined _tskinstalled if not defined _oldtsk echo. [4] Install Auto-Renewal | ||
| - | echo. [5] Uninstall | ||
| - | echo. _______________________________________________ | ||
| - | echo. | ||
| - | if %_Debug%==0 ( | ||
| - | echo. [6] Enable Debug Mode [No] | ||
| - | ) else ( | ||
| - | call :_color2 %_White% " | ||
| - | ) | ||
| - | if %vNextOverride% EQU 1 ( | ||
| - | if %sub_next% EQU 1 ( | ||
| - | call :_color2 %_White% " | ||
| - | ) else ( | ||
| - | echo [7] Override Office vNext [Yes] | ||
| - | ) | ||
| - | ) else ( | ||
| - | if %sub_next% EQU 1 ( | ||
| - | call :_color2 %_White% " | ||
| - | ) else ( | ||
| - | echo [7] Override Office vNext [No] | ||
| - | ) | ||
| - | ) | ||
| - | echo. _______________________________________________ | ||
| - | echo. | ||
| - | echo. [0] %_exitmsg% | ||
| - | echo. | ||
| - | echo. | ||
| - | call :_color2 %_White% " | ||
| - | choice /C:12345670 /N | ||
| - | set _el=%errorlevel% | ||
| - | |||
| - | if %_el%==8 exit /b | ||
| - | if %_el%==7 (if %vNextOverride% EQU 0 (set vNextOverride=1) else (set vNextOverride=0))& | ||
| - | if %_el%==6 (if %_Debug%==0 (set _Debug=1) else (set _Debug=0)) &goto _KMS_Menu | ||
| - | if %_el%==5 call: | ||
| - | if %_el%==4 set ActTask=& | ||
| - | if %_el%==3 cls& | ||
| - | if %_el%==2 cls& | ||
| - | if %_el%==1 cls& | ||
| - | goto _KMS_Menu | ||
| - | |||
| - | :: | ||
| - | |||
| - | :Done | ||
| - | |||
| - | if defined _unattended exit /b | ||
| - | |||
| - | echo. | ||
| - | echo Press any key to exit... | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | @setlocal DisableDelayedExpansion | ||
| - | |||
| - | set nil= | ||
| - | for %%# in (SppE%nil%xtComObj.exe, | ||
| - | reg delete " | ||
| - | ) | ||
| - | |||
| - | call : | ||
| - | |||
| - | set " | ||
| - | set KMS_Port=1688 | ||
| - | if %_Debug% EQU 1 set _unattended=1 | ||
| - | set " | ||
| - | if %Logger% EQU 1 set _run=" | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | set " | ||
| - | set " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if /i " | ||
| - | if not defined xBit set " | ||
| - | |||
| - | set _cwmi=0 | ||
| - | for %%# in (wmic.exe) do @if not " | ||
| - | wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if " | ||
| - | set _UNC=0 | ||
| - | if " | ||
| - | set _UNC=1 | ||
| - | ) else ( | ||
| - | net use %~d0 %_Null% | ||
| - | if not errorlevel 1 set _UNC=1 | ||
| - | ) | ||
| - | for /f " | ||
| - | if exist " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set DO15Ids=ProPlus, | ||
| - | set DO16Ids=ProPlus, | ||
| - | set LV16Ids=Mondo, | ||
| - | set LR16Ids=%LV16Ids%, | ||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | ) | ||
| - | for /f " | ||
| - | set UBR=0 | ||
| - | if %winbuild% GEQ 7601 for /f " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %_cwmi% EQU 0 set WMI_VBS=1 | ||
| - | if %WMI_VBS% EQU 0 ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | pushd " | ||
| - | |||
| - | if not defined _unattended ( | ||
| - | mode con cols=98 lines=31 | ||
| - | %psc% "& | ||
| - | title %_title% | ||
| - | ) else ( | ||
| - | title Online KMS Activation %masver% | ||
| - | ) | ||
| - | |||
| - | if defined _gui if %_Debug%==1 mode con cols=98 lines=30 | ||
| - | |||
| - | if %_Debug% EQU 0 ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %Silent% EQU 0 (call :Begin) else (call :Begin >!_run! 2>& | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %Silent% EQU 0 ( | ||
| - | echo. | ||
| - | echo Running in Debug Mode... | ||
| - | if not defined _args (echo The window will be closed when finished) else (echo please wait...) | ||
| - | echo. | ||
| - | echo Writing debug log to: | ||
| - | echo " | ||
| - | ) | ||
| - | @echo on | ||
| - | @prompt $G | ||
| - | @call :Begin >" | ||
| - | ) | ||
| - | @echo off | ||
| - | if defined _gui if %_Debug%==1 ( | ||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | ) | ||
| - | @exit /b | ||
| - | |||
| - | :Begin | ||
| - | |||
| - | :: | ||
| - | |||
| - | set act_failed=0 | ||
| - | set /a act_attempt=0 | ||
| - | |||
| - | echo. | ||
| - | echo Initializing... | ||
| - | |||
| - | :: Check Internet connection. Works even if ICMP echo is disabled. | ||
| - | |||
| - | call :setserv | ||
| - | for %%a in (%srvlist%) do ( | ||
| - | for /f " | ||
| - | if not [%%#]==[] goto IntConnected | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | nslookup dns.msftncsi.com 2>nul | find " | ||
| - | if [%errorlevel%]==[0] goto IntConnected | ||
| - | |||
| - | cls | ||
| - | if %_Debug%==1 ( | ||
| - | echo Error: Internet is not connected. | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if defined _unattended ( | ||
| - | echo. | ||
| - | call :_color %_Red% " | ||
| - | ) else ( | ||
| - | %eline% | ||
| - | echo Internet is not connected. | ||
| - | echo: | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | : | ||
| - | |||
| - | call :getserv | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set SSppHook=0 | ||
| - | for /f %%A in ('dir /b /ad %SysPath%\spp\tokens\skus' | ||
| - | if %winbuild% GEQ 9200 if exist " | ||
| - | if %winbuild% LSS 9200 if exist " | ||
| - | if %winbuild% LSS 9200 if exist " | ||
| - | ) | ||
| - | set OsppHook=1 | ||
| - | sc query osppsvc %_Nul3% | ||
| - | if %errorlevel% EQU 1060 set OsppHook=0 | ||
| - | |||
| - | set ESU_KMS=0 | ||
| - | if %winbuild% LSS 9200 for /f %%A in ('dir /b /ad %SysPath%\spp\tokens\channels' | ||
| - | if exist " | ||
| - | ) | ||
| - | if %ESU_KMS% EQU 1 (set " | ||
| - | set ESU_EDT=0 | ||
| - | if %ESU_KMS% EQU 1 for %%A in (%ESUEditions%) do ( | ||
| - | if exist " | ||
| - | ) | ||
| - | :: if %ESU_EDT% EQU 1 set SSppHook=1 | ||
| - | set ESU_ADD=0 | ||
| - | |||
| - | if %winbuild% GEQ 9200 ( | ||
| - | set OSType=Win8 | ||
| - | set SppVer=SppExtComObj.exe | ||
| - | ) else if %winbuild% GEQ 7600 ( | ||
| - | set OSType=Win7 | ||
| - | set SppVer=sppsvc.exe | ||
| - | ) else ( | ||
| - | goto : | ||
| - | ) | ||
| - | if %OSType% EQU Win8 reg query " | ||
| - | reg delete " | ||
| - | call : | ||
| - | ) | ||
| - | |||
| - | if %ActWindows% EQU 0 if %ActOffice% EQU 0 set ActWindows=1 | ||
| - | set _AUR=1 | ||
| - | if %winbuild% GEQ 9600 ( | ||
| - | reg add " | ||
| - | if %winbuild% EQU 14393 reg add " | ||
| - | ) | ||
| - | call : | ||
| - | if %OsppHook% NEQ 0 call : | ||
| - | |||
| - | :ReturnHook | ||
| - | call : | ||
| - | |||
| - | SET Win10Gov=0 | ||
| - | SET " | ||
| - | SET " | ||
| - | IF %winbuild% LSS 14393 if %SSppHook% NEQ 0 GOTO :Main | ||
| - | SET " | ||
| - | SET " | ||
| - | SET " | ||
| - | FOR /F " | ||
| - | REG QUERY " | ||
| - | FOR /F " | ||
| - | ) | ||
| - | ) | ||
| - | IF /I " | ||
| - | SET " | ||
| - | ) ELSE ( | ||
| - | FOR /F " | ||
| - | ) | ||
| - | net start sppsvc /y %_Nul3% | ||
| - | set " | ||
| - | FOR /F " | ||
| - | IF " | ||
| - | IF %winbuild% GEQ 17063 FOR /F " | ||
| - | IF %winbuild% LSS 14393 ( | ||
| - | FOR /F " | ||
| - | GOTO :Main | ||
| - | ) | ||
| - | ) | ||
| - | IF NOT " | ||
| - | IF /I " | ||
| - | IF /I " | ||
| - | SET " | ||
| - | IF %winbuild% GEQ 19041 IF %UBR% GEQ 2788 SET " | ||
| - | ) | ||
| - | IF /I " | ||
| - | IF /I " | ||
| - | IF /I " | ||
| - | IF /I " | ||
| - | |||
| - | :Main | ||
| - | if defined EditionID (set " | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | set " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath %_Nul3% && for /f " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds %_Nul3% && set " | ||
| - | ) | ||
| - | if not defined _C16R reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath %_Nul3% && for /f " | ||
| - | reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds %_Nul3% && set " | ||
| - | ) | ||
| - | set " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath %_Nul3% && for /f " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration /v ProductReleaseIds %_Nul3% && call set " | ||
| - | if not defined _C15R reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid %_Nul3% && call set " | ||
| - | ) | ||
| - | set " | ||
| - | if %_wow%==0 (reg query HKLM\SOFTWARE\Microsoft\Office\14.0\CVH /f Click2run /k %_Nul3% && set " | ||
| - | for %%A in (14, | ||
| - | if %_O14MSI% EQU 1 set " | ||
| - | |||
| - | set S_OK=1 | ||
| - | call :RunSPP | ||
| - | if %ActOffice% NEQ 0 call :RunOSPP | ||
| - | if %ActOffice% EQU 0 (echo.& | ||
| - | |||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | call : | ||
| - | if %OsppHook% NEQ 0 call : | ||
| - | |||
| - | sc start sppsvc trigger=timer; | ||
| - | |||
| - | goto TheEnd | ||
| - | |||
| - | :RunSPP | ||
| - | set spp=SoftwareLicensingProduct | ||
| - | set sps=SoftwareLicensingService | ||
| - | set W1nd0ws=1 | ||
| - | set WinPerm=0 | ||
| - | set WinVL=0 | ||
| - | set Off1ce=0 | ||
| - | set RanR2V=0 | ||
| - | set aC2R21=0 | ||
| - | set aC2R19=0 | ||
| - | set aC2R16=0 | ||
| - | set aC2R15=0 | ||
| - | if %winbuild% GEQ 9200 if %ActOffice% NEQ 0 call :sppoff | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i Windows %_Nul1% && (set WinVL=1) | ||
| - | if %WinVL% EQU 0 ( | ||
| - | if %ActWindows% EQU 0 ( | ||
| - | echo.& | ||
| - | ) else ( | ||
| - | if %SSppHook% EQU 0 ( | ||
| - | echo.& | ||
| - | if defined _eval echo %nEval% | ||
| - | ) else ( | ||
| - | echo.& | ||
| - | exit /b | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | if %WinVL% EQU 0 if %Off1ce% EQU 0 exit /b | ||
| - | set _gvlk=0 | ||
| - | set " | ||
| - | if %winbuild% GEQ 10240 %_qr% %_Nul2% | findstr /i Windows %_Nul1% && (set _gvlk=1) | ||
| - | set gpr=0 | ||
| - | set " | ||
| - | if %winbuild% GEQ 10240 if %SkipKMS38% NEQ 0 if %_gvlk% EQU 1 for /f " | ||
| - | set " | ||
| - | if %gpr% NEQ 0 if %gpr% GTR 259200 ( | ||
| - | set W1nd0ws=0 | ||
| - | %_qr% %_Nul2% | findstr /i EnterpriseG %_Nul1% && (call set W1nd0ws=1) | ||
| - | ) | ||
| - | set " | ||
| - | for /f " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if not %xOS%==x86 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | ) | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | ) | ||
| - | set " | ||
| - | if %W1nd0ws% EQU 0 for /f " | ||
| - | set " | ||
| - | if %W1nd0ws% EQU 1 if %ActWindows% NEQ 0 for /f " | ||
| - | :: set " | ||
| - | :: if %ESU_EDT% EQU 1 if %ActWindows% NEQ 0 for /f " | ||
| - | if %W1nd0ws% EQU 1 if %ActWindows% EQU 0 (echo.& | ||
| - | set " | ||
| - | if %Off1ce% EQU 1 if %ActOffice% NEQ 0 for /f " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | exit /b | ||
| - | |||
| - | :sppoff | ||
| - | set OffUWP=0 | ||
| - | if %winbuild% GEQ 10240 reg query " | ||
| - | dir /b " | ||
| - | if not %xOS%==x86 dir /b " | ||
| - | ) | ||
| - | rem nothing installed | ||
| - | if %loc_off21% EQU 0 if %loc_off19% EQU 0 if %loc_off16% EQU 0 if %loc_off15% EQU 0 ( | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if %OffUWP% EQU 0 (echo.& | ||
| - | exit /b | ||
| - | ) | ||
| - | if %winbuild% LSS 9200 (if %loc_off14% EQU 0 (echo.& | ||
| - | ) | ||
| - | if %vNextOverride% EQU 1 if %AutoR2V% EQU 1 ( | ||
| - | set sub_o365=0 | ||
| - | set sub_proj=0 | ||
| - | set sub_vsio=0 | ||
| - | if %sub_next% EQU 1 reg delete HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Licensing /f %_Nul3% | ||
| - | ) | ||
| - | set Off1ce=1 | ||
| - | set _sC2R=sppoff | ||
| - | set _fC2R=ReturnSPP | ||
| - | |||
| - | set vol_off14=0& | ||
| - | set " | ||
| - | %_qr% > " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | if %winbuild% LSS 9200 find /i " | ||
| - | for %%A in (14, | ||
| - | set " | ||
| - | if %vol_off16% EQU 1 find /i " | ||
| - | %_qr% %_Nul2% | find /i " | ||
| - | ) | ||
| - | set " | ||
| - | if %vol_off15% EQU 1 find /i " | ||
| - | %_qr% %_Nul2% | find /i " | ||
| - | ) | ||
| - | |||
| - | set ret_off14=0& | ||
| - | set " | ||
| - | %_qr% > " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | set " | ||
| - | if %winbuild% LSS 9200 if %vol_off14% EQU 0 %_qr% %_Nul2% | findstr /i channel %_Nul1% && (set ret_off14=1) | ||
| - | |||
| - | set run_off21=0& | ||
| - | if %loc_off21% EQU 1 if %ret_off21% EQU 1 if %_O16MSI% EQU 0 if %vol_off21% EQU 0 set run_off21=1 | ||
| - | if %loc_off21% EQU 1 if %ret_off21% EQU 1 if %_O16MSI% EQU 0 if %vol_off21% EQU 1 ( | ||
| - | for %%a in (%DO16Ids%) do find /i " | ||
| - | call set /a prr_off21+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (Professional) do find /i " | ||
| - | call set /a prr_off21+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | call set /a prr_off21+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_proj% EQU 0 for %%a in (ProjectPro, | ||
| - | call set /a prr_off21+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_vsio% EQU 0 for %%a in (VisioPro, | ||
| - | call set /a prr_off21+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %loc_off21% EQU 1 if %ret_off21% EQU 1 if %_O16MSI% EQU 0 if %vol_off21% EQU 1 if %prv_off21% LSS %prr_off21% (set vol_off21=0& | ||
| - | |||
| - | set run_off19=0& | ||
| - | if %loc_off19% EQU 1 if %ret_off19% EQU 1 if %_O16MSI% EQU 0 if %vol_off19% EQU 0 set run_off19=1 | ||
| - | if %loc_off19% EQU 1 if %ret_off19% EQU 1 if %_O16MSI% EQU 0 if %vol_off19% EQU 1 ( | ||
| - | for %%a in (%DO16Ids%) do find /i " | ||
| - | call set /a prr_off19+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (Professional) do find /i " | ||
| - | call set /a prr_off19+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | call set /a prr_off19+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_proj% EQU 0 for %%a in (ProjectPro, | ||
| - | call set /a prr_off19+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_vsio% EQU 0 for %%a in (VisioPro, | ||
| - | call set /a prr_off19+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %loc_off19% EQU 1 if %ret_off19% EQU 1 if %_O16MSI% EQU 0 if %vol_off19% EQU 1 if %prv_off19% LSS %prr_off19% (set vol_off19=0& | ||
| - | |||
| - | set run_off16=0& | ||
| - | if %loc_off16% EQU 1 if %ret_off16% EQU 1 if %_O16MSI% EQU 0 if defined _C16R ( | ||
| - | for %%a in (%DO16Ids%) do find /i " | ||
| - | call set /a prr_off16+=1 | ||
| - | if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i " | ||
| - | ) | ||
| - | for %%a in (Professional) do find /i " | ||
| - | call set /a prr_off16+=1 | ||
| - | if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i " | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | call set /a prr_off16+=1 | ||
| - | if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i " | ||
| - | ) | ||
| - | if %sub_proj% EQU 0 for %%a in (ProjectPro, | ||
| - | call set /a prr_off16+=1 | ||
| - | if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i " | ||
| - | ) | ||
| - | if %sub_vsio% EQU 0 for %%a in (VisioPro, | ||
| - | call set /a prr_off16+=1 | ||
| - | if %vol_off16% EQU 1 if %vol_off21% EQU 0 if %vol_off19% EQU 0 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off21% EQU 1 find /i " | ||
| - | if %vol_off16% EQU 0 if %vol_off19% EQU 1 find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %loc_off16% EQU 1 if %ret_off16% EQU 1 if %_O16MSI% EQU 0 if defined _C16R if %prv_off16% LSS %prr_off16% (set vol_off16=0& | ||
| - | set " | ||
| - | if %loc_off16% EQU 1 if %run_off16% EQU 0 if %sub_o365% EQU 0 if defined _C16R %_qr% %_Nul2% | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | |||
| - | set run_off15=0& | ||
| - | if %loc_off15% EQU 1 if %ret_off15% EQU 1 if %_O15MSI% EQU 0 if %vol_off15% EQU 0 if defined _C15R set run_off15=1 | ||
| - | if %loc_off15% EQU 1 if %ret_off15% EQU 1 if %_O15MSI% EQU 0 if %vol_off15% EQU 1 if defined _C15R ( | ||
| - | for %%a in (%DO15Ids%) do find /i " | ||
| - | call set /a prr_off15+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (Professional) do find /i " | ||
| - | call set /a prr_off15+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | call set /a prr_off15+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_proj% EQU 0 for %%a in (ProjectPro, | ||
| - | call set /a prr_off15+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | if %sub_vsio% EQU 0 for %%a in (VisioPro, | ||
| - | call set /a prr_off15+=1 | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %loc_off15% EQU 1 if %ret_off15% EQU 1 if %_O15MSI% EQU 0 if %vol_off15% EQU 1 if defined _C15R if %prv_off15% LSS %prr_off15% (set vol_off15=0& | ||
| - | set " | ||
| - | if %loc_off15% EQU 1 if %run_off15% EQU 0 if defined _C15R %_qr% %_Nul2% | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | |||
| - | set vol_offgl=1 | ||
| - | if %vol_off21% EQU 0 if %vol_off19% EQU 0 if %vol_off16% EQU 0 if %vol_off15% EQU 0 ( | ||
| - | if %winbuild% GEQ 9200 set vol_offgl=0 | ||
| - | if %winbuild% LSS 9200 if %vol_off14% EQU 0 set vol_offgl=0 | ||
| - | ) | ||
| - | rem mixed Volume + Retail | ||
| - | if %run_off21% EQU 1 if %AutoR2V% EQU 1 if %RanR2V% EQU 0 goto :C2RR2V | ||
| - | if %run_off19% EQU 1 if %AutoR2V% EQU 1 if %RanR2V% EQU 0 goto :C2RR2V | ||
| - | if %run_off16% EQU 1 if %AutoR2V% EQU 1 if %RanR2V% EQU 0 goto :C2RR2V | ||
| - | if %run_off15% EQU 1 if %AutoR2V% EQU 1 if %RanR2V% EQU 0 goto :C2RR2V | ||
| - | rem all supported Volume + message for unsupported | ||
| - | if %loc_off16% EQU 0 if %ret_off16% EQU 1 if %_O16MSI% EQU 0 if %OffUWP% EQU 1 (echo.& | ||
| - | if %vol_offgl% EQU 1 ( | ||
| - | if %ret_off16% EQU 1 if %_O16MSI% EQU 1 (echo.& | ||
| - | if %ret_off15% EQU 1 if %_O15MSI% EQU 1 (echo.& | ||
| - | if %winbuild% LSS 9200 if %loc_off14% EQU 1 if %vol_off14% EQU 0 (if defined _C14R (echo.& | ||
| - | exit /b | ||
| - | ) | ||
| - | set Off1ce=0 | ||
| - | rem Retail C2R | ||
| - | if %AutoR2V% EQU 1 if %RanR2V% EQU 0 goto :C2RR2V | ||
| - | :ReturnSPP | ||
| - | rem Retail MSI/C2R or failed C2R-R2V | ||
| - | if %loc_off21% EQU 1 if %vol_off21% EQU 0 ( | ||
| - | if %aC2R21% EQU 1 (echo.& | ||
| - | ) | ||
| - | if %loc_off19% EQU 1 if %vol_off19% EQU 0 ( | ||
| - | if %aC2R19% EQU 1 (echo.& | ||
| - | ) | ||
| - | if %loc_off16% EQU 1 if %vol_off16% EQU 0 ( | ||
| - | if defined _C16R (if %aC2R16% EQU 1 (echo.& | ||
| - | ) | ||
| - | if %loc_off15% EQU 1 if %vol_off15% EQU 0 ( | ||
| - | if defined _C15R (if %aC2R15% EQU 1 (echo.& | ||
| - | ) | ||
| - | if %winbuild% LSS 9200 if %loc_off14% EQU 1 if %vol_off14% EQU 0 ( | ||
| - | if defined _C14R (echo.& | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :sppchkoff | ||
| - | set " | ||
| - | %_qr% > " | ||
| - | if %winbuild% LSS 9200 find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | if %1 EQU 1 (set _officespp=1) else (set _officespp=0) | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i " | ||
| - | set " | ||
| - | for /f " | ||
| - | call : | ||
| - | exit /b | ||
| - | |||
| - | :sppchkwin | ||
| - | set _officespp=0 | ||
| - | set " | ||
| - | if %winbuild% GEQ 14393 if %WinPerm% EQU 0 if %_gvlk% EQU 0 %_qr% %_Nul2% | findstr /i Windows %_Nul1% && (set _gvlk=1) | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i " | ||
| - | if %winbuild% GEQ 14393 if %_gvlk% EQU 1 exit /b | ||
| - | if %WinPerm% EQU 1 exit /b | ||
| - | if %winbuild% LSS 10240 (call : | ||
| - | for %%A in ( | ||
| - | b71515d9-89a2-4c60-88c8-656fbcca7f3a, | ||
| - | 11a37f09-fb7f-4002-bd84-f3ae71d11e90, | ||
| - | 6ae51eeb-c268-4a21-9aae-df74c38b586d, | ||
| - | 4dfd543d-caa6-4f69-a95f-5ddfe2b89567, | ||
| - | 2cc171ef-db48-4adc-af09-7c574b37f139, | ||
| - | ) do ( | ||
| - | if /i ' | ||
| - | ) | ||
| - | if not defined EditionID (call : | ||
| - | if %winbuild% LSS 14393 (call : | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% | findstr /i " | ||
| - | ) | ||
| - | call :winchk | ||
| - | exit /b | ||
| - | |||
| - | :winchk | ||
| - | if not defined tok (if %winbuild% GEQ 9200 (set " | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i " | ||
| - | echo. | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i " | ||
| - | set WinPerm=1 | ||
| - | ) | ||
| - | set WinOEM=0 | ||
| - | set " | ||
| - | if %WinPerm% EQU 0 %_qr% %_Nul2% | findstr /i " | ||
| - | set " | ||
| - | if %WinOEM% EQU 1 ( | ||
| - | for /f " | ||
| - | for %%A in (VOLUME_MAK, | ||
| - | ) | ||
| - | if %WinPerm% EQU 0 ( | ||
| - | copy /y %SysPath%\slmgr.vbs " | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | set " | ||
| - | if %WinPerm% EQU 1 ( | ||
| - | for /f " | ||
| - | echo Product is Permanently Activated. | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :esuchk | ||
| - | set _officespp=0 | ||
| - | set ESU_ADD=1 | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | if /i " | ||
| - | %_qr% %_Nul2% | findstr " | ||
| - | ) | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i " | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :RunOSPP | ||
| - | set spp=OfficeSoftwareProtectionProduct | ||
| - | set sps=OfficeSoftwareProtectionService | ||
| - | set Off1ce=0 | ||
| - | set RanR2V=0 | ||
| - | set aC2R21=0 | ||
| - | set aC2R19=0 | ||
| - | set aC2R16=0 | ||
| - | set aC2R15=0 | ||
| - | if %winbuild% LSS 9200 (set " | ||
| - | if %OsppHook% EQU 0 (echo.& | ||
| - | if %winbuild% GEQ 9200 if %loc_off14% EQU 0 (echo.& | ||
| - | set err_offsvc=0 | ||
| - | net start osppsvc /y %_Nul3% || ( | ||
| - | sc start osppsvc %_Nul3% | ||
| - | if !errorlevel! EQU 1053 set err_offsvc=1 | ||
| - | ) | ||
| - | if %err_offsvc% EQU 1 (echo.& | ||
| - | if %winbuild% GEQ 9200 call :oppoff | ||
| - | if %winbuild% LSS 9200 call :sppoff | ||
| - | if %Off1ce% EQU 0 exit /b | ||
| - | set " | ||
| - | set " | ||
| - | if %loc_off14% EQU 1 for /f " | ||
| - | set " | ||
| - | if %loc_off14% EQU 1 for /f " | ||
| - | set " | ||
| - | for /f " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | set " | ||
| - | for /f " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | exit /b | ||
| - | |||
| - | :oppoff | ||
| - | set " | ||
| - | %_qr% %_Nul2% | findstr /i KMSCLIENT %_Nul1% && ( | ||
| - | set Off1ce=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | set ret_off14=0 | ||
| - | %_qr% %_Nul2% | findstr /i channel %_Nul1% && (set ret_off14=1) | ||
| - | if defined _C14R (echo.& | ||
| - | exit /b | ||
| - | |||
| - | :offchk | ||
| - | set ls=0 | ||
| - | set ls2=0 | ||
| - | set ls3=0 | ||
| - | set " | ||
| - | for /f " | ||
| - | set " | ||
| - | if /i not " | ||
| - | set " | ||
| - | if /i not " | ||
| - | if " | ||
| - | echo Checking: %~6 | ||
| - | echo Product is Permanently Activated. | ||
| - | exit /b | ||
| - | ) | ||
| - | if " | ||
| - | echo Checking: %~4 | ||
| - | echo Product is Permanently Activated. | ||
| - | exit /b | ||
| - | ) | ||
| - | if " | ||
| - | echo Checking: %~2 | ||
| - | echo Product is Permanently Activated. | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :offchk21 | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :offchk19 | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :offchk16 | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :offchk15 | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :offchk14 | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if defined vPrem exit /b | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | if defined vProf exit /b | ||
| - | if /i ' | ||
| - | call :offchk " | ||
| - | exit /b | ||
| - | ) | ||
| - | call :insKey | ||
| - | exit /b | ||
| - | |||
| - | :officeLoc | ||
| - | set loc_off%1=0 | ||
| - | set _O%1MSI=0 | ||
| - | if %1 EQU 19 ( | ||
| - | if defined _C16R reg query %_C16R% /v ProductReleaseIds %_Nul2% | findstr 2019 %_Nul1% && set loc_off%1=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | if %1 EQU 21 ( | ||
| - | if defined _C16R reg query %_C16R% /v ProductReleaseIds %_Nul2% | findstr 2021 %_Nul1% && set loc_off%1=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | for /f " | ||
| - | set loc_off%1=1 | ||
| - | set _O%1MSI=1 | ||
| - | ) | ||
| - | for /f " | ||
| - | set loc_off%1=1 | ||
| - | set _O%1MSI=1 | ||
| - | ) | ||
| - | |||
| - | if %1 EQU 16 if defined _C16R ( | ||
| - | for /f " | ||
| - | for %%a in (%LV16Ids%, | ||
| - | findstr /I / | ||
| - | ) | ||
| - | for %%a in (%LR16Ids%) do ( | ||
| - | findstr /I / | ||
| - | ) | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if %1 EQU 15 if defined _C15R ( | ||
| - | set loc_off%1=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | if not %xOS%==x86 if exist " | ||
| - | if not %xOS%==x86 if exist " | ||
| - | exit /b | ||
| - | |||
| - | :officeSub | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | reg query %kNext% | findstr /i /r " | ||
| - | if %sub_o365% EQU 1 set sub_next=1 | ||
| - | if %sub_proj% EQU 1 set sub_next=1 | ||
| - | if %sub_vsio% EQU 1 set sub_next=1 | ||
| - | exit /b | ||
| - | |||
| - | :insKey | ||
| - | set S_OK=1 | ||
| - | echo. | ||
| - | set " | ||
| - | set " | ||
| - | if %ESU_ADD% EQU 0 for /f " | ||
| - | if %ESU_ADD% EQU 1 for /f " | ||
| - | set ESU_ADD=0 | ||
| - | call :keys %app% | ||
| - | if " | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | %_qr% %_Nul3% | ||
| - | set ERRORCODE=%ERRORLEVEL% | ||
| - | if %ERRORCODE% NEQ 0 ( | ||
| - | cmd /c exit /b %ERRORCODE% | ||
| - | echo Failed: 0x!=ExitCode! | ||
| - | set S_OK=0 | ||
| - | exit /b | ||
| - | ) | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | if %sps% EQU SoftwareLicensingService %_qr% %_Nul3% | ||
| - | |||
| - | :activate | ||
| - | set S_OK=1 | ||
| - | if %sps% EQU SoftwareLicensingService ( | ||
| - | if %_officespp% EQU 0 (reg delete " | ||
| - | ) else ( | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | ) | ||
| - | set " | ||
| - | if %W1nd0ws% EQU 0 if %_officespp% EQU 0 if %sps% EQU SoftwareLicensingService ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | for /f " | ||
| - | echo Product is KMS 2038 Activated. | ||
| - | set _keepkms38=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | set " | ||
| - | if %act_attempt% LSS 1 ( | ||
| - | if %ESU_ADD% EQU 0 for /f " | ||
| - | if %ESU_ADD% EQU 1 for /f " | ||
| - | ) | ||
| - | |||
| - | set ESU_ADD=0 | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | %_qr% %_Nul3% | ||
| - | call set ERRORCODE=%ERRORLEVEL% | ||
| - | if %act_attempt% LSS 1 if %ERRORCODE% EQU -1073418187 ( | ||
| - | echo Product Activation Failed: 0xC004F035 | ||
| - | if %OSType% EQU Win7 echo Windows 7 cannot be KMS-activated on this computer due to unqualified OEM BIOS. | ||
| - | echo See Read Me for details. | ||
| - | exit /b | ||
| - | ) | ||
| - | if %act_attempt% LSS 1 if %ERRORCODE% EQU -1073417728 ( | ||
| - | echo Product Activation Failed: 0xC004F200 | ||
| - | echo Windows needs to rebuild the activation-related files. | ||
| - | echo See KB2736303 for details. | ||
| - | exit /b | ||
| - | ) | ||
| - | if %act_attempt% LSS 1 if %ERRORCODE% EQU -1073422315 ( | ||
| - | echo Product Activation Failed: 0xC004E015 | ||
| - | echo Running slmgr.vbs /rilc to mitigate. | ||
| - | cscript //Nologo //B %SysPath%\slmgr.vbs /rilc | ||
| - | ) | ||
| - | set gpr=0 | ||
| - | set gpr2=0 | ||
| - | set " | ||
| - | for /f " | ||
| - | if %act_attempt% LSS 1 if %ERRORCODE% EQU 0 if %gpr% EQU 0 ( | ||
| - | echo Product Activation succeeded, but Remaining Period failed to increase. | ||
| - | if %OSType% EQU Win7 echo This could be related to the error described in KB4487266 | ||
| - | exit /b | ||
| - | ) | ||
| - | set Act_OK=0 | ||
| - | if %gpr% EQU 43200 if %_officespp% EQU 0 if %winbuild% GEQ 9200 set Act_OK=1 | ||
| - | if %gpr% EQU 64800 set Act_OK=1 | ||
| - | if %gpr% GTR 259200 if %Win10Gov% EQU 1 set Act_OK=1 | ||
| - | if %gpr% EQU 259200 set Act_OK=1 | ||
| - | |||
| - | if %ERRORCODE% EQU 0 if %Act_OK% EQU 1 ( | ||
| - | call :_color %_Green% " | ||
| - | echo Remaining Period: %gpr2% days ^(%gpr% minutes^) | ||
| - | set /a act_attempt=0 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if not !server_num! gtr %max_servers% ( | ||
| - | if %act_attempt% LSS 3 ( | ||
| - | set /a act_attempt+=1 | ||
| - | call :getserv | ||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | %nul% reg add " | ||
| - | if defined notx86 ( | ||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | ) | ||
| - | ) | ||
| - | goto :activate | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | cmd /c exit /b %ERRORCODE% | ||
| - | if %ERRORCODE% NEQ 0 ( | ||
| - | call :_color %_Red% " | ||
| - | ) else ( | ||
| - | call :_color %_Red% " | ||
| - | ) | ||
| - | echo Remaining Period: %gpr2% days ^(%gpr% minutes^) | ||
| - | set S_OK=0 | ||
| - | set act_failed=1 | ||
| - | set /a act_attempt=0 | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | sc query %1 | find /i " | ||
| - | sc query %1 | find /i " | ||
| - | goto :eof | ||
| - | |||
| - | : | ||
| - | if /i %1 EQU osppsvc.exe ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | ) | ||
| - | goto :eof | ||
| - | |||
| - | :CheckFR | ||
| - | |||
| - | set WMIe=0 | ||
| - | call :CheckWS | ||
| - | if %WMIe% EQU 1 ( | ||
| - | echo. | ||
| - | echo %_err% | ||
| - | echo Failed running WMI query check. | ||
| - | ) | ||
| - | goto :eof | ||
| - | |||
| - | :CheckWS | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | %_qrs% %_Nul2% | findstr /r " | ||
| - | set WMIe=1 | ||
| - | %_qrw% %_Nul2% | find /i " | ||
| - | echo Error: SPP is not responding | ||
| - | ) || ( | ||
| - | echo Error: WMI ^& SPP are not responding | ||
| - | ) | ||
| - | ) | ||
| - | goto :eof | ||
| - | |||
| - | :C2RR2V | ||
| - | set RanR2V=1 | ||
| - | set " | ||
| - | if %_Debug% EQU 0 ( | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | ) | ||
| - | set _LTSC=0 | ||
| - | set " | ||
| - | sc query ClickToRunSvc %_Nul3% | ||
| - | set error1=%errorlevel% | ||
| - | sc query OfficeSvc %_Nul3% | ||
| - | set error2=%errorlevel% | ||
| - | if %error1% EQU 1060 if %error2% EQU 1060 ( | ||
| - | echo Error: Office C2R service is not detected | ||
| - | goto :%_fC2R% | ||
| - | ) | ||
| - | set _Office16=0 | ||
| - | for /f " | ||
| - | set _Office16=1 | ||
| - | ) | ||
| - | for /f " | ||
| - | set _Office16=1 | ||
| - | ) | ||
| - | set _Office15=0 | ||
| - | for /f " | ||
| - | set _Office15=1 | ||
| - | ) | ||
| - | for /f " | ||
| - | set _Office15=1 | ||
| - | ) | ||
| - | if %_Office16% EQU 0 if %_Office15% EQU 0 ( | ||
| - | echo Error: Office C2R InstallPath is not detected | ||
| - | goto :%_fC2R% | ||
| - | ) | ||
| - | |||
| - | :Reg16istry | ||
| - | if %_Office16% EQU 0 goto :Reg15istry | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | for /f " | ||
| - | if not " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | set " | ||
| - | set " | ||
| - | for /f " | ||
| - | if " | ||
| - | if %_Office15% EQU 0 (echo Error: Office C2R ProductIDs are not detected& | ||
| - | ) | ||
| - | if not exist " | ||
| - | if %_Office15% EQU 0 (echo Error: Office C2R Licenses files are not detected& | ||
| - | ) | ||
| - | if not exist " | ||
| - | if %_Office15% EQU 0 (echo Error: Office C2R Licenses Integrator is not detected& | ||
| - | ) | ||
| - | if exist " | ||
| - | if exist " | ||
| - | if %winbuild% LSS 10240 if !_LTSC! EQU 1 (set " | ||
| - | if %_Office15% EQU 0 goto :CheckC2R | ||
| - | |||
| - | :Reg15istry | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | for /f " | ||
| - | if not " | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | for /f " | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | set " | ||
| - | if " | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid %_Nul3% && ( | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid %_Nul3% && ( | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | ) | ||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) | ||
| - | if " | ||
| - | if %_Office16% EQU 0 (echo Error: Office 2013 C2R ProductIDs are not detected& | ||
| - | ) | ||
| - | if not exist " | ||
| - | if %_Office16% EQU 0 (echo Error: Office 2013 C2R Licenses files are not detected& | ||
| - | ) | ||
| - | if %winbuild% LSS 9200 if not exist " | ||
| - | if %_Office16% EQU 0 (echo Error: Office 2013 C2R Licensing tool OSPP.vbs is not detected& | ||
| - | ) | ||
| - | |||
| - | :CheckC2R | ||
| - | set _OMSI=0 | ||
| - | if %_Office16% EQU 0 ( | ||
| - | for /f " | ||
| - | for /f " | ||
| - | ) | ||
| - | if %_Office15% EQU 0 ( | ||
| - | for /f " | ||
| - | for /f " | ||
| - | ) | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | set _spp=SoftwareLicensingProduct | ||
| - | set _sps=SoftwareLicensingService | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set _spp=OfficeSoftwareProtectionProduct | ||
| - | set _sps=OfficeSoftwareProtectionService | ||
| - | set _vbsi=" | ||
| - | set _vbsf=" | ||
| - | ) | ||
| - | set " | ||
| - | set " | ||
| - | for /f " | ||
| - | if " | ||
| - | echo Error: %_sps% WMI version is not detected | ||
| - | call :CheckWS | ||
| - | goto :%_fC2R% | ||
| - | ) | ||
| - | set _Retail=0 | ||
| - | set " | ||
| - | if %WMI_VBS% EQU 0 wmic path %_spp% where (%_ocq%) get Description %_Nul2% |findstr /V /R " | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 %_qr% %_Nul2% >" | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | set rancopp=0 | ||
| - | if %_Retail% EQU 0 if %_OMSI% EQU 0 ( | ||
| - | set rancopp=1 | ||
| - | %_Nul3% powershell " | ||
| - | ) | ||
| - | set _O16O365=0 | ||
| - | set _C16Msg=0 | ||
| - | set _C15Msg=0 | ||
| - | set " | ||
| - | if %_Retail% EQU 1 if %WMI_VBS% EQU 0 wmic path %_spp% where (%_ocq%) get LicenseFamily %_Nul2% |findstr /V /R " | ||
| - | if %_Retail% EQU 1 if %WMI_VBS% NEQ 0 %_qr% %_Nul2% >" | ||
| - | set " | ||
| - | if %WMI_VBS% EQU 0 wmic path %_spp% where " | ||
| - | if %WMI_VBS% NEQ 0 %_qr% %_Nul2% >" | ||
| - | |||
| - | if %_Office16% EQU 0 goto :R15V | ||
| - | |||
| - | set _O21Ids=ProPlus2021, | ||
| - | set _O19Ids=ProPlus2019, | ||
| - | set _O16Ids=ProjectPro, | ||
| - | set _A21Ids=Excel2021, | ||
| - | set _A19Ids=Excel2019, | ||
| - | set _A16Ids=Excel, | ||
| - | set _V21Ids=%_O21Ids%, | ||
| - | set _V19Ids=%_O19Ids%, | ||
| - | set _V16Ids=Mondo, | ||
| - | set _R16Ids=%_V16Ids%, | ||
| - | set _RetIds=%_V21Ids%, | ||
| - | set _Suites=Mondo, | ||
| - | set _PrjSKU=ProjectPro, | ||
| - | set _VisSKU=VisioPro, | ||
| - | |||
| - | echo %_ProductIds%>" | ||
| - | for %%a in (%_RetIds%, | ||
| - | set _%%a=0 | ||
| - | ) | ||
| - | for %%a in (%_RetIds%) do ( | ||
| - | findstr /I / | ||
| - | ) | ||
| - | if !_LTSC! EQU 0 for %%a in (%_V21Ids%) do ( | ||
| - | set _%%a=0 | ||
| - | ) | ||
| - | if !_LTSC! EQU 1 for %%a in (%_V21Ids%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_V19Ids%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_V16Ids%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | reg query %_PRIDs%\ProPlusRetail.16 %_Nul3% && ( | ||
| - | find /i " | ||
| - | ) | ||
| - | reg query %_PRIDs%\ProPlusVolume.16 %_Nul3% && ( | ||
| - | find /i " | ||
| - | ) | ||
| - | if %_Retail% EQU 1 for %%a in (%_RetIds%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %_Retail% EQU 1 reg query %_PRIDs%\ProPlusRetail.16 %_Nul3% && ( | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | set " | ||
| - | find /i " | ||
| - | %_qr% %_Nul2% | find /i " | ||
| - | for %%a in (O365ProPlus, | ||
| - | ) | ||
| - | ) | ||
| - | if %sub_o365% EQU 1 ( | ||
| - | for %%a in (%_Suites%) do set _%%a=0 | ||
| - | echo. | ||
| - | echo Microsoft Office is activated with a vNext license. | ||
| - | ) | ||
| - | if %sub_proj% EQU 1 ( | ||
| - | for %%a in (%_PrjSKU%) do set _%%a=0 | ||
| - | echo. | ||
| - | echo Microsoft Project is activated with a vNext license. | ||
| - | ) | ||
| - | if %sub_vsio% EQU 1 ( | ||
| - | for %%a in (%_VisSKU%) do set _%%a=0 | ||
| - | echo. | ||
| - | echo Microsoft Visio is activated with a vNext license. | ||
| - | ) | ||
| - | |||
| - | for %%a in (%_RetIds%, | ||
| - | set _C16Msg=1 | ||
| - | ) | ||
| - | if %_C16Msg% EQU 1 ( | ||
| - | echo. | ||
| - | echo Converting Office C2R Retail-to-Volume: | ||
| - | ) | ||
| - | if %_C16Msg% EQU 0 (if %_Office15% EQU 1 (goto :R15V) else (goto :GVLKC2R)) | ||
| - | |||
| - | for %%# in (" | ||
| - | %_cscript% %_vbsf%" | ||
| - | ) | ||
| - | %_cscript% %_vbsf%" | ||
| - | |||
| - | if !_Mondo! EQU 1 ( | ||
| - | call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365ProPlus! EQU 1 ( | ||
| - | echo O365ProPlus 2016 Suite ^<-^> Mondo 2016 Licenses | ||
| - | call :InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK | ||
| - | if !_Mondo! EQU 0 call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365Business! EQU 1 if !_O365ProPlus! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365Business 2016 Suite ^<-^> Mondo 2016 Licenses | ||
| - | call :InsLic O365Business NCHRJ-3VPGW-X73DM-6B36K-3RQ6B | ||
| - | if !_Mondo! EQU 0 call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365SmallBusPrem! EQU 1 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365SmallBusPrem 2016 Suite ^<-^> Mondo 2016 Licenses | ||
| - | call :InsLic O365SmallBusPrem 3FBRX-NFP7C-6JWVK-F2YGK-H499R | ||
| - | if !_Mondo! EQU 0 call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365HomePrem! EQU 1 if !_O365SmallBusPrem! EQU 0 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365HomePrem 2016 Suite ^<-^> Mondo 2016 Licenses | ||
| - | call :InsLic O365HomePrem 9FNY8-PWWTY-8RY4F-GJMTV-KHGM9 | ||
| - | if !_Mondo! EQU 0 call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365EduCloud! EQU 1 if !_O365HomePrem! EQU 0 if !_O365SmallBusPrem! EQU 0 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365EduCloud 2016 Suite ^<-^> Mondo 2016 Licenses | ||
| - | call :InsLic O365EduCloud 8843N-BCXXD-Q84H8-R4Q37-T3CPT | ||
| - | if !_Mondo! EQU 0 call :InsLic Mondo | ||
| - | ) | ||
| - | if !_O365ProPlus! EQU 1 set _O16O365=1 | ||
| - | if !_Mondo! EQU 1 if !_O365ProPlus! EQU 0 ( | ||
| - | echo Mondo 2016 Suite | ||
| - | call :InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK | ||
| - | if %_Office15% EQU 1 (goto :R15V) else (goto :GVLKC2R) | ||
| - | ) | ||
| - | if !_ProPlus2021! EQU 1 if !_O365ProPlus! EQU 0 ( | ||
| - | echo ProPlus 2021 Suite | ||
| - | call :InsLic ProPlus2021 | ||
| - | ) | ||
| - | if !_ProPlus2019! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 ( | ||
| - | echo ProPlus 2019 Suite -^> ProPlus%_ons% Licenses | ||
| - | call :InsLic ProPlus%_tag% | ||
| - | ) | ||
| - | if !_ProPlus! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 ( | ||
| - | echo ProPlus 2016 Suite -^> ProPlus%_ons% Licenses | ||
| - | call :InsLic ProPlus%_tag% | ||
| - | ) | ||
| - | if !_Professional2021! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 ( | ||
| - | echo Professional 2021 Suite -^> ProPlus 2021 Licenses | ||
| - | call :InsLic ProPlus2021 | ||
| - | ) | ||
| - | if !_Professional2019! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 ( | ||
| - | echo Professional 2019 Suite -^> ProPlus%_ons% Licenses | ||
| - | call :InsLic ProPlus%_tag% | ||
| - | ) | ||
| - | if !_Professional! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 ( | ||
| - | echo Professional 2016 Suite -^> ProPlus%_ons% Licenses | ||
| - | call :InsLic ProPlus%_tag% | ||
| - | ) | ||
| - | if !_Standard2021! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 ( | ||
| - | echo Standard 2021 Suite | ||
| - | call :InsLic Standard2021 | ||
| - | ) | ||
| - | if !_Standard2019! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 ( | ||
| - | echo Standard 2019 Suite -^> Standard%_ons% Licenses | ||
| - | call :InsLic Standard%_tag% | ||
| - | ) | ||
| - | if !_Standard! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 ( | ||
| - | echo Standard 2016 Suite -^> Standard%_ons% Licenses | ||
| - | call :InsLic Standard%_tag% | ||
| - | ) | ||
| - | for %%a in (ProjectPro, | ||
| - | echo %%a 2021 SKU | ||
| - | call :InsLic %%a2021 | ||
| - | ) | ||
| - | for %%a in (ProjectPro, | ||
| - | if !_%%a2021! EQU 0 ( | ||
| - | echo %%a 2019 SKU -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (ProjectPro, | ||
| - | if !_%%a2021! EQU 0 if !_%%a2019! EQU 0 ( | ||
| - | echo %%a 2016 SKU -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 ( | ||
| - | set _Standard2021=1 | ||
| - | echo %%a 2021 Suite -^> Standard 2021 Licenses | ||
| - | call :InsLic Standard2021 | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2021! EQU 0 ( | ||
| - | set _Standard2019=1 | ||
| - | echo %%a 2019 Suite -^> Standard%_ons% Licenses | ||
| - | call :InsLic Standard%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2021! EQU 0 if !_%%a2019! EQU 0 ( | ||
| - | set _Standard=1 | ||
| - | echo %%a 2016 Suite -^> Standard%_ons% Licenses | ||
| - | call :InsLic Standard%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_A21Ids%, | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 ( | ||
| - | echo %%a App | ||
| - | call :InsLic %%a | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_A16Ids%) do if !_%%a2019! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2021! EQU 0 ( | ||
| - | echo %%a 2019 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_A16Ids%) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2021! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2021! EQU 0 if !_%%a2019! EQU 0 ( | ||
| - | echo %%a 2016 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (Access) do if !_%%a2021! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 ( | ||
| - | echo %%a 2021 App | ||
| - | call :InsLic %%a2021 | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (Access) do if !_%%a2019! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_%%a2021! EQU 0 ( | ||
| - | echo %%a 2019 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (Access) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2021! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_%%a2021! EQU 0 if !_%%a2019! EQU 0 ( | ||
| - | echo %%a 2016 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (SkypeforBusiness) do if !_%%a2021! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 ( | ||
| - | echo %%a 2021 App | ||
| - | call :InsLic %%a2021 | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (SkypeforBusiness) do if !_%%a2019! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_%%a2021! EQU 0 ( | ||
| - | echo %%a 2019 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (SkypeforBusiness) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus2021! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_%%a2021! EQU 0 if !_%%a2019! EQU 0 ( | ||
| - | echo %%a 2016 App -^> %%a%_ons% Licenses | ||
| - | call :InsLic %%a%_tag% | ||
| - | ) | ||
| - | ) | ||
| - | if %_Office15% EQU 1 (goto :R15V) else (goto :GVLKC2R) | ||
| - | |||
| - | :R15V | ||
| - | set _O15Ids=Standard, | ||
| - | set _A15Ids=Excel, | ||
| - | set _R15Ids=SPD, | ||
| - | set _V15Ids=Mondo, | ||
| - | |||
| - | echo %_Product15Ids%>" | ||
| - | for %%a in (%_R15Ids%, | ||
| - | set _%%a=0 | ||
| - | ) | ||
| - | for %%a in (%_R15Ids%) do ( | ||
| - | findstr /I / | ||
| - | ) | ||
| - | for %%a in (%_V15Ids%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | reg query %_PR15IDs%\Active\ProPlusRetail\x-none %_Nul3% && ( | ||
| - | find /i " | ||
| - | ) | ||
| - | reg query %_PR15IDs%\Active\ProPlusVolume\x-none %_Nul3% && ( | ||
| - | find /i " | ||
| - | ) | ||
| - | if %_Retail% EQU 1 for %%a in (%_R15Ids%) do ( | ||
| - | findstr /I / | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | ) | ||
| - | if %_Retail% EQU 1 reg query %_PR15IDs%\Active\ProPlusRetail\x-none %_Nul3% && ( | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | find /i " | ||
| - | ) | ||
| - | set " | ||
| - | find /i " | ||
| - | %_qr% %_Nul2% | find /i " | ||
| - | for %%a in (O365ProPlus, | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%a in (%_R15Ids%, | ||
| - | set _C15Msg=1 | ||
| - | ) | ||
| - | if %_C15Msg% EQU 1 if %_C16Msg% EQU 0 ( | ||
| - | echo. | ||
| - | echo Converting Office C2R Retail-to-Volume: | ||
| - | ) | ||
| - | if %_C15Msg% EQU 0 goto :GVLKC2R | ||
| - | |||
| - | for %%# in (" | ||
| - | %_cscript% %_vbsi%" | ||
| - | ) | ||
| - | %_cscript% %_vbsi%" | ||
| - | |||
| - | if !_Mondo! EQU 1 ( | ||
| - | call :Ins15Lic Mondo | ||
| - | ) | ||
| - | if !_O365ProPlus! EQU 1 if !_O16O365! EQU 0 ( | ||
| - | echo O365ProPlus 2013 Suite ^<-^> Mondo 2013 Licenses | ||
| - | call :Ins15Lic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK | ||
| - | if !_Mondo! EQU 0 call :Ins15Lic Mondo | ||
| - | ) | ||
| - | if !_O365SmallBusPrem! EQU 1 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365SmallBusPrem 2013 Suite ^<-^> Mondo 2013 Licenses | ||
| - | call :Ins15Lic O365SmallBusPrem 3FBRX-NFP7C-6JWVK-F2YGK-H499R | ||
| - | if !_Mondo! EQU 0 call :Ins15Lic Mondo | ||
| - | ) | ||
| - | if !_O365HomePrem! EQU 1 if !_O365SmallBusPrem! EQU 0 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365HomePrem 2013 Suite ^<-^> Mondo 2013 Licenses | ||
| - | call :Ins15Lic O365HomePrem 9FNY8-PWWTY-8RY4F-GJMTV-KHGM9 | ||
| - | if !_Mondo! EQU 0 call :Ins15Lic Mondo | ||
| - | ) | ||
| - | if !_O365Business! EQU 1 if !_O365HomePrem! EQU 0 if !_O365SmallBusPrem! EQU 0 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 ( | ||
| - | set _O365ProPlus=1 | ||
| - | echo O365Business 2013 Suite ^<-^> Mondo 2013 Licenses | ||
| - | call :Ins15Lic O365Business MCPBN-CPY7X-3PK9R-P6GTT-H8P8Y | ||
| - | if !_Mondo! EQU 0 call :Ins15Lic Mondo | ||
| - | ) | ||
| - | if !_Mondo! EQU 1 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 ( | ||
| - | echo Mondo 2013 Suite | ||
| - | call :Ins15Lic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK | ||
| - | goto :GVLKC2R | ||
| - | ) | ||
| - | if !_SPD! EQU 1 if !_Mondo! EQU 0 if !_O365ProPlus! EQU 0 ( | ||
| - | echo SharePoint Designer 2013 App -^> Mondo 2013 Licenses | ||
| - | call :Ins15Lic Mondo | ||
| - | goto :GVLKC2R | ||
| - | ) | ||
| - | if !_ProPlus! EQU 1 if !_O365ProPlus! EQU 0 ( | ||
| - | echo ProPlus 2013 Suite | ||
| - | call :Ins15Lic ProPlus | ||
| - | ) | ||
| - | if !_Professional! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 ( | ||
| - | echo Professional 2013 Suite -^> ProPlus 2013 Licenses | ||
| - | call :Ins15Lic ProPlus | ||
| - | ) | ||
| - | if !_Standard! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 ( | ||
| - | echo Standard 2013 Suite | ||
| - | call :Ins15Lic Standard | ||
| - | ) | ||
| - | for %%a in (ProjectPro, | ||
| - | echo %%a 2013 SKU | ||
| - | call :Ins15Lic %%a | ||
| - | ) | ||
| - | for %%a in (HomeBusiness, | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 if !_Standard! EQU 0 ( | ||
| - | set _Standard=1 | ||
| - | echo %%a 2013 Suite -^> Standard 2013 Licenses | ||
| - | call :Ins15Lic Standard | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (%_A15Ids%) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 if !_Standard! EQU 0 ( | ||
| - | echo %%a 2013 App | ||
| - | call :Ins15Lic %%a | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (Access) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 ( | ||
| - | echo %%a 2013 App | ||
| - | call :Ins15Lic %%a | ||
| - | ) | ||
| - | ) | ||
| - | for %%a in (Lync) do if !_%%a! EQU 1 ( | ||
| - | if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 ( | ||
| - | echo SkypeforBusiness 2015 App | ||
| - | call :Ins15Lic %%a | ||
| - | ) | ||
| - | ) | ||
| - | goto :GVLKC2R | ||
| - | |||
| - | :InsLic | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if not " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | reg delete %_Config% /f /v %_ID%.OSPPReady %_Nul3% | ||
| - | " | ||
| - | |||
| - | set fallback=0 | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | %_qr% %_Nul2% | find /i " | ||
| - | if %fallback% equ 0 goto :IntOK | ||
| - | |||
| - | set " | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | if defined _kpey ( | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | for %%# in (" | ||
| - | set " | ||
| - | ) | ||
| - | ) | ||
| - | for %%# in (!_lsfs!) do ( | ||
| - | %_cscript% %_vbsf%" | ||
| - | ) | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | if defined _kpey %_qr% %_Nul3% | ||
| - | |||
| - | :IntOK | ||
| - | reg add %_Config% /f /v %_ID%.OSPPReady /t REG_SZ /d 1 %_Nul1% | ||
| - | reg query %_Config% /v ProductReleaseIds | findstr /I " | ||
| - | if %errorlevel% NEQ 0 ( | ||
| - | for /f " | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :Ins15Lic | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if not " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | reg delete %_OSPP15Ready% /f /v %_ID%.OSPPReady %_Nul3% | ||
| - | for %%# in (" | ||
| - | %_cscript% %_vbsi%" | ||
| - | ) | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | if defined _pkey %_qr% %_Nul3% | ||
| - | reg add %_OSPP15Ready% /f /v %_ID%.OSPPReady /t %_OSPP15ReadT% /d 1 %_Nul1% | ||
| - | reg query %_Con15fig% %_Nul2% | findstr /I " | ||
| - | if %errorlevel% NEQ 0 ( | ||
| - | for /f " | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :GVLKC2R | ||
| - | set _CtRMsg=0 | ||
| - | if %_C16Msg% EQU 1 set _CtRMsg=1 | ||
| - | if %_C15Msg% EQU 1 set _CtRMsg=1 | ||
| - | if %_Office16% EQU 1 ( | ||
| - | for %%a in (%_RetIds%, | ||
| - | for %%A in (19,21) do call :officeLoc %%A | ||
| - | ) | ||
| - | if %_Office15% EQU 1 ( | ||
| - | for %%a in (%_R15Ids%, | ||
| - | ) | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | if %winbuild% GEQ 9200 %_qr% %_Nul3% | ||
| - | if exist " | ||
| - | %_cscript% %_SLMGR% /rilc | ||
| - | if !ERRORLEVEL! NEQ 0 %_cscript% %_SLMGR% /rilc | ||
| - | ) | ||
| - | goto :%_sC2R% | ||
| - | |||
| - | :keys | ||
| - | if " | ||
| - | set yh=- | ||
| - | goto :%1 %_Nul2% | ||
| - | |||
| - | :: Windows 11 [Ni] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 11 [Co] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 10 [RS5] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 10 [RS3] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 10 [RS2] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 10 [RS1] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 10 [TH] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2022 [Fe] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2019 [RS5] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2016 [RS4] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2016 [RS3] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2016 [RS1] | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 8.1 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2012 R2 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 8 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2012 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows 7 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Windows Server 2008 R2 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Office 2021 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Office 2019 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Office 2016 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Office 2013 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :: Office 2010 | ||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | set " | ||
| - | exit /b | ||
| - | |||
| - | :TheEnd | ||
| - | |||
| - | if %act_failed% EQU 1 ( | ||
| - | echo ____________________________________________________________________ | ||
| - | echo. | ||
| - | call :_errorinfo | ||
| - | ) | ||
| - | |||
| - | if not defined _tskinstalled if not defined _oldtsk ( | ||
| - | echo. | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | call : | ||
| - | echo Keeping the non-existent IP address 10.0.0.10 as KMS Server. | ||
| - | ) else ( | ||
| - | call : | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if not [%Act_OK%]==[1] ( | ||
| - | echo. | ||
| - | echo In case of any issues, check https:// | ||
| - | ) | ||
| - | |||
| - | if defined _unattended exit /b | ||
| - | |||
| - | echo ____________________________________________________________________ | ||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_errorinfo | ||
| - | |||
| - | call :CheckFR | ||
| - | |||
| - | set _intcon= | ||
| - | for %%a in (l.root-servers.net resolver1.opendns.com download.windowsupdate.com google.com) do if not defined _intcon ( | ||
| - | for /f " | ||
| - | ) | ||
| - | |||
| - | if not defined _intcon ( | ||
| - | call :_color %_Red% " | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if [%ERRORCODE%]==[-1073418124] ( | ||
| - | echo Checking Port 1688 connection, it may take a while... | ||
| - | echo. | ||
| - | |||
| - | set /a count=0 | ||
| - | set _portcon= | ||
| - | for %%a in (%srvlist%) do if not defined _portcon if !count! LEQ 7 ( | ||
| - | set /a count+=1 | ||
| - | %psc% "$t = New-Object Net.Sockets.TcpClient; | ||
| - | ) | ||
| - | |||
| - | if not defined _portcon ( | ||
| - | call :_color %Red% "Port 1688 is blocked in your Internet connection." | ||
| - | echo. | ||
| - | echo Reason: | ||
| - | echo or Firewall is blocking the connection. | ||
| - | echo. | ||
| - | echo Solution: Either use another Internet connection or use offline KMS | ||
| - | echo | ||
| - | ) else ( | ||
| - | echo Port 1688 connection test is passed. | ||
| - | echo. | ||
| - | echo Make sure system files are not blocked by your firewall. | ||
| - | echo If the issue persists, try offline KMS | ||
| - | echo https:// | ||
| - | ) | ||
| - | echo. | ||
| - | ) | ||
| - | |||
| - | echo KMS server is not an issue in this case. | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :setserv | ||
| - | |||
| - | :: Multi KMS servers integration and servers randomization | ||
| - | |||
| - | set srvlist= | ||
| - | set -= | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set n=1 | ||
| - | for %%a in (%srvlist%) do (set %%a=& | ||
| - | set max_servers=15 | ||
| - | set /a server_num=0 | ||
| - | exit /b | ||
| - | |||
| - | :getserv | ||
| - | |||
| - | if %server_num% equ %max_servers% set /a server_num+=1& | ||
| - | set /a rand=%Random%%%(15+1-1)+1 | ||
| - | if defined !server%rand%! goto :getserv | ||
| - | set KMS_IP=!server%rand%! | ||
| - | set !server%rand%!=1 | ||
| - | |||
| - | :: Get IPv4 address of KMS server to use for the activation, works even if ICMP echo is disabled. | ||
| - | :: Microsoft and Antivirus' | ||
| - | |||
| - | set /a server_num+=1 | ||
| - | (for /f " | ||
| - | if [%KMS_IP%]==[!KMS_IP!] for /f " | ||
| - | if not [%KMS_IP%]==[!KMS_IP!] exit /b | ||
| - | goto :getserv | ||
| - | ) | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | set OPPk=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform | ||
| - | set SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform | ||
| - | |||
| - | set _wApp=55c92734-d682-4d71-983e-d6ec3f16059f | ||
| - | set _oApp=0ff1ce15-a989-479d-af46-f275c6370663 | ||
| - | set _oA14=59a52881-a989-479d-af46-f275c6370663 | ||
| - | |||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if defined notx86 ( | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | if %winbuild% GEQ 9600 ( | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | |||
| - | :: check KMS38 lock | ||
| - | |||
| - | %nul% reg query " | ||
| - | set error_=9 | ||
| - | echo Failed to completely clear KMS Cache. | ||
| - | reg query " | ||
| - | ) || ( | ||
| - | echo Cleared KMS Cache successfully. | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | reg add " | ||
| - | reg add " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | if not defined _keepkms38 reg delete " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if not %xOS%==x86 ( | ||
| - | reg add " | ||
| - | reg add " | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | ) | ||
| - | reg delete " | ||
| - | reg add " | ||
| - | reg add " | ||
| - | ) | ||
| - | if %winbuild% GEQ 9600 ( | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | ) | ||
| - | reg add " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | reg delete " | ||
| - | goto :eof | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | mode con: cols=91 lines=30 | ||
| - | title Online KMS Complete Uninstall %masver% | ||
| - | |||
| - | set " | ||
| - | |||
| - | set " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | if %winbuild% GEQ 9200 if defined _C16R ( | ||
| - | echo. | ||
| - | echo ## Notice ## | ||
| - | echo. | ||
| - | echo To make sure Office programs do not show a non-genuine banner, | ||
| - | echo please run the activation option once, and don't uninstall afterward. | ||
| - | echo __________________________________________________________________________________________ | ||
| - | ) | ||
| - | |||
| - | set error_= | ||
| - | echo. | ||
| - | call : | ||
| - | call :clearstuff | ||
| - | |||
| - | if defined error_ ( | ||
| - | if [%error_%]==[1] ( | ||
| - | echo __________________________________________________________________________________________ | ||
| - | %eline% | ||
| - | echo Try Again / Restart the System | ||
| - | echo __________________________________________________________________________________________ | ||
| - | ) | ||
| - | ) else ( | ||
| - | echo __________________________________________________________________________________________ | ||
| - | echo. | ||
| - | call :_color %Green% " | ||
| - | echo __________________________________________________________________________________________ | ||
| - | ) | ||
| - | |||
| - | if defined _unattended timeout /t 2 & exit /b | ||
| - | |||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | :clearstuff | ||
| - | |||
| - | reg query " | ||
| - | echo Deleting [Task] Activation-Renewal | ||
| - | schtasks /delete /tn Activation-Renewal /f %nul% | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | echo Deleting [Task] Activation-Run_Once | ||
| - | schtasks /delete /tn Activation-Run_Once /f %nul% | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | echo Deleting [Task] Online_KMS_Activation_Script-Renewal | ||
| - | schtasks /delete /tn Online_KMS_Activation_Script-Renewal /f %nul% | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | echo Deleting [Task] Online_KMS_Activation_Script-Run_Once | ||
| - | schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f %nul% | ||
| - | ) | ||
| - | |||
| - | If exist " | ||
| - | echo Deleting [Folder] %windir%\Online_KMS_Activation_Script\ | ||
| - | rmdir /s /q " | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | echo Deleting [File] %ProgramData%\Online_KMS_Activation.cmd | ||
| - | del /f /q " | ||
| - | ) | ||
| - | |||
| - | If exist " | ||
| - | echo Deleting [Folder] %ProgramData%\Online_KMS_Activation\ | ||
| - | rmdir /s /q " | ||
| - | ) | ||
| - | |||
| - | If exist " | ||
| - | echo Deleting [Folder] %ProgramData%\Activation-Renewal\ | ||
| - | rmdir /s /q " | ||
| - | ) | ||
| - | |||
| - | If exist " | ||
| - | echo Deleting [Folder] %ProgramFiles%\Activation-Renewal\ | ||
| - | rmdir /s /q " | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | echo Deleting [Registry] HKCR\DesktopBackground\shell\Activate Windows - Office | ||
| - | Reg delete " | ||
| - | ) | ||
| - | |||
| - | reg query " | ||
| - | reg query " | ||
| - | reg query " | ||
| - | If exist " | ||
| - | reg query " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | if exist " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | :RenTask | ||
| - | |||
| - | cls | ||
| - | mode con cols=91 lines=30 | ||
| - | title Install Activation Auto-Renewal %masver% | ||
| - | |||
| - | set error_= | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | call :clearstuff %nul% | ||
| - | |||
| - | if defined error_ ( | ||
| - | %eline% | ||
| - | echo Failed to completely clear KMS related folders/ | ||
| - | echo Run the Uninstall option and then try again. | ||
| - | goto :RenDone | ||
| - | ) | ||
| - | |||
| - | if not exist " | ||
| - | set " | ||
| - | |||
| - | set nil= | ||
| - | if exist " | ||
| - | md " | ||
| - | call :RenExport renewal " | ||
| - | if defined ActTask (call :RenExport run_once " | ||
| - | s%nil%cht%nil%asks / | ||
| - | if defined ActTask (s%nil%cht%nil%asks / | ||
| - | if exist " | ||
| - | |||
| - | call : | ||
| - | %psc% " | ||
| - | title Install Activation Auto-Renewal %masver% | ||
| - | |||
| - | :: | ||
| - | |||
| - | reg query " | ||
| - | if defined ActTask reg query " | ||
| - | |||
| - | If not exist " | ||
| - | If not exist " | ||
| - | |||
| - | if defined error_ ( | ||
| - | |||
| - | reg query " | ||
| - | schtasks /delete /tn Activation-Renewal /f %nul% | ||
| - | ) | ||
| - | reg query " | ||
| - | schtasks /delete /tn Activation-Run_Once /f %nul% | ||
| - | ) | ||
| - | |||
| - | If exist " | ||
| - | rmdir /s /q " | ||
| - | ) | ||
| - | |||
| - | %eline% | ||
| - | echo Run the Uninstall option and then try again. | ||
| - | goto :RenDone | ||
| - | ) | ||
| - | |||
| - | echo __________________________________________________________________________________________ | ||
| - | echo. | ||
| - | echo Files created: | ||
| - | echo %_dest%\Activation_task.cmd | ||
| - | echo %_dest%\Info.txt | ||
| - | echo. | ||
| - | (if defined ActTask (echo Scheduled Tasks created:) else (echo Scheduled Task created:)) | ||
| - | echo \Activation-Renewal [Weekly] | ||
| - | if defined ActTask (echo \Activation-Run_Once) | ||
| - | echo __________________________________________________________________________________________ | ||
| - | echo. | ||
| - | echo Info: | ||
| - | echo Activation will be renewed every week if the Internet connection is found. | ||
| - | echo It'll only renew installed KMS licenses. It won't convert any license to KMS. | ||
| - | echo __________________________________________________________________________________________ | ||
| - | echo. | ||
| - | if defined ActTask ( | ||
| - | call :_color %Green% " | ||
| - | ) else ( | ||
| - | call :_color %Green% " | ||
| - | ) | ||
| - | echo. | ||
| - | call :_color %Gray% "Make sure you have run the Activation option at least once." | ||
| - | echo __________________________________________________________________________________________ | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :RenDone | ||
| - | |||
| - | if defined _unattended exit /b | ||
| - | |||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | ( | ||
| - | echo The use of this script is to renew your Windows/ | ||
| - | echo: | ||
| - | echo If renewal/ | ||
| - | echo: | ||
| - | echo - Scheduled tasks | ||
| - | echo | ||
| - | echo | ||
| - | echo The scheduled tasks runs only if the system is connected to the Internet. | ||
| - | echo: | ||
| - | echo - Files | ||
| - | echo | ||
| - | echo | ||
| - | echo | ||
| - | echo ______________________________________________________________________________________________ | ||
| - | echo: | ||
| - | echo | ||
| - | echo: | ||
| - | echo | ||
| - | echo Email: windowsaddict@protonmail.com | ||
| - | )>" | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :renewal: | ||
| - | <?xml version=" | ||
| - | <Task version=" | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | <Sunday /> | ||
| - | </ | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | <Actions Context=" | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | :renewal: | ||
| - | |||
| - | :run_once: | ||
| - | <?xml version=" | ||
| - | <Task version=" | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | <Actions Context=" | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | :run_once: | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Extract the text from batch script without character and file encoding issue | ||
| - | |||
| - | :RenExport | ||
| - | |||
| - | %psc% " | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | @echo off | ||
| - | |||
| - | :: Renew K-M-S activation with Online servers via scheduled task | ||
| - | |||
| - | :: | ||
| - | :: | ||
| - | :: This script is a part of ' | ||
| - | :: | ||
| - | :: | ||
| - | :: Email: windowsaddict@protonmail.com | ||
| - | :: | ||
| - | :: | ||
| - | |||
| - | |||
| - | if not " | ||
| - | echo. | ||
| - | echo ====== Error ====== | ||
| - | echo. | ||
| - | echo This file is supposed to be run only by the scheduled task. | ||
| - | echo. | ||
| - | echo Press any key to exit | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | :: Set Path variable, it helps if it is misconfigured in the system | ||
| - | |||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | >nul fltmc || exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | set _tserror= | ||
| - | set winbuild=1 | ||
| - | set " | ||
| - | for /f " | ||
| - | set psc=powershell.exe | ||
| - | |||
| - | set run_once= | ||
| - | set t_name=Renewal Task | ||
| - | reg query " | ||
| - | set run_once=1 | ||
| - | set t_name=Run Once Task | ||
| - | ) | ||
| - | |||
| - | set _wmic=0 | ||
| - | for %%# in (wmic.exe) do @if not " | ||
| - | wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i " | ||
| - | ) | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | if exist " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_taskstart | ||
| - | |||
| - | echo. | ||
| - | echo %date%, %time% | ||
| - | |||
| - | set /a loop=1 | ||
| - | set /a max_loop=4 | ||
| - | |||
| - | call : | ||
| - | |||
| - | :_intrepeat | ||
| - | |||
| - | :: Check Internet connection. Works even if ICMP echo is disabled. | ||
| - | |||
| - | for %%a in (%srvlist%) do ( | ||
| - | for /f " | ||
| - | if not [%%#]==[] goto _taskIntConnected | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | nslookup dns.msftncsi.com 2>nul | find " | ||
| - | if [%errorlevel%]==[0] goto _taskIntConnected | ||
| - | |||
| - | if %loop%==%max_loop% ( | ||
| - | set _tserror=1 | ||
| - | goto _taskend | ||
| - | ) | ||
| - | |||
| - | echo. | ||
| - | echo Error: Internet is not connected | ||
| - | echo Waiting 30 seconds | ||
| - | |||
| - | timeout /t 30 >nul | ||
| - | set /a loop=%loop%+1 | ||
| - | goto _intrepeat | ||
| - | |||
| - | : | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check not x86 Windows | ||
| - | |||
| - | set notx86= | ||
| - | for /f " | ||
| - | if /i not " | ||
| - | |||
| - | :: | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Clean existing KMS cache from the registry / Set port value to 1688 | ||
| - | |||
| - | %nul% reg delete " | ||
| - | %nul% reg add " | ||
| - | %nul% reg delete " | ||
| - | if %winbuild% GEQ 9200 ( | ||
| - | if defined notx86 ( | ||
| - | %nul% reg add " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg add " | ||
| - | ) | ||
| - | %nul% reg delete " | ||
| - | %nul% reg add " | ||
| - | ) | ||
| - | if %winbuild% GEQ 9600 ( | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | ) | ||
| - | %nul% reg add " | ||
| - | %nul% reg delete " | ||
| - | %nul% reg delete " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check WMI and sppsvc Errors | ||
| - | |||
| - | set applist= | ||
| - | net start sppsvc /y %nul% | ||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkapp% do (if defined applist (call set " | ||
| - | |||
| - | if not defined applist ( | ||
| - | set _tserror=1 | ||
| - | if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i " | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | if !errorlevel! NEQ 0 (set e_wmispp=WMI, | ||
| - | echo. | ||
| - | echo Error: Not Respoding- !e_wmispp! | ||
| - | echo. | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check installed volume products activation ID's | ||
| - | |||
| - | call : | ||
| - | call : | ||
| - | call : | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo. | ||
| - | echo Renewing KMS activation for all installed Volume products | ||
| - | |||
| - | if not defined sppwid if not defined sppoid if not defined osppid ( | ||
| - | echo. | ||
| - | echo No installed Volume Windows / Office product found | ||
| - | echo. | ||
| - | echo Renewing KMS server | ||
| - | call : | ||
| - | call : | ||
| - | goto :_skipact | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check KMS38 activation | ||
| - | |||
| - | set gpr=0 | ||
| - | set _kms38=0 | ||
| - | if defined sppwid if %winbuild% GEQ 14393 ( | ||
| - | set _path=%slp% | ||
| - | set _actid=%sppwid% | ||
| - | call : | ||
| - | ) | ||
| - | |||
| - | if %gpr% NEQ 0 if %gpr% GTR 259200 ( | ||
| - | set _kms38=1 | ||
| - | call : | ||
| - | ) | ||
| - | |||
| - | :: Set specific KMS host to Local Host so that global KMS IP can not replace KMS38 activation but can be used with Office and other Windows Editions. | ||
| - | |||
| - | if %_kms38% EQU 1 ( | ||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | echo. | ||
| - | if defined sppwid ( | ||
| - | set _path=%slp% | ||
| - | set _actid=%sppwid% | ||
| - | call :_actprod | ||
| - | call :_act act_win | ||
| - | call :_actinfo act_win | ||
| - | ) else ( | ||
| - | echo Checking: Volume version of Windows is not installed | ||
| - | ) | ||
| - | |||
| - | if defined sppoid ( | ||
| - | set _path=%slp% | ||
| - | for %%# in (%sppoid%) do ( | ||
| - | echo. | ||
| - | set _actid=%%# | ||
| - | call :_actprod | ||
| - | call :_act | ||
| - | call :_actinfo | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if defined osppid ( | ||
| - | set _path=%ospp% | ||
| - | for %%# in (%osppid%) do ( | ||
| - | echo. | ||
| - | set _actid=%%# | ||
| - | call :_actprod | ||
| - | call :_act | ||
| - | call :_actinfo | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if not defined sppoid if not defined osppid ( | ||
| - | echo. | ||
| - | echo Checking: Volume version of Office is not installed | ||
| - | ) | ||
| - | |||
| - | :_skipact | ||
| - | |||
| - | :: | ||
| - | |||
| - | if defined run_once ( | ||
| - | echo. | ||
| - | echo Deleting Scheduled Task Activation-Run_Once | ||
| - | schtasks /delete /tn Activation-Run_Once /f %nul% | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_taskend | ||
| - | |||
| - | echo. | ||
| - | echo Exiting | ||
| - | echo ______________________________________________________________________ | ||
| - | |||
| - | if defined _tserror (exit /b 123456789) else (exit /b 0) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_act | ||
| - | |||
| - | set errorcode=12345 | ||
| - | set /a act_attempt=0 | ||
| - | |||
| - | :_act2 | ||
| - | |||
| - | if %act_attempt% GTR 4 exit /b | ||
| - | |||
| - | if not [%act_ok%]==[1] ( | ||
| - | call : | ||
| - | call : | ||
| - | ) | ||
| - | |||
| - | if not !server_num! GTR %max_servers% ( | ||
| - | |||
| - | if [%1]==[act_win] if %_kms38% EQU 1 ( | ||
| - | set act_ok=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if %_wmic% EQU 1 wmic path !_path! where ID=' | ||
| - | if %_wmic% EQU 0 %psc% "try {$null=(([WMISEARCHER]' | ||
| - | |||
| - | call set errorcode=!errorlevel! | ||
| - | |||
| - | if !errorcode! EQU 0 ( | ||
| - | set act_ok=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | if [%1]==[act_win] if !errorcode! EQU -1073418187 if %winbuild% LSS 9200 ( | ||
| - | set act_ok=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | set act_ok=0 | ||
| - | set /a act_attempt+=1 | ||
| - | goto _act2 | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :_actprod | ||
| - | |||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_actinfo | ||
| - | |||
| - | if [%1]==[act_win] if %_kms38% EQU 1 ( | ||
| - | echo Windows is activated with KMS38 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if %errorcode% EQU 12345 ( | ||
| - | echo Product Activation Failed | ||
| - | echo Unable to test KMS servers due to restricted or no Internet | ||
| - | set _tserror=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if %errorcode% EQU -1073418187 ( | ||
| - | echo Product Activation Failed: 0xC004F035 | ||
| - | if [%1]==[act_win] if %winbuild% LSS 9200 echo Windows 7 cannot be KMS-activated on this computer due to unqualified OEM BIOS | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | if %errorcode% EQU -1073417728 ( | ||
| - | echo Product Activation Failed: 0xC004F200 | ||
| - | echo Windows needs to rebuild the activation-related files. | ||
| - | set _tserror=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | set gpr=0 | ||
| - | set gpr2=0 | ||
| - | call : | ||
| - | set /a " | ||
| - | |||
| - | if %errorcode% EQU 0 if %gpr% EQU 0 ( | ||
| - | echo Product Activation succeeded, but Remaining Period failed to increase. | ||
| - | if [%1]==[act_win] if %winbuild% LSS 9200 echo This could be related to the error described in KB4487266 | ||
| - | set _tserror=1 | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | set _actpass=1 | ||
| - | 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 : | ||
| - | if %gpr% EQU 259200 set _actpass=0 | ||
| - | |||
| - | if %errorcode% EQU 0 if %_actpass% EQU 0 ( | ||
| - | echo Product Activation Successful | ||
| - | echo Remaining Period: %gpr2% days ^(%gpr% minutes^) | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | cmd /c exit /b %errorcode% | ||
| - | if %errorcode% NEQ 0 ( | ||
| - | echo Product Activation Failed: 0x!=ExitCode! | ||
| - | ) else ( | ||
| - | echo Product Activation Failed | ||
| - | ) | ||
| - | echo Remaining Period: %gpr2% days ^(%gpr% minutes^) | ||
| - | set _tserror=1 | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | set %1= | ||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkapp% do (if defined %1 (call set " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | set gpr=0 | ||
| - | if %_wmic% EQU 1 for /f " | ||
| - | if %_wmic% EQU 0 for /f " | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | for %%# in (e0b2d383-d112-413f-8a80-97f373a5820c e38454fb-41a4-4f59-a5dc-25080e354730) do (if %sppwid%==%%# | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | |||
| - | if %winbuild% GEQ 9200 ( | ||
| - | %nul% reg add " | ||
| - | if defined notx86 ( | ||
| - | %nul% reg add " | ||
| - | %nul% reg add " | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | :: Multi KMS servers integration and servers randomization | ||
| - | |||
| - | set srvlist= | ||
| - | set -= | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set n=1 | ||
| - | for %%a in (%srvlist%) do (set %%a=& | ||
| - | set max_servers=15 | ||
| - | set /a server_num=0 | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | if %server_num% geq %max_servers% (set /a server_num+=1& | ||
| - | set /a rand=%Random%%%(15+1-1)+1 | ||
| - | if defined !server%rand%! goto : | ||
| - | set KMS_IP=!server%rand%! | ||
| - | set !server%rand%!=1 | ||
| - | |||
| - | :: Get IPv4 address of KMS server to use for the activation, works even if ICMP echo is disabled. | ||
| - | :: Microsoft and Antivirus' | ||
| - | |||
| - | set /a server_num+=1 | ||
| - | (for /f " | ||
| - | if [%KMS_IP%]==[!KMS_IP!] for /f " | ||
| - | if not [%KMS_IP%]==[!KMS_IP!] exit /b | ||
| - | goto : | ||
| - | ) | ||
| - | |||
| - | :: Ver:1.9 | ||
| - | :: | ||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | :_color | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | if defined _unattended (echo %~2) else (echo %esc%[%~1%~2%esc%[0m) | ||
| - | ) else ( | ||
| - | if defined _unattended (echo %~2) else (call :batcol %~1 " | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :_color2 | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m | ||
| - | ) else ( | ||
| - | call :batcol %~1 " | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Colored text with pure batch method | ||
| - | :: Thanks to @dbenham and @jeb | ||
| - | :: stackoverflow.com/ | ||
| - | |||
| - | :batcol | ||
| - | |||
| - | pushd %_coltemp% | ||
| - | if not exist "'" | ||
| - | setlocal | ||
| - | set " | ||
| - | set " | ||
| - | call :_batcol %1 s %3 t | ||
| - | del /f /q "'" | ||
| - | del /f /q " | ||
| - | popd | ||
| - | exit /b | ||
| - | |||
| - | :_batcol | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | set " | ||
| - | set " | ||
| - | for /f delims^=^ eol^= %%i in (" | ||
| - | if " | ||
| - | >`.txt (echo %%i\..\' | ||
| - | findstr /a:%~1 /f:`.txt " | ||
| - | <nul set /p " | ||
| - | ) | ||
| - | if " | ||
| - | setlocal EnableDelayedExpansion | ||
| - | for /f delims^=^ eol^= %%i in (" | ||
| - | if " | ||
| - | >`.txt (echo %%i\..\' | ||
| - | findstr /a:%~3 /f:`.txt " | ||
| - | <nul set /p " | ||
| - | ) | ||
| - | echo( | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :_colorprep | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | for /F %%a in ('echo prompt $E ^| cmd') do set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | for /f %%A in ('" | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: https:// | ||
| - | :: This code is used to clean Office licenses | ||
| - | |||
| - | : | ||
| - | function UninstallLicenses($DllPath) { | ||
| - | $AssemblyBuilder = [AppDomain]:: | ||
| - | $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, | ||
| - | $TypeBuilder = $ModuleBuilder.DefineType(0) | ||
| - | | ||
| - | [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | @([IntPtr], [int], [Guid].MakeByRefType(), | ||
| - | [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | |||
| - | $SPPC = $TypeBuilder.CreateType() | ||
| - | $Handle = 0 | ||
| - | [void]$SPPC:: | ||
| - | $pnReturnIds = 0 | ||
| - | $ppReturnIds = 0 | ||
| - | |||
| - | if (!$SPPC:: | ||
| - | foreach ($i in 0..($pnReturnIds - 1)) { | ||
| - | [void]$SPPC:: | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | |||
| - | $OSPP = (Get-ItemProperty -Path " | ||
| - | if ($OSPP) { | ||
| - | Write-Output "Found Office Software Protection installed, cleaning" | ||
| - | UninstallLicenses($OSPP + " | ||
| - | } | ||
| - | UninstallLicenses(" | ||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | @cls | ||
| - | mode con cols=100 lines=32 | ||
| - | powershell "& | ||
| - | color 07 | ||
| - | title Check Activation Status [vbs] | ||
| - | set " | ||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set ohook= | ||
| - | for %%# in (15 16) do ( | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%# in (System SystemX86) do ( | ||
| - | for %%G in (" | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if /i " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set _sO16vbs=0 | ||
| - | set _sO15vbs=0 | ||
| - | if exist " | ||
| - | set _sO15vbs=1 | ||
| - | ) else if exist " | ||
| - | set _sO15vbs=1 | ||
| - | ) else if exist " | ||
| - | set _sO15vbs=1 | ||
| - | ) | ||
| - | setlocal EnableDelayedExpansion | ||
| - | echo %line2% | ||
| - | echo *** | ||
| - | echo %line2% | ||
| - | pushd " | ||
| - | copy /y %SystemRoot%\System32\slmgr.vbs . >nul 2>&1 | ||
| - | net start sppsvc /y >nul 2>&1 | ||
| - | cscript //nologo slmgr.vbs /dli || (echo Error executing slmgr.vbs& | ||
| - | cscript //nologo slmgr.vbs /xpr | ||
| - | del /f /q slmgr.vbs >nul 2>&1 | ||
| - | popd | ||
| - | echo %line3% | ||
| - | |||
| - | if defined ohook ( | ||
| - | echo. | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office Ohook Activation Status | ||
| - | echo %line2% | ||
| - | echo. | ||
| - | powershell " | ||
| - | echo. | ||
| - | ) | ||
| - | |||
| - | :casVo16 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | set _sO16vbs=1 | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | if %_sO15vbs% EQU 0 ( | ||
| - | echo *** Office 2016 %_bit%-bit Status | ||
| - | ) else ( | ||
| - | echo *** | ||
| - | ) | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | if %_wow%==0 goto :casVo13 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | set _sO16vbs=1 | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | if %_sO15vbs% EQU 0 ( | ||
| - | echo *** Office 2016 32-bit Status | ||
| - | ) else ( | ||
| - | echo *** | ||
| - | ) | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVo13 | ||
| - | if %_sO16vbs% EQU 1 goto :casVo10 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2013 %_bit%-bit Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | if %_wow%==0 goto :casVo10 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2013 32-bit Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVo10 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2010 %_bit%-bit Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | if %_wow%==0 goto :casVc16 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2010 32-bit Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVc16 | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || ( | ||
| - | reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc13 | ||
| - | ) | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | set _sO16vbs=1 | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | if %_sO15vbs% EQU 0 ( | ||
| - | echo *** Office 2016-2021 C2R Status | ||
| - | ) else ( | ||
| - | echo *** Office 2013-2021 Status | ||
| - | ) | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | if %_wow%==0 goto :casVc13 | ||
| - | set office= | ||
| - | for /f " | ||
| - | if exist " | ||
| - | set _sO16vbs=1 | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | if %_sO15vbs% EQU 0 ( | ||
| - | echo *** Office 2016-2021 C2R Status | ||
| - | ) else ( | ||
| - | echo *** Office 2013-2021 Status | ||
| - | ) | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVc13 | ||
| - | if %_sO16vbs% EQU 1 goto :casVc10 | ||
| - | reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || ( | ||
| - | reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc10 | ||
| - | ) | ||
| - | set office= | ||
| - | if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2013 C2R Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVc10 | ||
| - | if %_wow%==0 reg query HKLM\SOFTWARE\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend | ||
| - | if %_wow%==1 reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend | ||
| - | set office= | ||
| - | if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) else if exist " | ||
| - | set " | ||
| - | ) | ||
| - | if exist " | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office 2010 C2R Status | ||
| - | echo %line2% | ||
| - | cscript //nologo " | ||
| - | ) | ||
| - | |||
| - | :casVend | ||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | |||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | mode con cols=100 lines=32 | ||
| - | powershell "& | ||
| - | color 07 | ||
| - | title Check Activation Status [wmi] | ||
| - | |||
| - | set WMI_VBS=0 | ||
| - | @cls | ||
| - | set " | ||
| - | set wspp=SoftwareLicensingProduct | ||
| - | set wsps=SoftwareLicensingService | ||
| - | set ospp=OfficeSoftwareProtectionProduct | ||
| - | set osps=OfficeSoftwareProtectionService | ||
| - | set winApp=55c92734-d682-4d71-983e-d6ec3f16059f | ||
| - | set o14App=59a52881-a989-479d-af46-f275c6370663 | ||
| - | set o15App=0ff1ce15-a989-479d-af46-f275c6370663 | ||
| - | for %%# in (spp_get, | ||
| - | for /f " | ||
| - | set " | ||
| - | set " | ||
| - | if %winbuild% GEQ 9200 set " | ||
| - | if %winbuild% GEQ 9600 set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set _Identity=0 | ||
| - | setlocal EnableDelayedExpansion | ||
| - | dir /b /s /a:-d " | ||
| - | dir /b /s /a:-d " | ||
| - | pushd " | ||
| - | setlocal DisableDelayedExpansion | ||
| - | if %winbuild% LSS 9200 if not exist " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | if exist " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set ohook= | ||
| - | for %%# in (15 16) do ( | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | for %%# in (System SystemX86) do ( | ||
| - | for %%G in (" | ||
| - | for %%A in (" | ||
| - | if exist " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | set _cwmi=0 | ||
| - | for %%# in (wmic.exe) do @if not " | ||
| - | wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i " | ||
| - | ) | ||
| - | |||
| - | if %_cwmi% EQU 0 ( | ||
| - | echo: | ||
| - | echo Error: WMI is not responding in the system. | ||
| - | echo: | ||
| - | echo In MAS, Goto Troubleshoot and run Fix WMI option. | ||
| - | echo: | ||
| - | echo Press any key to go back... | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _prsh=1 | ||
| - | for %%# in (powershell.exe) do @if " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %_cwmi% EQU 0 set WMI_VBS=1 | ||
| - | if %WMI_VBS% EQU 0 ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | set _WSH=0 | ||
| - | set OsppHook=1 | ||
| - | sc query osppsvc >nul 2>&1 | ||
| - | if %errorlevel% EQU 1060 set OsppHook=0 | ||
| - | |||
| - | net start sppsvc /y >nul 2>&1 | ||
| - | call :casWpkey %wspp% %winApp% cW1nd0ws sppw | ||
| - | if %winbuild% GEQ 9200 call :casWpkey %wspp% %o15App% c0ff1ce15 sppo | ||
| - | if %OsppHook% NEQ 0 ( | ||
| - | net start osppsvc /y >nul 2>&1 | ||
| - | call :casWpkey %ospp% %o14App% osppsvc ospp14 | ||
| - | if %winbuild% LSS 9200 call :casWpkey %ospp% %o15App% osppsvc ospp15 | ||
| - | ) | ||
| - | |||
| - | echo %line2% | ||
| - | echo *** | ||
| - | echo %line2% | ||
| - | if not defined cW1nd0ws ( | ||
| - | echo. | ||
| - | echo Error: product key not found. | ||
| - | goto :casWcon | ||
| - | ) | ||
| - | set winID=1 | ||
| - | set " | ||
| - | for /f " | ||
| - | set " | ||
| - | call :casWdet " | ||
| - | call :casWout | ||
| - | echo %line3% | ||
| - | echo. | ||
| - | ) | ||
| - | |||
| - | if defined ohook ( | ||
| - | echo. | ||
| - | echo. | ||
| - | echo %line2% | ||
| - | echo *** Office Ohook Activation Status | ||
| - | echo %line2% | ||
| - | echo. | ||
| - | powershell " | ||
| - | echo. | ||
| - | ) | ||
| - | |||
| - | :casWcon | ||
| - | set winID=0 | ||
| - | set verbose=1 | ||
| - | if not defined c0ff1ce15 ( | ||
| - | if defined osppsvc goto :casWospp | ||
| - | goto :casWend | ||
| - | ) | ||
| - | echo %line2% | ||
| - | echo *** | ||
| - | echo %line2% | ||
| - | set " | ||
| - | for /f " | ||
| - | set " | ||
| - | call :casWdet " | ||
| - | call :casWout | ||
| - | echo %line3% | ||
| - | echo. | ||
| - | ) | ||
| - | set verbose=0 | ||
| - | if defined osppsvc goto :casWospp | ||
| - | goto :casWend | ||
| - | |||
| - | :casWospp | ||
| - | if %verbose% EQU 1 ( | ||
| - | echo %line2% | ||
| - | echo *** | ||
| - | echo %line2% | ||
| - | ) | ||
| - | set " | ||
| - | if defined ospp15 for /f " | ||
| - | set " | ||
| - | call :casWdet " | ||
| - | call :casWout | ||
| - | echo %line3% | ||
| - | echo. | ||
| - | ) | ||
| - | set " | ||
| - | if defined ospp14 for /f " | ||
| - | set " | ||
| - | call :casWdet " | ||
| - | call :casWout | ||
| - | echo %line3% | ||
| - | echo. | ||
| - | ) | ||
| - | goto :casWend | ||
| - | |||
| - | :casWpkey | ||
| - | set " | ||
| - | %_qr% 2>nul | findstr /i ID 1>nul && (set %3=1& | ||
| - | exit /b | ||
| - | |||
| - | :casWdet | ||
| - | for %%# in (%~3) do set " | ||
| - | if /i %~1==%ospp% for %%# in (DiscoveredKeyManagementServiceMachineIpAddress, | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | for /f " | ||
| - | |||
| - | set /a _gpr=(GracePeriodRemaining+1440-1)/ | ||
| - | echo %Description%| findstr /i VOLUME_KMSCLIENT 1>nul && (set cKmsClient=1& | ||
| - | echo %Description%| findstr /i TIMEBASED_ 1>nul && (set cTblClient=1& | ||
| - | echo %Description%| findstr /i VIRTUAL_MACHINE_ACTIVATION 1>nul && (set cAvmClient=1& | ||
| - | cmd /c exit /b %LicenseStatusReason% | ||
| - | set " | ||
| - | set " | ||
| - | if %_gpr% GEQ 1 if %_WSH% EQU 1 ( | ||
| - | for /f " | ||
| - | ) | ||
| - | if %_gpr% GEQ 1 if %_prsh% EQU 1 if not defined _xpr ( | ||
| - | for /f " | ||
| - | title Check Activation Status [wmi] | ||
| - | ) | ||
| - | |||
| - | if %LicenseStatus% EQU 0 ( | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 1 ( | ||
| - | set " | ||
| - | set " | ||
| - | if %GracePeriodRemaining% EQU 0 ( | ||
| - | if %winID% EQU 1 (set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | if defined _xpr set " | ||
| - | ) | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 2 ( | ||
| - | set " | ||
| - | if defined _xpr set " | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 3 ( | ||
| - | set " | ||
| - | if defined _xpr set " | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 4 ( | ||
| - | set " | ||
| - | if defined _xpr set " | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 6 ( | ||
| - | set " | ||
| - | if defined _xpr set " | ||
| - | ) | ||
| - | if %LicenseStatus% EQU 5 ( | ||
| - | set " | ||
| - | if " | ||
| - | ) else if " | ||
| - | ) else (set " | ||
| - | ) | ||
| - | ) | ||
| - | if %LicenseStatus% GTR 6 ( | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | if not defined cKmsClient exit /b | ||
| - | |||
| - | if %KeyManagementServicePort%==0 set KeyManagementServicePort=1688 | ||
| - | set " | ||
| - | if " | ||
| - | |||
| - | if %DiscoveredKeyManagementServiceMachinePort%==0 set DiscoveredKeyManagementServiceMachinePort=1688 | ||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | if %WMI_VBS% NEQ 0 set " | ||
| - | for /f " | ||
| - | if /i %KeyManagementServiceHostCaching%==True (set KeyManagementServiceHostCaching=Enabled) else (set KeyManagementServiceHostCaching=Disabled) | ||
| - | |||
| - | if %winbuild% LSS 9200 exit /b | ||
| - | if /i %~1==%ospp% exit /b | ||
| - | |||
| - | if " | ||
| - | |||
| - | if %VLActivationTypeEnabled% EQU 3 ( | ||
| - | set VLActivationType=Token | ||
| - | ) else if %VLActivationTypeEnabled% EQU 2 ( | ||
| - | set VLActivationType=KMS | ||
| - | ) else if %VLActivationTypeEnabled% EQU 1 ( | ||
| - | set VLActivationType=AD | ||
| - | ) else ( | ||
| - | set VLActivationType=All | ||
| - | ) | ||
| - | |||
| - | if %winbuild% LSS 9600 exit /b | ||
| - | if " | ||
| - | exit /b | ||
| - | |||
| - | :casWout | ||
| - | echo. | ||
| - | echo Name: %Name% | ||
| - | echo Description: | ||
| - | echo Activation ID: %ID% | ||
| - | echo Extended PID: %ProductKeyID% | ||
| - | if defined ProductKeyChannel echo Product Key Channel: %ProductKeyChannel% | ||
| - | echo Partial Product Key: %PartialProductKey% | ||
| - | echo License Status: %License% | ||
| - | if defined LicenseMsg echo %LicenseMsg% | ||
| - | if not %LicenseStatus%==0 if not %EvaluationEndDate: | ||
| - | if not defined cKmsClient ( | ||
| - | if defined ExpireMsg echo.& | ||
| - | exit /b | ||
| - | ) | ||
| - | if defined VLActivationTypeEnabled echo Configured Activation Type: %VLActivationType% | ||
| - | echo. | ||
| - | if not %LicenseStatus%==1 ( | ||
| - | echo Please activate the product in order to update KMS client information values. | ||
| - | exit /b | ||
| - | ) | ||
| - | echo Most recent activation information: | ||
| - | echo Key Management Service client information | ||
| - | echo. Client Machine ID (CMID): %ClientMachineID% | ||
| - | echo. %KmsDns% | ||
| - | echo. %KmsReg% | ||
| - | if defined DiscoveredKeyManagementServiceMachineIpAddress echo. KMS machine IP address: %DiscoveredKeyManagementServiceMachineIpAddress% | ||
| - | echo. KMS machine extended PID: %KeyManagementServiceProductKeyID% | ||
| - | echo. Activation interval: %VLActivationInterval% minutes | ||
| - | echo. Renewal interval: %VLRenewalInterval% minutes | ||
| - | echo. K.M.S. host caching: %KeyManagementServiceHostCaching% | ||
| - | if defined KeyManagementServiceLookupDomain echo. KMS SRV record lookup domain: %KeyManagementServiceLookupDomain% | ||
| - | if defined ExpireMsg echo.& | ||
| - | exit /b | ||
| - | |||
| - | :casWend | ||
| - | if %_Identity% EQU 1 if %_prsh% EQU 1 ( | ||
| - | echo %line2% | ||
| - | echo *** Office vNext Status | ||
| - | echo %line2% | ||
| - | setlocal EnableDelayedExpansion | ||
| - | %_psc% " | ||
| - | title Check Activation Status [wmi] | ||
| - | echo %line3% | ||
| - | echo. | ||
| - | ) | ||
| - | echo. | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | :vNextDiag: | ||
| - | function PrintModePerPridFromRegistry | ||
| - | { | ||
| - | $vNextRegkey = " | ||
| - | $vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction Ignore | Select-Object -ExpandProperty ' | ||
| - | If ($vNextPrids -Eq $null) | ||
| - | { | ||
| - | Write-Host "No registry keys found." | ||
| - | Return | ||
| - | } | ||
| - | $vNextPrids | ForEach ` | ||
| - | { | ||
| - | $mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_ | ||
| - | Switch ($mode) | ||
| - | { | ||
| - | 2 { $mode = " | ||
| - | 3 { $mode = " | ||
| - | Default { $mode = " | ||
| - | } | ||
| - | Write-Host $_ = $mode | ||
| - | } | ||
| - | } | ||
| - | function PrintSharedComputerLicensing | ||
| - | { | ||
| - | $scaRegKey = " | ||
| - | $scaValue = Get-ItemProperty -Path $scaRegKey -ErrorAction Ignore | Select-Object -ExpandProperty " | ||
| - | $scaRegKey2 = " | ||
| - | $scaValue2 = Get-ItemProperty -Path $scaRegKey2 -ErrorAction Ignore | Select-Object -ExpandProperty " | ||
| - | $scaPolicyKey = " | ||
| - | $scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction Ignore | Select-Object -ExpandProperty " | ||
| - | If ($scaValue -Eq $null -And $scaValue2 -Eq $null -And $scaPolicyValue -Eq $null) | ||
| - | { | ||
| - | Write-Host "No registry keys found." | ||
| - | Return | ||
| - | } | ||
| - | $scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue | ||
| - | If ($scaModeValue -Eq 0) | ||
| - | { | ||
| - | $scaMode = " | ||
| - | } | ||
| - | If ($scaModeValue -Eq 1) | ||
| - | { | ||
| - | $scaMode = " | ||
| - | } | ||
| - | Write-Host " | ||
| - | Write-Host | ||
| - | $tokenFiles = $null | ||
| - | $tokenPath = " | ||
| - | If (Test-Path $tokenPath) | ||
| - | { | ||
| - | $tokenFiles = Get-ChildItem -Path $tokenPath -Recurse -File -Filter " | ||
| - | } | ||
| - | If ($tokenFiles.length -Eq 0) | ||
| - | { | ||
| - | Write-Host "No tokens found." | ||
| - | Return | ||
| - | } | ||
| - | $tokenFiles | ForEach ` | ||
| - | { | ||
| - | $tokenParts = (Get-Content -Encoding Unicode -Path $_.FullName).Split(' | ||
| - | $output = [PSCustomObject] ` | ||
| - | @{ | ||
| - | ACID = $tokenParts[0]; | ||
| - | User = $tokenParts[3] | ||
| - | NotBefore = $tokenParts[4]; | ||
| - | NotAfter = $tokenParts[5]; | ||
| - | } | ConvertTo-Json | ||
| - | Write-Host $output | ||
| - | } | ||
| - | } | ||
| - | function PrintLicensesInformation | ||
| - | { | ||
| - | Param( | ||
| - | [ValidateSet(" | ||
| - | [String]$mode | ||
| - | ) | ||
| - | If ($mode -Eq " | ||
| - | { | ||
| - | $licensePath = " | ||
| - | } | ||
| - | ElseIf ($mode -Eq " | ||
| - | { | ||
| - | $licensePath = " | ||
| - | } | ||
| - | $licenseFiles = $null | ||
| - | If (Test-Path $licensePath) | ||
| - | { | ||
| - | $licenseFiles = Get-ChildItem -Path $licensePath -Recurse -File | ||
| - | } | ||
| - | If ($licenseFiles.length -Eq 0) | ||
| - | { | ||
| - | Write-Host "No licenses found." | ||
| - | Return | ||
| - | } | ||
| - | $licenseFiles | ForEach ` | ||
| - | { | ||
| - | $license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-Json).License | ||
| - | $decodedLicense = [System.Text.Encoding]:: | ||
| - | $licenseType = $decodedLicense.LicenseType | ||
| - | If ($null -Ne $decodedLicense.ExpiresOn) | ||
| - | { | ||
| - | $expiry = [DateTime]:: | ||
| - | } | ||
| - | Else | ||
| - | { | ||
| - | $expiry = New-Object DateTime | ||
| - | } | ||
| - | $licenseState = $null | ||
| - | If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter)) | ||
| - | { | ||
| - | $licenseState = " | ||
| - | } | ||
| - | ElseIf ((Get-Date) -Lt (Get-Date $expiry)) | ||
| - | { | ||
| - | $licenseState = " | ||
| - | } | ||
| - | Else | ||
| - | { | ||
| - | $licenseState = " | ||
| - | } | ||
| - | if ($mode -Eq " | ||
| - | { | ||
| - | $output = [PSCustomObject] ` | ||
| - | @{ | ||
| - | Version = $_.Directory.Name | ||
| - | Type = " | ||
| - | Product = $decodedLicense.ProductReleaseId; | ||
| - | Acid = $decodedLicense.Acid; | ||
| - | LicenseState = $licenseState; | ||
| - | EntitlementStatus = $decodedLicense.Status; | ||
| - | EntitlementExpiration = $decodedLicense.ExpiresOn; | ||
| - | ReasonCode = $decodedLicense.ReasonCode; | ||
| - | NotBefore = $decodedLicense.Metadata.NotBefore; | ||
| - | NotAfter = $decodedLicense.Metadata.NotAfter; | ||
| - | NextRenewal = $decodedLicense.Metadata.RenewAfter; | ||
| - | TenantId = $decodedLicense.Metadata.TenantId; | ||
| - | } | ConvertTo-Json | ||
| - | } | ||
| - | ElseIf ($mode -Eq " | ||
| - | { | ||
| - | $output = [PSCustomObject] ` | ||
| - | @{ | ||
| - | Version = $_.Directory.Name | ||
| - | Type = " | ||
| - | Product = $decodedLicense.ProductReleaseId; | ||
| - | Acid = $decodedLicense.Acid; | ||
| - | DeviceId = $decodedLicense.Metadata.DeviceId; | ||
| - | LicenseState = $licenseState; | ||
| - | EntitlementStatus = $decodedLicense.Status; | ||
| - | EntitlementExpiration = $decodedLicense.ExpiresOn; | ||
| - | ReasonCode = $decodedLicense.ReasonCode; | ||
| - | NotBefore = $decodedLicense.Metadata.NotBefore; | ||
| - | NotAfter = $decodedLicense.Metadata.NotAfter; | ||
| - | NextRenewal = $decodedLicense.Metadata.RenewAfter; | ||
| - | TenantId = $decodedLicense.Metadata.TenantId; | ||
| - | } | ConvertTo-Json | ||
| - | } | ||
| - | Write-Output $output | ||
| - | } | ||
| - | } | ||
| - | Write-Host | ||
| - | Write-Host " | ||
| - | Write-Host | ||
| - | PrintModePerPridFromRegistry | ||
| - | Write-Host | ||
| - | Write-Host " | ||
| - | Write-Host | ||
| - | PrintSharedComputerLicensing | ||
| - | Write-Host | ||
| - | Write-Host " | ||
| - | Write-Host | ||
| - | PrintLicensesInformation -Mode " | ||
| - | Write-Host | ||
| - | Write-Host " | ||
| - | Write-Host | ||
| - | PrintLicensesInformation -Mode " | ||
| - | :vNextDiag: | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Troubleshoot %masver% | ||
| - | |||
| - | set _args= | ||
| - | set _elev= | ||
| - | |||
| - | set _args=%* | ||
| - | if defined _args set _args=%_args:" | ||
| - | if defined _args ( | ||
| - | for %%A in (%_args%) do ( | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | call :_colorprep | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %~z0 GEQ 200000 (set " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | |||
| - | :: Check desktop location | ||
| - | |||
| - | set desktop= | ||
| - | for /f " | ||
| - | if not defined desktop for /f " | ||
| - | |||
| - | if not defined desktop ( | ||
| - | %eline% | ||
| - | echo Desktop location was not detected, aborting... | ||
| - | goto at_done | ||
| - | ) | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | :at_menu | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Troubleshoot %masver% | ||
| - | mode con cols=77 lines=30 | ||
| - | |||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [2] Dism RestoreHealth | ||
| - | echo: [3] SFC Scannow | ||
| - | echo: | ||
| - | echo: [4] Fix WMI | ||
| - | echo: [5] Fix Licensing | ||
| - | echo: [6] Fix WPA Registry | ||
| - | echo: | ||
| - | echo: | ||
| - | echo: [0] %_exitmsg% | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | choice /C:1234560 /N | ||
| - | set _erl=%errorlevel% | ||
| - | |||
| - | if %_erl%==7 exit /b | ||
| - | if %_erl%==6 start %mas%fix-wpa-registry.html &goto at_menu | ||
| - | if %_erl%==5 goto: | ||
| - | if %_erl%==4 goto:fixwmi | ||
| - | if %_erl%==3 goto: | ||
| - | if %_erl%==2 goto: | ||
| - | if %_erl%==1 start %mas%troubleshoot.html &goto at_menu | ||
| - | goto :at_menu | ||
| - | |||
| - | :: | ||
| - | |||
| - | :dism_rest | ||
| - | |||
| - | cls | ||
| - | mode 98, 30 | ||
| - | title Dism /English /Online / | ||
| - | |||
| - | 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. | ||
| - | 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 " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | if defined _int ( | ||
| - | echo Checking Internet Connection | ||
| - | ) else ( | ||
| - | call :_color2 %_White% " | ||
| - | ) | ||
| - | |||
| - | echo %line% | ||
| - | echo: | ||
| - | echo Dism uses Windows Update to provide the files required to fix corruption. | ||
| - | echo This will take 5-15 minutes or more.. | ||
| - | echo %line% | ||
| - | echo: | ||
| - | echo Notes: | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | call :_color2 %_White% " | ||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | choice /C:09 /N /M "> | ||
| - | if %errorlevel%==1 goto at_menu | ||
| - | |||
| - | cls | ||
| - | mode 110, 30 | ||
| - | %psc% Stop-Service TrustedInstaller -force %nul% | ||
| - | |||
| - | set _time= | ||
| - | for /f %%a in (' | ||
| - | echo: | ||
| - | echo Applying the command, | ||
| - | echo dism /english /online / | ||
| - | dism /english /online / | ||
| - | |||
| - | %psc% Stop-Service TrustedInstaller -force %nul% | ||
| - | |||
| - | if not exist " | ||
| - | |||
| - | call : | ||
| - | call : | ||
| - | |||
| - | if not exist " | ||
| - | copy /y /b " | ||
| - | ) | ||
| - | |||
| - | if not exist " | ||
| - | copy /y /b " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | call :_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on the dekstop." | ||
| - | goto :at_back | ||
| - | |||
| - | :: | ||
| - | |||
| - | :sfcscan | ||
| - | |||
| - | cls | ||
| - | mode 98, 30 | ||
| - | title sfc /scannow | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | echo System File Checker will repair missing or corrupted system files. | ||
| - | 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 | ||
| - | echo to the next time. Sometimes it may take running the sfc /scannow command 3 times | ||
| - | echo restarting the PC after each time to completely fix everything that it's able to. | ||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | choice /C:09 /N /M "> | ||
| - | if %errorlevel%==1 goto at_menu | ||
| - | |||
| - | cls | ||
| - | %psc% Stop-Service TrustedInstaller -force %nul% | ||
| - | |||
| - | set _time= | ||
| - | for /f %%a in (' | ||
| - | echo: | ||
| - | echo Applying the command, | ||
| - | echo sfc /scannow | ||
| - | sfc /scannow | ||
| - | |||
| - | %psc% Stop-Service TrustedInstaller -force %nul% | ||
| - | |||
| - | if not exist " | ||
| - | |||
| - | call : | ||
| - | |||
| - | if not exist " | ||
| - | copy /y /b " | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | call :_color %Gray% "CBS log is copied to the AT_Logs folder on the dekstop." | ||
| - | goto :at_back | ||
| - | |||
| - | :: | ||
| - | |||
| - | :retokens | ||
| - | |||
| - | cls | ||
| - | mode con cols=125 lines=32 | ||
| - | %psc% "& | ||
| - | title Fix Licensing ^(ClipSVC ^+ Office vNext ^+ SPP ^+ OSPP^) | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | echo Notes: | ||
| - | echo: | ||
| - | echo - It 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: | ||
| - | echo - Clear ClipSVC, Office vNext, SPP and OSPP licenses | ||
| - | echo - Fix SPP permissions of tokens folder and registries | ||
| - | echo - Trigger the repair option for Office. | ||
| - | echo: | ||
| - | call :_color2 %_White% " | ||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | choice /C:09 /N /M "> | ||
| - | if %errorlevel%==1 goto at_menu | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Rebuild ClipSVC Licences | ||
| - | |||
| - | cls | ||
| - | : | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | echo: | ||
| - | |||
| - | if %winbuild% LSS 10240 ( | ||
| - | echo ClipSVC Licence rebuilding is supported only on Win 10/11 and Server equivalent. | ||
| - | echo Skipping... | ||
| - | goto :cleanvnext | ||
| - | ) | ||
| - | |||
| - | %psc% " | ||
| - | echo Windows is permanently activated. | ||
| - | echo Skipping rebuilding ClipSVC licences... | ||
| - | goto :cleanvnext | ||
| - | ) | ||
| - | |||
| - | echo Stopping ClipSVC service... | ||
| - | %psc% Stop-Service ClipSVC -force %nul% | ||
| - | timeout /t 2 %nul% | ||
| - | |||
| - | echo: | ||
| - | echo Applying the command to Clean ClipSVC Licences... | ||
| - | echo rundll32 clipc.dll, | ||
| - | |||
| - | rundll32 clipc.dll, | ||
| - | |||
| - | if %winbuild% LEQ 10240 ( | ||
| - | echo [Successful] | ||
| - | ) else ( | ||
| - | if exist " | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | :: Below registry key (Volatile & Protected) gets created after the ClipSVC License cleanup command, and gets automatically deleted after | ||
| - | :: system restart. It needs to be deleted to activate the system without restart. | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | reg query " | ||
| - | reg delete " | ||
| - | |||
| - | echo: | ||
| - | echo Deleting a Volatile ^& Protected Registry Key... | ||
| - | echo [%RegKey%] | ||
| - | reg query " | ||
| - | call :_color %Red% " | ||
| - | echo Restart the system, that will delete this registry key automatically. | ||
| - | ) || ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | |||
| - | :: Clear HWID token related registry to fix activation incase if there is any corruption | ||
| - | |||
| - | echo: | ||
| - | echo Deleting a IdentityCRL Registry Key... | ||
| - | echo [%_ident%] | ||
| - | reg delete " | ||
| - | reg query " | ||
| - | call :_color %Red% " | ||
| - | ) || ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | |||
| - | %psc% Stop-Service ClipSVC -force %nul% | ||
| - | |||
| - | :: Rebuild ClipSVC folder to fix permission issues | ||
| - | |||
| - | echo: | ||
| - | if %winbuild% GTR 10240 ( | ||
| - | echo Deleting Folder %ProgramData%\Microsoft\Windows\ClipSVC\ | ||
| - | rmdir /s /q " | ||
| - | |||
| - | if exist " | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Rebuilding Folder %ProgramData%\Microsoft\Windows\ClipSVC\ | ||
| - | %psc% Start-Service ClipSVC %nul% | ||
| - | timeout /t 3 %nul% | ||
| - | if not exist " | ||
| - | if not exist " | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Restarting [wlidsvc LicenseManager] services... | ||
| - | for %%# in (wlidsvc LicenseManager) do (%psc% Restart-Service %%# %nul%) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Find remnants of Office vNext license block and remove it because it stops non vNext licenses from appearing | ||
| - | :: https:// | ||
| - | |||
| - | :cleanvnext | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | echo: | ||
| - | |||
| - | setlocal DisableDelayedExpansion | ||
| - | set " | ||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | attrib -R " | ||
| - | attrib -R " | ||
| - | |||
| - | if exist " | ||
| - | rd /s /q " | ||
| - | if exist " | ||
| - | echo Failed To Delete - !ProgramData!\Microsoft\Office\Licenses\ | ||
| - | ) else ( | ||
| - | echo Deleted Folder - !ProgramData!\Microsoft\Office\Licenses\ | ||
| - | ) | ||
| - | ) else ( | ||
| - | echo Not Found - !ProgramData!\Microsoft\Office\Licenses\ | ||
| - | ) | ||
| - | |||
| - | if exist " | ||
| - | rd /s /q " | ||
| - | if exist " | ||
| - | echo Failed To Delete - !_Local!\Microsoft\Office\Licenses\ | ||
| - | ) else ( | ||
| - | echo Deleted Folder - !_Local!\Microsoft\Office\Licenses\ | ||
| - | ) | ||
| - | ) else ( | ||
| - | echo Not Found - !_Local!\Microsoft\Office\Licenses\ | ||
| - | ) | ||
| - | |||
| - | |||
| - | echo: | ||
| - | for /f " | ||
| - | |||
| - | set regfound= | ||
| - | for %%# in (HKCU !_sid!) do ( | ||
| - | for %%A in ( | ||
| - | %%# | ||
| - | %%# | ||
| - | %%# | ||
| - | ) do ( | ||
| - | reg query %%A %nul% && ( | ||
| - | set regfound=1 | ||
| - | reg delete %%A /f %nul% && ( | ||
| - | echo Deleted Registry - %%A | ||
| - | ) || ( | ||
| - | echo Failed to Delete - %%A | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | if not defined regfound echo Not Found - Office vNext Registry Keys | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Rebuild SPP Tokens | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | echo: | ||
| - | |||
| - | call :scandat check | ||
| - | |||
| - | if not defined token ( | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo tokens.dat file: [%token%] | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | set wpainfo= | ||
| - | for /f " | ||
| - | echo " | ||
| - | call :_color %Red% "WPA Registry Error: %wpainfo%" | ||
| - | ) || ( | ||
| - | echo WPA Registry Count: %wpainfo% | ||
| - | ) | ||
| - | |||
| - | set tokenstore= | ||
| - | for /f " | ||
| - | |||
| - | :: Check sppsvc permissions and apply fixes | ||
| - | |||
| - | if %winbuild% GEQ 10240 ( | ||
| - | |||
| - | echo: | ||
| - | echo Checking SPP permission related issues... | ||
| - | call :checkperms | ||
| - | |||
| - | if defined permerror ( | ||
| - | |||
| - | mkdir " | ||
| - | set " | ||
| - | set "d=!d! $AclObject = New-Object System.Security.AccessControl.DirectorySecurity;" | ||
| - | set "d=!d! $AclObject.SetSecurityDescriptorSddlForm($sddl);" | ||
| - | set "d=!d! Set-Acl -Path %tokenstore% -AclObject $AclObject;" | ||
| - | %psc% " | ||
| - | |||
| - | for %%# in ( | ||
| - | " | ||
| - | " | ||
| - | ) do for /f " | ||
| - | set " | ||
| - | set "d=!d! $rule = New-Object System.Security.AccessControl.RegistryAccessRule ('NT Service\sppsvc', | ||
| - | set "d=!d! $acl.ResetAccessRule($rule);" | ||
| - | set "d=!d! $acl.SetAccessRule($rule);" | ||
| - | set "d=!d! Set-Acl -Path ' | ||
| - | %psc% " | ||
| - | ) | ||
| - | |||
| - | call :checkperms | ||
| - | if defined permerror ( | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo [Successfully Fixed] | ||
| - | ) | ||
| - | ) else ( | ||
| - | echo [No Error Found] | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Stopping sppsvc service... | ||
| - | %psc% Stop-Service sppsvc -force %nul% | ||
| - | |||
| - | echo: | ||
| - | call :scandat delete | ||
| - | call :scandat check | ||
| - | |||
| - | if defined token ( | ||
| - | echo: | ||
| - | call :_color %Red% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Reinstalling System Licenses [slmgr /rilc]... | ||
| - | cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | ||
| - | if %errorlevel% NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% | ||
| - | if %errorlevel% EQU 0 ( | ||
| - | echo [Successful] | ||
| - | ) else ( | ||
| - | call :_color %Red% " | ||
| - | ) | ||
| - | |||
| - | call :scandat check | ||
| - | |||
| - | echo: | ||
| - | if not defined token ( | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo tokens.dat file was rebuilt successfully. | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Rebuild OSPP Tokens | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | echo: | ||
| - | |||
| - | sc qc osppsvc %nul% || ( | ||
| - | echo OSPP based Office is not installed | ||
| - | echo Skipping rebuilding OSPP tokens... | ||
| - | goto : | ||
| - | ) | ||
| - | |||
| - | call : | ||
| - | |||
| - | if not defined token ( | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo tokens.dat file: [%token%] | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Stopping osppsvc service... | ||
| - | %psc% Stop-Service osppsvc -force %nul% | ||
| - | |||
| - | echo: | ||
| - | call : | ||
| - | call : | ||
| - | |||
| - | if defined token ( | ||
| - | echo: | ||
| - | call :_color %Red% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Starting osppsvc service to generate tokens.dat | ||
| - | %psc% Start-Service osppsvc %nul% | ||
| - | call : | ||
| - | if not defined token ( | ||
| - | %psc% Stop-Service osppsvc -force %nul% | ||
| - | %psc% Start-Service osppsvc %nul% | ||
| - | timeout /t 3 %nul% | ||
| - | ) | ||
| - | |||
| - | call : | ||
| - | |||
| - | echo: | ||
| - | if not defined token ( | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo tokens.dat file was rebuilt successfully. | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %Blue% " | ||
| - | echo: | ||
| - | |||
| - | for /f " | ||
| - | |||
| - | if /i " | ||
| - | echo: | ||
| - | echo ARM64 Windows Found. | ||
| - | echo You need to use repair option in Windows settings for Office. | ||
| - | echo: | ||
| - | start ms-settings: | ||
| - | goto :repairend | ||
| - | ) | ||
| - | |||
| - | if /i " | ||
| - | set arch=X86 | ||
| - | ) else ( | ||
| - | set arch=X64 | ||
| - | ) | ||
| - | |||
| - | for %%# in (68 86) do ( | ||
| - | for %%A in (msi14 msi15 msi16 c2r14 c2r15 c2r16) do (set %%A_%%# | ||
| - | ) | ||
| - | |||
| - | set _68=HKLM\SOFTWARE\Microsoft\Office | ||
| - | set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office | ||
| - | |||
| - | reg query %_68%\14.0\CVH /f Click2run /k %nul% && (set " | ||
| - | reg query %_86%\14.0\CVH /f Click2run /k %nul% && (set " | ||
| - | |||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | for /f " | ||
| - | |||
| - | set uwp16= | ||
| - | if %winbuild% GEQ 10240 ( | ||
| - | %psc% " | ||
| - | ) | ||
| - | |||
| - | set /a counter=0 | ||
| - | echo Checking installed Office versions... | ||
| - | echo: | ||
| - | |||
| - | for %%# in ( | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | ) do ( | ||
| - | if not " | ||
| - | set insoff=%%# | ||
| - | set insoff=!insoff:" | ||
| - | echo [!insoff!] | ||
| - | 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 ________________________________________________________________ | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | if %counter% EQU 0 ( | ||
| - | echo: | ||
| - | echo Installed Office is not found. | ||
| - | goto :repairend | ||
| - | echo: | ||
| - | ) else ( | ||
| - | echo: | ||
| - | call :_color %_Yellow% "A Window will popup, in that Window you need to select [Quick] Repair Option..." | ||
| - | call :_color %_Yellow% "Press any key to continue..." | ||
| - | echo: | ||
| - | 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 ________________________________________________________________ | ||
| - | echo: | ||
| - | start ms-settings: | ||
| - | ) | ||
| - | |||
| - | set c2r14= | ||
| - | if defined c2r14_68 set c2r14=1 | ||
| - | 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 ________________________________________________________________ | ||
| - | echo: | ||
| - | start appwiz.cpl | ||
| - | ) | ||
| - | |||
| - | if defined msi14_68 if exist " | ||
| - | if defined msi14_86 if exist " | ||
| - | if defined msi15_68 if exist " | ||
| - | if defined msi15_86 if exist " | ||
| - | if defined msi16_68 if exist " | ||
| - | if defined msi16_86 if exist " | ||
| - | if defined c2r15_68 if exist " | ||
| - | if defined c2r15_86 if exist " | ||
| - | if defined c2r16_68 if exist " | ||
| - | if defined c2r16_86 if exist " | ||
| - | |||
| - | :repairend | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | echo: | ||
| - | call :_color %Green% " | ||
| - | goto :at_back | ||
| - | |||
| - | :: | ||
| - | |||
| - | :fixwmi | ||
| - | |||
| - | cls | ||
| - | mode 98, 34 | ||
| - | title Fix WMI | ||
| - | |||
| - | :: https:// | ||
| - | |||
| - | if exist " | ||
| - | %eline% | ||
| - | echo WMI rebuild is not recommended on Windows Server. Aborting... | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | for %%# in (wmic.exe) do @if " | ||
| - | %eline% | ||
| - | echo wmic.exe file is not found in the system. Aborting... | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Checking WMI | ||
| - | call :checkwmi | ||
| - | |||
| - | :: Apply basic fix first and check | ||
| - | |||
| - | if defined error ( | ||
| - | %psc% Stop-Service Winmgmt -force %nul% | ||
| - | winmgmt / | ||
| - | call :checkwmi | ||
| - | ) | ||
| - | |||
| - | if not defined error ( | ||
| - | echo [Working] | ||
| - | echo No need to apply this option. Aborting... | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | call :_color %Red% "[Not Responding]" | ||
| - | |||
| - | set _corrupt= | ||
| - | sc start Winmgmt %nul% | ||
| - | if %errorlevel% EQU 1060 set _corrupt=1 | ||
| - | sc query Winmgmt %nul% || set _corrupt=1 | ||
| - | for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (reg query HKLM\SYSTEM\CurrentControlSet\Services\Winmgmt /v %%G %nul% || set _corrupt=1) | ||
| - | |||
| - | echo: | ||
| - | if defined _corrupt ( | ||
| - | %eline% | ||
| - | echo Winmgmt service is corrupted. Aborting... | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | echo Disabling Winmgmt service | ||
| - | sc config Winmgmt start= disabled %nul% | ||
| - | if %errorlevel% EQU 0 ( | ||
| - | echo [Successful] | ||
| - | ) else ( | ||
| - | call :_color %Red% " | ||
| - | sc config Winmgmt start= auto %nul% | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Stopping Winmgmt service | ||
| - | %psc% Stop-Service Winmgmt -force %nul% | ||
| - | %psc% Stop-Service Winmgmt -force %nul% | ||
| - | %psc% Stop-Service Winmgmt -force %nul% | ||
| - | sc query Winmgmt | find /i " | ||
| - | echo [Successful] | ||
| - | ) || ( | ||
| - | call :_color %Red% " | ||
| - | echo: | ||
| - | call :_color %Blue% "Its recommended to select [Restart] option and then apply Fix WMI option again." | ||
| - | echo %line% | ||
| - | echo: | ||
| - | choice /C:21 /N /M "> [1] Restart | ||
| - | if !errorlevel!==1 (sc config Winmgmt start= auto %nul%& | ||
| - | echo: | ||
| - | echo Restarting... | ||
| - | shutdown -t 5 -r | ||
| - | exit | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Deleting WMI repository | ||
| - | rmdir /s /q " | ||
| - | if exist " | ||
| - | call :_color %Red% " | ||
| - | ) else ( | ||
| - | echo [Successful] | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Enabling Winmgmt service | ||
| - | sc config Winmgmt start= auto %nul% | ||
| - | if %errorlevel% EQU 0 ( | ||
| - | echo [Successful] | ||
| - | ) else ( | ||
| - | call :_color %Red% " | ||
| - | ) | ||
| - | |||
| - | call :checkwmi | ||
| - | if not defined error ( | ||
| - | echo: | ||
| - | echo Checking WMI | ||
| - | call :_color %Green% " | ||
| - | goto :at_back | ||
| - | ) | ||
| - | |||
| - | echo: | ||
| - | echo Registering .dll's and Compiling .mof' | ||
| - | call : | ||
| - | |||
| - | echo: | ||
| - | echo Checking WMI | ||
| - | call :checkwmi | ||
| - | if defined error ( | ||
| - | call :_color %Red% "[Not Responding]" | ||
| - | echo: | ||
| - | echo Run [Dism RestoreHealth] and [SFC Scannow] options and make sure there are no errors. | ||
| - | ) else ( | ||
| - | call :_color %Green% " | ||
| - | ) | ||
| - | |||
| - | goto :at_back | ||
| - | |||
| - | : | ||
| - | |||
| - | :: https:// | ||
| - | |||
| - | %psc% Stop-Service Winmgmt -force %nul% | ||
| - | cd /d %systemroot%\system32\wbem\ | ||
| - | regsvr32 /s %systemroot%\system32\scecli.dll | ||
| - | regsvr32 /s %systemroot%\system32\userenv.dll | ||
| - | mofcomp cimwin32.mof | ||
| - | mofcomp cimwin32.mfl | ||
| - | mofcomp rsop.mof | ||
| - | mofcomp rsop.mfl | ||
| - | for /f %%s in ('dir /b /s *.dll' | ||
| - | for /f %%s in ('dir /b *.mof' | ||
| - | for /f %%s in ('dir /b *.mfl' | ||
| - | |||
| - | winmgmt / | ||
| - | winmgmt / | ||
| - | exit /b | ||
| - | |||
| - | :checkwmi | ||
| - | |||
| - | :: https:// | ||
| - | |||
| - | set error= | ||
| - | wmic path Win32_ComputerSystem get CreationClassName /value %nul2% | find /i " | ||
| - | if %errorlevel% NEQ 0 (set error=1& | ||
| - | winmgmt / | ||
| - | if %errorlevel% NEQ 0 (set error=1& | ||
| - | |||
| - | cscript //nologo %windir%\system32\slmgr.vbs /dlv %nul% | ||
| - | cmd /c exit /b %errorlevel% | ||
| - | echo " | ||
| - | if %errorlevel% EQU 0 set error=1 | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :at_back | ||
| - | |||
| - | echo: | ||
| - | echo %line% | ||
| - | echo: | ||
| - | call :_color %_Yellow% "Press any key to go back..." | ||
| - | pause %nul1% | ||
| - | goto :at_menu | ||
| - | |||
| - | :: | ||
| - | |||
| - | :at_done | ||
| - | |||
| - | echo: | ||
| - | echo Press any key to %_exitmsg%... | ||
| - | pause %nul1% | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | :: https:// | ||
| - | |||
| - | set " | ||
| - | %nul% del /q /f %ddf% | ||
| - | echo/.New Cabinet> | ||
| - | echo/.set Cabinet=ON>> | ||
| - | echo/.set CabinetFileCountThreshold=0;>> | ||
| - | echo/.set Compress=ON>> | ||
| - | echo/.set CompressionType=LZX>> | ||
| - | echo/.set CompressionLevel=7;>> | ||
| - | echo/.set CompressionMemory=21;>> | ||
| - | echo/.set FolderFileCountThreshold=0;>> | ||
| - | echo/.set FolderSizeThreshold=0;>> | ||
| - | echo/.set GenerateInf=OFF>> | ||
| - | echo/.set InfFileName=nul>> | ||
| - | echo/.set MaxCabinetSize=0;>> | ||
| - | echo/.set MaxDiskFileCount=0;>> | ||
| - | echo/.set MaxDiskSize=0;>> | ||
| - | echo/.set MaxErrors=1;>> | ||
| - | echo/.set RptFileName=nul>> | ||
| - | echo/.set UniqueFiles=ON>> | ||
| - | for /f " | ||
| - | | ||
| - | ) | ||
| - | makecab /F %ddf% /D DiskDirectory1="" | ||
| - | del /q /f %ddf% | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :checkperms | ||
| - | |||
| - | set permerror= | ||
| - | if not exist " | ||
| - | |||
| - | for %%# in ( | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | ) do if not defined permerror ( | ||
| - | %psc% "$acl = Get-Acl ' | ||
| - | if !errorlevel!==2 set permerror=1 | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :scandat | ||
| - | |||
| - | set token= | ||
| - | for %%# in ( | ||
| - | %Systemdrive%\Windows\System32\spp\store_test\2.0\ | ||
| - | %Systemdrive%\Windows\System32\spp\store\ | ||
| - | %Systemdrive%\Windows\System32\spp\store\2.0\ | ||
| - | %Systemdrive%\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\ | ||
| - | ) do ( | ||
| - | |||
| - | if %1==check ( | ||
| - | if exist %%# | ||
| - | ) | ||
| - | |||
| - | if %1==delete ( | ||
| - | if exist %%# ( | ||
| - | %nul% dir /a-d /s " | ||
| - | attrib -r -s -h " | ||
| - | del /S /F /Q " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | set token= | ||
| - | for %%# in ( | ||
| - | %ProgramData%\Microsoft\OfficeSoftwareProtectionPlatform\ | ||
| - | ) do ( | ||
| - | |||
| - | if %1==check ( | ||
| - | if exist %%# | ||
| - | ) | ||
| - | |||
| - | if %1==delete ( | ||
| - | if exist %%# ( | ||
| - | %nul% dir /a-d /s " | ||
| - | attrib -r -s -h " | ||
| - | del /S /F /Q " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | %psc% " | ||
| - | exit /b | ||
| - | |||
| - | :: Below code takes ownership of a volatile registry key and deletes it | ||
| - | :: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC\Volatile\PersistedSystemState | ||
| - | |||
| - | :regown: | ||
| - | $AssemblyBuilder = [AppDomain]:: | ||
| - | $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, | ||
| - | $TypeBuilder = $ModuleBuilder.DefineType(0) | ||
| - | |||
| - | $TypeBuilder.DefinePInvokeMethod(' | ||
| - | $TypeBuilder.CreateType():: | ||
| - | |||
| - | $SID = New-Object System.Security.Principal.SecurityIdentifier(' | ||
| - | $IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value | ||
| - | $Admin = New-Object System.Security.Principal.NTAccount($IDN) | ||
| - | |||
| - | $path = ' | ||
| - | $key = [Microsoft.Win32.RegistryKey]:: | ||
| - | |||
| - | $acl = $key.GetAccessControl() | ||
| - | $acl.SetOwner($Admin) | ||
| - | $key.SetAccessControl($acl) | ||
| - | |||
| - | $rule = New-Object System.Security.AccessControl.RegistryAccessRule($Admin," | ||
| - | $acl.SetAccessRule($rule) | ||
| - | $key.SetAccessControl($acl) | ||
| - | :regown: | ||
| - | |||
| - | : | ||
| - | |||
| - | : | ||
| - | @setlocal DisableDelayedExpansion | ||
| - | @echo off | ||
| - | |||
| - | :: To stage current edition while changing edition with CBS Upgrade Method, change 0 to 1 in below line | ||
| - | set _stg=0 | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | color 07 | ||
| - | title Change Windows Edition %masver% | ||
| - | |||
| - | set _args= | ||
| - | set _elev= | ||
| - | |||
| - | set _args=%* | ||
| - | if defined _args set _args=%_args:" | ||
| - | if defined _args ( | ||
| - | for %%A in (%_args%) do ( | ||
| - | if /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set psc=powershell.exe | ||
| - | set winbuild=1 | ||
| - | for /f " | ||
| - | |||
| - | set _NCS=1 | ||
| - | if %winbuild% LSS 10586 set _NCS=0 | ||
| - | if %winbuild% GEQ 10586 reg query " | ||
| - | |||
| - | if %_NCS% EQU 1 ( | ||
| - | for /F %%a in ('echo prompt $E ^| cmd') do set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) else ( | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | set " | ||
| - | if %~z0 GEQ 200000 (set " | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Fix special characters limitation in path name | ||
| - | |||
| - | set " | ||
| - | if " | ||
| - | |||
| - | set " | ||
| - | set " | ||
| - | |||
| - | set _PSarg=""" | ||
| - | |||
| - | set " | ||
| - | |||
| - | setlocal EnableDelayedExpansion | ||
| - | |||
| - | :: | ||
| - | |||
| - | cls | ||
| - | mode 98, 30 | ||
| - | |||
| - | echo: | ||
| - | echo Initializing... | ||
| - | echo: | ||
| - | call :dk_product | ||
| - | call : | ||
| - | |||
| - | :: 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% " | ||
| - | echo: | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Activation IDs | ||
| - | |||
| - | 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 : | ||
| - | |||
| - | if not defined osSKU ( | ||
| - | %eline% | ||
| - | echo SKU value was not detected properly. Aborting... | ||
| - | goto ced_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check Windows Edition | ||
| - | |||
| - | set osedition= | ||
| - | set dismedition= | ||
| - | set dismnotworking= | ||
| - | |||
| - | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $editionName = 0; [void]$TypeBuilder.CreateType():: | ||
| - | if %winbuild% GEQ 14393 for /f " | ||
| - | if " | ||
| - | |||
| - | if not defined osedition ( | ||
| - | for /f " | ||
| - | ) | ||
| - | |||
| - | :: 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 | ||
| - | |||
| - | for /f " | ||
| - | if not defined dismedition set dismnotworking=1 | ||
| - | |||
| - | if defined dismedition if not defined osedition set osedition=%dismedition% | ||
| - | |||
| - | if not defined osedition ( | ||
| - | %eline% | ||
| - | DISM /English /Online / | ||
| - | cmd /c exit /b !errorlevel! | ||
| - | echo DISM command failed [Error Code - 0x!=ExitCode!] | ||
| - | echo OS Edition was not detected properly. Aborting... | ||
| - | echo: | ||
| - | echo Check this page for help. %mas%troubleshoot | ||
| - | goto ced_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | set branch= | ||
| - | for /f " | ||
| - | |||
| - | :: Check PowerShell | ||
| - | |||
| - | %psc% $ExecutionContext.SessionState.LanguageMode %nul2% | find /i " | ||
| - | %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 | ||
| - | |||
| - | set _target= | ||
| - | set _dtarget= | ||
| - | set _ptarget= | ||
| - | set _ntarget= | ||
| - | set _wtarget= | ||
| - | |||
| - | if %winbuild% GEQ 10240 for /f " | ||
| - | if %winbuild% LSS 10240 for /f " | ||
| - | |||
| - | if %winbuild% GEQ 10240 if not exist " | ||
| - | call : | ||
| - | if /i " | ||
| - | set " | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 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 ( %_dtarget% %_ptarget% ) do if /i not " | ||
| - | echo " | ||
| - | ) | ||
| - | |||
| - | if defined _target ( | ||
| - | for %%# in (%_target%) do ( | ||
| - | echo %%# | findstr /i " | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if not defined _ntarget ( | ||
| - | %line% | ||
| - | echo: | ||
| - | if defined dismnotworking call :dk_color %Red% " | ||
| - | call :dk_color %Gray% " | ||
| - | echo Current Edition [%osedition% ^| %winbuild%] can not be changed to any other Edition. | ||
| - | %line% | ||
| - | goto ced_done | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :cedmenu2 | ||
| - | |||
| - | cls | ||
| - | 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%] [%winbuild%] to one of the following." | ||
| - | if defined dismnotworking ( | ||
| - | call :dk_color %_Yellow% "Note - DISM.exe is not responding." | ||
| - | if /i " | ||
| - | ) | ||
| - | %line% | ||
| - | echo: | ||
| - | |||
| - | for %%A in (%_ntarget%) do ( | ||
| - | set /a counter+=1 | ||
| - | echo [!counter!] | ||
| - | set targetedition!counter!=%%A | ||
| - | ) | ||
| - | |||
| - | %line% | ||
| - | echo: | ||
| - | echo [0] %_exitmsg% | ||
| - | echo: | ||
| - | call :dk_color %_Green% "Enter option number in keyboard, and press " | ||
| - | set /p inpt= | ||
| - | if " | ||
| - | if " | ||
| - | for /l %%i in (1, | ||
| - | set targetedition=!targetedition%inpt%! | ||
| - | if %verified%==0 goto cedmenu2 | ||
| - | |||
| - | :: | ||
| - | |||
| - | if %winbuild% LSS 10240 goto :cbsmethod | ||
| - | if exist " | ||
| - | |||
| - | cls | ||
| - | mode con cols=105 lines=32 | ||
| - | |||
| - | set key= | ||
| - | set _chan= | ||
| - | set _dismapi=0 | ||
| - | |||
| - | :: Check if DISM Api or slmgr.vbs is required for edition upgrade | ||
| - | |||
| - | if not exist " | ||
| - | set _dismapi=1 | ||
| - | ) | ||
| - | |||
| - | set " | ||
| - | |||
| - | call : | ||
| - | if defined targetSKU call : | ||
| - | if defined key if defined pkeychannel set _chan=%pkeychannel% | ||
| - | if not defined key call : | ||
| - | |||
| - | 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 | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Changing from Core to Non-Core & Changing editions in Windows build older than 17134 requires " | ||
| - | :: In other cases, editions can be changed instantly with "slmgr /ipk" | ||
| - | |||
| - | if %_dismapi%==1 ( | ||
| - | mode con cols=105 lines=40 | ||
| - | %psc% " | ||
| - | %eline% | ||
| - | echo Pending Reboot flags found. | ||
| - | echo: | ||
| - | echo Restart the system and try again. | ||
| - | goto ced_done | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | cls | ||
| - | %line% | ||
| - | echo: | ||
| - | if defined dismnotworking call :dk_color %_Yellow% " | ||
| - | echo Changing the Current Edition [%osedition%] %winbuild% to [%targetedition%] | ||
| - | echo: | ||
| - | |||
| - | if %_dismapi%==1 ( | ||
| - | call :dk_color %Green% " | ||
| - | echo: | ||
| - | echo - Save your work before continue, 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 SoftwareLicensingService where __CLASS=' | ||
| - | if %_wmic% EQU 0 %psc% " | ||
| - | 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 " | ||
| - | |||
| - | if !error_code! EQU 0 ( | ||
| - | call :dk_refresh | ||
| - | call :dk_color %Green% " | ||
| - | echo: | ||
| - | call :dk_color %Gray% " | ||
| - | ) else ( | ||
| - | call :dk_color %Red% " | ||
| - | echo Check this page for help. %mas%troubleshoot | ||
| - | ) | ||
| - | ) | ||
| - | |||
| - | if %_dismapi%==1 ( | ||
| - | echo: | ||
| - | echo Applying the DISM API method with %_chan% Key %key%. Please wait... | ||
| - | echo: | ||
| - | %psc% " | ||
| - | timeout /t 3 %nul1% | ||
| - | echo: | ||
| - | call :dk_color2 %Blue% "Check this page for help" %_Yellow% " %mas%change_edition_issues" | ||
| - | ) | ||
| - | %line% | ||
| - | |||
| - | goto ced_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | :cbsmethod | ||
| - | |||
| - | cls | ||
| - | mode con cols=105 lines=32 | ||
| - | %psc% "& | ||
| - | |||
| - | REM %psc% " | ||
| - | REM %eline% | ||
| - | REM echo Pending reboot flags found. | ||
| - | REM echo: | ||
| - | REM echo Restart the system and try again. | ||
| - | REM goto ced_done | ||
| - | REM ) | ||
| - | |||
| - | echo: | ||
| - | if defined dismnotworking call :dk_color %_Yellow% "Note - DISM.exe is not responding." | ||
| - | echo Changing the Current Edition [%osedition%] %winbuild% to [%targetedition%] | ||
| - | echo: | ||
| - | call :dk_color %Blue% " | ||
| - | echo: | ||
| - | choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : " | ||
| - | if %errorlevel%==1 exit /b | ||
| - | |||
| - | echo: | ||
| - | echo Initializing... | ||
| - | echo: | ||
| - | |||
| - | if %_stg%==0 (set stage=) else (set stage=-StageCurrent) | ||
| - | %psc% " | ||
| - | echo: | ||
| - | call :dk_color %Blue% " | ||
| - | echo Check this page for help. %mas%troubleshoot | ||
| - | %line% | ||
| - | |||
| - | goto ced_done | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | cls | ||
| - | mode con cols=105 lines=32 | ||
| - | %psc% "& | ||
| - | |||
| - | set key= | ||
| - | set _chan= | ||
| - | set " | ||
| - | |||
| - | call : | ||
| - | if defined targetSKU call : | ||
| - | if defined key if defined pkeychannel set _chan=%pkeychannel% | ||
| - | if not defined key call : | ||
| - | |||
| - | 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 | ||
| - | ) | ||
| - | |||
| - | :: | ||
| - | |||
| - | %psc% " | ||
| - | %eline% | ||
| - | echo Pending reboot flags found. | ||
| - | echo: | ||
| - | echo Restart the system and try again. | ||
| - | goto ced_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%] | ||
| - | echo: | ||
| - | echo Applying the command with %_chan% Key | ||
| - | echo DISM /online / | ||
| - | DISM /online / | ||
| - | |||
| - | call :dk_color %Blue% "You must restart the system at this stage." | ||
| - | echo Help: %mas%troubleshoot | ||
| - | |||
| - | :: | ||
| - | |||
| - | :ced_done | ||
| - | |||
| - | echo: | ||
| - | call :dk_color %_Yellow% "Press any key to %_exitmsg%..." | ||
| - | pause %nul1% | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Get Edition list | ||
| - | |||
| - | : | ||
| - | |||
| - | if %_wmic% EQU 1 set " | ||
| - | if %_wmic% EQU 0 set " | ||
| - | %chkedi% do ( | ||
| - | call if exist %Systemdrive%\Windows\System32\spp\tokens\skus\%%a ( | ||
| - | call set " | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: Check pending reboot flags | ||
| - | |||
| - | : | ||
| - | function Test-PendingReboot | ||
| - | { | ||
| - | if (Test-Path -Path " | ||
| - | if (Get-ChildItem " | ||
| - | if (Get-Item " | ||
| - | try { | ||
| - | $util = [wmiclass]" | ||
| - | | ||
| - | | ||
| - | | ||
| - | } | ||
| - | | ||
| - | |||
| - | | ||
| - | } | ||
| - | Test-PendingReboot | ||
| - | : | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | for %%# in (pkeyhelper.dll) do @if " | ||
| - | for %%# in (%keyflow%) do ( | ||
| - | call :dk_pkey %targetSKU% ' | ||
| - | if defined pkey call : | ||
| - | if /i [!pkeychannel!]==[%%# | ||
| - | set key=!pkey! | ||
| - | exit /b | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | : | ||
| - | |||
| - | set k=%1 | ||
| - | set targetSKU= | ||
| - | for %%# in (pkeyhelper.dll) do @if " | ||
| - | |||
| - | call : | ||
| - | |||
| - | set d1=%ref% [void]$TypeBuilder.DefinePInvokeMethod(' | ||
| - | set d1=%d1% $out = 0; [void]$TypeBuilder.CreateType():: | ||
| - | |||
| - | for /f %%a in (' | ||
| - | if " | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: https:// | ||
| - | |||
| - | :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] = ' | ||
| - | } | ||
| - | |||
| - | return "< | ||
| - | } | ||
| - | |||
| - | function Get-SxsName { | ||
| - | param ( | ||
| - | [String]$PackageName | ||
| - | ) | ||
| - | |||
| - | $name = ($PackageName -replace ' | ||
| - | |||
| - | if($name.Length -gt 40) { | ||
| - | $name = ($name[0..18] -join '' | ||
| - | } | ||
| - | |||
| - | return $name.ToLower() | ||
| - | } | ||
| - | |||
| - | function Find-EditionXmlInSxs { | ||
| - | param ( | ||
| - | [String]$Edition | ||
| - | ) | ||
| - | |||
| - | $candidates = @($Edition, ' | ||
| - | $winSxs = $Env: | ||
| - | $allInSxs = Get-ChildItem -Path $winSxs | select Name | ||
| - | |||
| - | foreach($candidate in $candidates) { | ||
| - | $name = Get-SxsName -PackageName " | ||
| - | $packages = $allInSxs | where name -Match (' | ||
| - | |||
| - | if($packages.Length -eq 0) { | ||
| - | continue | ||
| - | } | ||
| - | |||
| - | $package = $packages[-1].Name | ||
| - | $testPath = $winSxs + " | ||
| - | |||
| - | if(Test-Path -Path $testPath -PathType Leaf) { | ||
| - | return $testPath | ||
| - | } | ||
| - | } | ||
| - | |||
| - | return $null | ||
| - | } | ||
| - | |||
| - | function Find-EditionXml { | ||
| - | param ( | ||
| - | [String]$Edition | ||
| - | ) | ||
| - | |||
| - | $servicingEditions = $Env: | ||
| - | $editionXml = $Edition + ' | ||
| - | |||
| - | $editionXmlInServicing = $servicingEditions + ' | ||
| - | |||
| - | if(Test-Path -Path $editionXmlInServicing -PathType Leaf) { | ||
| - | return $editionXmlInServicing | ||
| - | } | ||
| - | |||
| - | return Find-EditionXmlInSxs -Edition $Edition | ||
| - | } | ||
| - | |||
| - | function Write-UpgradeCandidates { | ||
| - | param ( | ||
| - | [HashTable]$InstallCandidates | ||
| - | ) | ||
| - | |||
| - | $editionCount = 0 | ||
| - | Write-Host ' | ||
| - | foreach($candidate in $InstallCandidates.Keys) { | ||
| - | Write-Host " | ||
| - | $editionCount++ | ||
| - | } | ||
| - | |||
| - | if($editionCount -eq 0) { | ||
| - | Write-Host '(no editions are available)' | ||
| - | } | ||
| - | } | ||
| - | |||
| - | function Write-UpgradeXml { | ||
| - | param ( | ||
| - | [Array]$RemovalCandidates, | ||
| - | [Array]$InstallCandidates, | ||
| - | [Boolean]$Stage | ||
| - | ) | ||
| - | |||
| - | $removeAction = ' | ||
| - | if($Stage) { | ||
| - | $removeAction = ' | ||
| - | } | ||
| - | |||
| - | 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: | ||
| - | } | ||
| - | |||
| - | $version = ' | ||
| - | $getTargetsParam = $GetTargetEditions.IsPresent | ||
| - | $stageCurrentParam = $StageCurrent.IsPresent | ||
| - | |||
| - | if($SetEdition -eq '' | ||
| - | Write-Usage | ||
| - | Exit 1 | ||
| - | } | ||
| - | |||
| - | $removalCandidates = @(); | ||
| - | $installCandidates = @{}; | ||
| - | |||
| - | $packages = Get-ChildItem -Path ' | ||
| - | foreach($package in $packages) { | ||
| - | $state = (Get-ItemProperty -Path " | ||
| - | $packageName = ($package.Name -split ' | ||
| - | $packageEdition = (($packageName -split ' | ||
| - | |||
| - | 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 `" | ||
| - | Exit 1 | ||
| - | } | ||
| - | |||
| - | $xmlPath = $Env: | ||
| - | |||
| - | Write-UpgradeXml -RemovalCandidates $removalCandidates ` | ||
| - | -InstallCandidates $installCandidates[$SetEdition] ` | ||
| - | -Stage $stageCurrentParam > | ||
| - | |||
| - | $editionXml = Find-EditionXml -Edition $SetEdition | ||
| - | if($null -eq $editionXml) { | ||
| - | Write-Warning ' | ||
| - | } | ||
| - | |||
| - | Write-Host ' | ||
| - | |||
| - | DISM.EXE /English /NoRestart /Online / | ||
| - | $dismError = $LASTEXITCODE | ||
| - | |||
| - | Remove-Item -Path $xmlPath -Force | ||
| - | |||
| - | if(($dismError -ne 0) -and ($dismError -ne 3010)) { | ||
| - | Write-Error ' | ||
| - | Exit $dismError | ||
| - | } | ||
| - | |||
| - | if($null -ne $editionXml) { | ||
| - | $destination = $Env: | ||
| - | Copy-Item -Path $editionXml -Destination $destination | ||
| - | |||
| - | DISM.EXE /English /NoRestart /Online / | ||
| - | $dismError = $LASTEXITCODE | ||
| - | |||
| - | if(($dismError -ne 0) -and ($dismError -ne 3010)) { | ||
| - | Write-Error ' | ||
| - | 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]:: | ||
| - | $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, | ||
| - | $TB = $ModuleBuilder.DefineType(0) | ||
| - | |||
| - | [void]$TB.DefinePInvokeMethod(' | ||
| - | [void]$TB.DefinePInvokeMethod(' | ||
| - | [void]$TB.DefinePInvokeMethod(' | ||
| - | $Dism = $TB.CreateType() | ||
| - | |||
| - | [void]$Dism:: | ||
| - | $Session = 0 | ||
| - | [void]$Dism:: | ||
| - | if (!$Dism:: | ||
| - | Restart-Computer | ||
| - | } | ||
| - | :dismapi:] | ||
| - | |||
| - | :: | ||
| - | |||
| - | :: 1st column = Generic Retail/ | ||
| - | :: 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 | ||
| - | |||
| - | : | ||
| - | |||
| - | if %winbuild% GTR 17763 exit /b | ||
| - | if exist " | ||
| - | |||
| - | set h= | ||
| - | for %%# in ( | ||
| - | XGV%h%PP-NM%h%H47-7TT%h%HJ-W%h%3FW7-8HV%h%2C__OEM: | ||
| - | 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: | ||
| - | 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: | ||
| - | 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: | ||
| - | FWN%h%7H-PF%h%93Q-4GG%h%P8-M%h%8RF3-MDW%h%WW__OEM: | ||
| - | 2DB%h%W3-N2%h%PJG-MVH%h%W3-G%h%7TDK-9HK%h%R4__Volume: | ||
| - | NTX%h%6B-BR%h%YC2-K67%h%86-F%h%6MVQ-M7V%h%2X__Volume: | ||
| - | 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: | ||
| - | 46P%h%N6-R9%h%BK9-CVH%h%KB-H%h%WQ9V-MBJ%h%Y8__Volume: | ||
| - | 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: | ||
| - | CB7%h%KF-BW%h%N84-R7R%h%2Y-7%h%93K2-8XD%h%DG_Volume: | ||
| - | JCK%h%RF-N3%h%7P4-C2D%h%82-9%h%YXRT-4M6%h%3B_Volume: | ||
| - | QN4%h%C6-GB%h%JD2-FB4%h%22-G%h%HWJK-GJG%h%2R_Volume: | ||
| - | VP3%h%4G-4N%h%PPG-79J%h%TQ-8%h%64T4-R3M%h%QX_Volume: | ||
| - | 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: | ||
| - | PTX%h%N8-JF%h%HJM-4WC%h%78-M%h%PCBR-9W4%h%KR_Volume: | ||
| - | ) do ( | ||
| - | for /f " | ||
| - | |||
| - | if not defined key ( | ||
| - | set 4th=%%D | ||
| - | if not defined 4th ( | ||
| - | set " | ||
| - | ) else ( | ||
| - | echo " | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | ) | ||
| - | exit /b | ||
| - | |||
| - | : | ||
| - | |||
| - | :MASend | ||
| - | echo: | ||
| - | if defined _MASunattended timeout /t 2 & exit /b | ||
| - | echo Press any key to exit... | ||
| - | pause >nul | ||
| - | exit /b | ||
| - | |||
| - | :: | ||
| - | :: Leave empty line below | ||
| - | |||
| - | </ | ||
| - | Open Powershell and run. | ||
| - | |||
technical/msactivation.1728764561.txt.gz · Last modified: by wikiadmin
