Microsoft Activation Script Guide
Microsoft Activation Script Guide
@set masver=3.7
@setlocal DisableDelayedExpansion
@echo off
::============================================================================
::
:: Homepage: mass()grave(dot)dev
:: Email: [Link]@[Link]
::
::============================================================================
::=================================================================================
=======================================================
setlocal EnableExtensions
setlocal DisableDelayedExpansion
set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
set "SysPath=%SystemRoot%\System32"
set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot
%\System32\WindowsPowerShell\v1.0\"
if exist "%SystemRoot%\Sysnative\[Link]" (
set "SysPath=%SystemRoot%\Sysnative"
set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;
%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%"
)
set "ComSpec=%SysPath%\[Link]"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\
WindowsPowerShell\v1.0\Modules"
set re1=
set re2=
set "_cmdf=%~f0"
for %%# in (%*) do (
if /i "%%#"=="re1" set re1=1
if /i "%%#"=="re2" set re2=1
if /i "%%#"=="-qedit" (set re1=1&set re2=1)
)
:: Re-launch the script with x64 process if it was initiated by x86 process on x64
bit Windows
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows
:: Re-launch the script with ARM32 process if it was initiated by x64 process on
ARM64 Windows
::=================================================================================
=======================================================
set "blank="
set "mas=ht%blank%tps%blank%://mass%blank%[Link]/"
set "github=ht%blank%tps%blank%://[Link]/massgra%blank%vel/Micro%blank%soft-
Acti%blank%vation-Scripts"
set "selfgit=ht%blank%tps%blank%://[Link]%blank%[Link]/massg%blank%rave/Micr
%blank%osoft-Act%blank%ivation-Scripts"
:: Check if Null service is working, it's important for the batch script
pushd "%~dp0"
>nul findstr /v "$" "%~nx0" && (
echo:
echo Error - Script either has LF line ending issue or an empty line at the end of
the script is missing.
echo:
echo:
echo Check this webpage for help - %mas%troubleshoot
echo:
echo:
ping [Link] -n 20 >nul
popd
exit /b
)
popd
::=================================================================================
=======================================================
cls
color 07
title Microsoft_Activation_Scripts %masver%
set _args=
set _elev=
set _unattended=0
set _args=%*
if defined _args set _args=%_args:"=%
if defined _args set _args=%_args:re1=%
if defined _args set _args=%_args:re2=%
if defined _args (
for %%A in (%_args%) do (
if /i "%%A"=="-el" set _elev=1
)
)
if defined _args echo "%_args%" | find /i "/" >nul && set _unattended=1
::=================================================================================
=======================================================
set "nul1=1>nul"
set "nul2=2>nul"
set "nul6=2^>nul"
set "nul=>nul 2>&1"
call :dk_setvar
if %winbuild% EQU 1 (
%eline%
echo Failed to detect Windows build number.
echo:
setlocal EnableDelayedExpansion
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto dk_done
)
if exist "%Systemdrive%\Users\WDAGUtilityAccount" (
sc query gcs | find /i "RUNNING" %nul% && (
%eline%
echo Windows Sandbox detected; activation is not supported.
echo The script cannot run due to missing licensing components. Aborting...
echo:
goto dk_done
)
)
::=================================================================================
=======================================================
set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"
set "_batf=%~f0"
set "_batp=%_batf:'=''%"
set "_ttemp=%userprofile%\AppData\Local\Temp"
setlocal EnableDelayedExpansion
::=================================================================================
=======================================================
::=================================================================================
=======================================================
%nul1% fltmc || (
if not defined _elev %psc% "start [Link] -arg '/c \"!_PSarg!\"' -verb runas" &&
exit /b
%eline%
echo This script needs admin rights.
echo Right click on this script and select 'Run as administrator'.
goto dk_done
)
::=================================================================================
=======================================================
:: Check PowerShell
if /i not "%tstresult%"=="FullLanguage" (
%eline%
for /f "delims=" %%a in ('%psc% "$[Link]"
%nul6%') do (set tstresult2=%%a)
echo Test 1 - %tstresult%
echo Test 2 - !tstresult2!
echo:
REM check for Mal-ware that may cause issues with Powershell
if /i "!tstresult2!"=="FullLanguage" (
cmd /c "%psc% ""try {[[Link]]::[Link]();
[[Link]]::Sqrt(144)} catch {Exit 3}""" %nul%
if !errorlevel!==3 (
echo Windows Powershell failed to load .NET command. Aborting...
echo:
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-
place_repair_upgrade"
goto dk_done
)
)
if /i "!tstresult2!"=="FullLanguage" (
echo:
echo Your antivirus software might be blocking the script.
echo:
sc query sense | find /i "RUNNING" %nul% && (
echo Installed Antivirus - Microsoft Defender for Endpoint
)
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class
AntiVirusProduct; $n = @(); foreach ($i in $av) { $n += $[Link] }; if ($n) {
Write-Host ('Installed Antivirus - ' + ($n -join ', '))}"""
)
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto dk_done
)
::=================================================================================
=======================================================
if defined terminal (
set lines=0
for /f "skip=3 tokens=* delims=" %%A in ('mode con') do if "!lines!"=="0" (
for %%B in (%%A) do set lines=%%B
)
if !lines! GEQ 100 set terminal=
)
set resetQE=1
reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set resetQE=0
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f %nul1%
if defined terminal (
start [Link] "!_batf!" %_args% -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
) else if %resetQE% EQU 1 (
start [Link] /c ""!_batf!" %_args% -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f %nul1%
exit /b
)
:skipQE
::=================================================================================
=======================================================
set -=
set old=
set pingp=
set upver=%masver:.=%
for %%A in (
activ%-%[Link]
mass%-%[Link]
) do if not defined pingp (
for /f "delims=[] tokens=2" %%B in ('ping -n 1 %%A') do (
if not "%%B"=="" (set old=1& set pingp=1)
for /f "delims=[] tokens=2" %%C in ('ping -n 1 updatecheck%upver%.%%A') do (
if not "%%C"=="" set old=
)
)
)
if defined old (
echo ________________________________________________
%eline%
echo Your version of MAS [%masver%] is outdated.
echo ________________________________________________
echo:
if not %_unattended%==1 (
echo [1] Get Latest MAS
echo [0] Continue Anyway
echo:
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
choice /C:10 /N
if !errorlevel!==2 rem
if !errorlevel!==1 (start %selfgit% & start %github% & start %mas% & exit /b)
)
)
::=================================================================================
=======================================================
set _elev=
if defined _args echo "%_args%" | find /i "/S" %nul% && (set "_silent=%nul%") ||
(set _silent=)
if defined _args echo "%_args%" | find /i "/" %nul% && (
echo "%_args%" | find /i "/HWID" %nul% && (setlocal & cls & (call :HWIDActivation
%_args% %_silent%) & endlocal)
echo "%_args%" | find /i "/KMS38" %nul% && (setlocal & cls &
(call :KMS38Activation %_args% %_silent%) & endlocal)
echo "%_args%" | find /i "/Z-" %nul% && (setlocal & cls &
(call :TSforgeActivation %_args% %_silent%) & endlocal)
echo "%_args%" | find /i "/K-" %nul% && (setlocal & cls & (call :KMSActivation
%_args% %_silent%) & endlocal)
echo "%_args%" | find /i "/Ohook" %nul% && (setlocal & cls &
(call :OhookActivation %_args% %_silent%) & endlocal)
exit /b
)
::=================================================================================
=======================================================
setlocal DisableDelayedExpansion
set desktop=
for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\
CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b"
if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $
([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a"
set "_pdesk=%desktop:'=''%"
setlocal EnableDelayedExpansion
::=================================================================================
=======================================================
:MainMenu
cls
color 07
title Microsoft %blank%Activation %blank%Scripts %masver%
if not defined terminal mode 76, 34
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum"
set _serexist=1
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" set
_evalexist=1
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-
EnterpriseS*dition~*.mum" set _ltscexist=1
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-
EnterpriseSN*dition~*.mum" set _ltscnexist=1
if %winbuild% GEQ 10240 if not defined _serexist if not defined _evalexist set
_hwidgo=1
if %winbuild% GTR 14393 if defined _ltscnexist set _hwidgo=
if not defined _hwidgo set _tsforgego=1
set _ohookgo=1
if %winbuild% GEQ 9200 (
if %winbuild% LSS 10240 set _ohookgo=
if %winbuild% GEQ 19041 if %winbuild% LEQ 19045 set _ohookgo=
if defined _serexist set _ohookgo=
if defined _evalexist set _ohookgo=
if defined _ltscexist set _ohookgo=
reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v
ProductReleaseIds %nul2% | find /i "O365" %nul% && set _ohookgo=1
reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\ClickToRun\Configuration /v
ProductReleaseIds %nul2% | find /i "O365" %nul% && set _ohookgo=1
)
if not defined _ohookgo set _tsforgego=1
echo:
echo:
echo:
if %winbuild% GEQ 10240 if %winbuild% LEQ 19045 if not defined _serexist if not
defined _evalexist if not defined _ltscexist (
call :dk_color2 %_Green% " Tip:" %_White% " To activate ESU updates after W10
EOL, use TSforge option."
)
echo:
echo: ______________________________________________________________
echo:
echo: Activation Methods:
echo:
if defined _hwidgo (
call :dk_color3 %_White% " [1] " %_Green% "HWID" %_White% "
- Windows"
) else (
echo: [1] HWID - Windows
)
if defined _ohookgo (
call :dk_color3 %_White% " [2] " %_Green% "Ohook" %_White% "
- Office"
) else (
echo: [2] Ohook - Office
)
if defined _tsforgego (
call :dk_color3 %_White% " [3] " %_Green% "TSforge" %_White% "
- Windows / Office / ESU"
) else (
echo: [3] TSforge - Windows / Office / ESU
)
echo: [4] KMS38 - Windows
echo: [5] Online KMS - Windows / Office
echo: __________________________________________________
echo:
echo: [6] Check Activation Status
echo: [7] Change Windows Edition
echo: [8] Change Office Edition
echo: __________________________________________________
echo:
echo: [9] Troubleshoot
echo: [E] Extras
echo: [H] Help
echo: [0] Exit
echo: ______________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,3...E,H,0] :"
choice /C:123456789EH0 /N
set _erl=%errorlevel%
if %_erl%==12 exit /b
if %_erl%==11 (start %selfgit% & start %github% & start %mas%troubleshoot &
goto :MainMenu)
if %_erl%==10 goto :Extras
if %_erl%==9 setlocal & call :troubleshoot & cls & endlocal & goto :MainMenu
if %_erl%==8 setlocal & call :change_offedition & cls & endlocal & goto :MainMenu
if %_erl%==7 setlocal & call :change_winedition & cls & endlocal & goto :MainMenu
if %_erl%==6 setlocal & call :check_actstatus & cls & endlocal & goto :MainMenu
if %_erl%==5 setlocal & call :KMSActivation & cls & endlocal & goto :MainMenu
if %_erl%==4 setlocal & call :KMS38Activation & cls & endlocal & goto :MainMenu
if %_erl%==3 setlocal & call :TSforgeActivation & cls & endlocal & goto :MainMenu
if %_erl%==2 setlocal & call :OhookActivation & cls & endlocal & goto :MainMenu
if %_erl%==1 setlocal & call :HWIDActivation & cls & endlocal & goto :MainMenu
goto :MainMenu
:dk_color3
if %_NCS% EQU 1 (
echo %esc%[%~1%~2%esc%[%~3%~4%esc%[%~5%~6%esc%[0m
) else (
%psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore
'%5' '%6'-NoNewline; write-host -back '%7' -fore '%8' '%9'
)
exit /b
::=================================================================================
=======================================================
:Extras
cls
title Extras
if not defined terminal mode 76, 30
echo:
echo:
echo:
echo:
echo:
echo: ______________________________________________________
echo:
echo: [1] Extract $OEM$ Folder
echo:
echo: [2] Download Genuine Windows / Office
echo: ____________________________________________
echo:
echo: [0] Go to Main Menu
echo: ______________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,0] :"
choice /C:120 /N
set _erl=%errorlevel%
::=================================================================================
=======================================================
:Extract$OEM$
cls
title Extract $OEM$ Folder
if not defined terminal mode 76, 30
if exist "!desktop!\$OEM$\" (
%eline%
echo $OEM$ folder already exists on the Desktop.
echo _____________________________________________________
echo:
call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..."
choice /c 0 /n
goto :Extras
)
:Extract$OEM$2
cls
title Extract $OEM$ Folder
if not defined terminal mode 78, 30
echo:
echo:
echo:
echo:
echo: Extract $OEM$ folder on the desktop
echo: ____________________________________________________________
echo:
echo: [1] HWID [Windows]
echo: [2] Ohook [Office]
echo: [3] TSforge [Windows / ESU / Office]
echo: [4] KMS38 [Windows]
echo: [5] Online KMS [Windows / Office]
echo:
echo: [6] HWID [Windows] ^+ Ohook [Office]
echo: [7] HWID [Windows] ^+ Ohook [Office] ^+ TSforge [ESU]
echo: [8] TSforge [Windows] ^+ Online KMS [Office]
echo:
call :dk_color2 %_White% " [R] " %_Green% "ReadMe"
echo: [0] Go Back
echo: ____________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard :"
choice /C:12345678R0 /N
set _erl=%errorlevel%
if %_erl%==10 goto:Extras
if %_erl%==9 start %mas%oem-folder &goto:Extract$OEM$2
if %_erl%==8 (set "_oem=TSforge [Windows] + Online KMS [Office]" & set "para=/Z-
Windows /K-Office" &goto:Extract$OEM$3)
if %_erl%==7 (set "_oem=HWID [Windows] + Ohook [Office] + TSforge [ESU]" & set
"para=/HWID /Ohook /Z-ESU" &goto:Extract$OEM$3)
if %_erl%==6 (set "_oem=HWID [Windows] + Ohook [Office]" & set "para=/HWID /Ohook"
&goto:Extract$OEM$3)
if %_erl%==5 (set "_oem=Online KMS" & set "para=/K-WindowsOffice"
&goto:Extract$OEM$3)
if %_erl%==4 (set "_oem=KMS38" & set "para=/KMS38" &goto:Extract$OEM$3)
if %_erl%==3 (set "_oem=TSforge" & set "para=/Z-WindowsESUOffice"
&goto:Extract$OEM$3)
if %_erl%==2 (set "_oem=Ohook" & set "para=/Ohook" &goto:Extract$OEM$3)
if %_erl%==1 (set "_oem=HWID" & set "para=/HWID" &goto:Extract$OEM$3)
goto :Extract$OEM$2
::=================================================================================
=======================================================
:Extract$OEM$3
cls
set "_dir=!desktop!\$OEM$\$$\Setup\Scripts"
md "!_dir!\"
:: Add random data on top to create unique file which helps in avoiding AV's
detections
%psc% "$f=[[Link]]::ReadAllText('!_batp!'); [[Link]]::WriteAllText('!
_pdesk!\$OEM$\$$\Setup\Scripts\MAS_AIO.cmd', '@::RANDOM-' + [Guid]::NewGuid().Guid
+ [Environment]::NewLine + $f, [[Link]]::ASCII)"
(
echo @echo off
echo fltmc ^>nul ^|^| exit /b
echo call "%%~dp0MAS_AIO.cmd" %para%
echo cd \
echo ^(goto^) 2^>nul ^& ^(if "%%~dp0"=="%%SystemRoot%%\Setup\Scripts\" rd /s /q "%
%~dp0"^)
)>"!_dir!\[Link]"
set _error=
if not exist "!_dir!\MAS_AIO.cmd" set _error=1
if not exist "!_dir!\[Link]" set _error=1
if defined _error (
%eline%
echo The script failed to create the $OEM$ folder.
if exist "!desktop!\$OEM$\.*" rmdir /s /q "!desktop!\$OEM$\" %nul%
) else (
echo:
call :dk_color %Blue% "%_oem%"
call :dk_color %Green% "$OEM$ folder was successfully created on your Desktop."
)
echo "%_oem%" | find /i "KMS38" 1>nul && (
echo:
echo To KMS38 activate Server Cor/Acor editions ^(No GUI Versions^),
echo Check this page %mas%oem-folder
)
echo ___________________________________________________________________
echo:
call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..."
choice /c 0 /n
goto Extras
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:HWIDActivation
:: 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 "%%A"=="/HWID" set _act=1
if /i "%%A"=="/HWID-NoEditionChange" set _NoEditionChange=1
if /i "%%A"=="-el" set _elev=1
)
)
for %%A in (%_act% %_NoEditionChange%) do (if "%%A"=="1" set _unattended=1)
::=================================================================================
=======================================================
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
%eline%
echo HWID Activation is not supported on Windows Server.
call :dk_color %Blue% "Use TSforge activation option from the main menu."
goto dk_done
)
setlocal EnableDelayedExpansion
::=================================================================================
=======================================================
cls
if not defined terminal (
mode 110, 34
if exist "%SysPath%\spp\store_test\" mode 134, 34
)
title HWID Activation %masver%
echo:
echo Initializing...
call :dk_chkmal
for %%# in (
[Link]
[Link]
) do (
if not exist %SysPath%\%%# (
%eline%
echo [%SysPath%\%%#] file is missing, aborting...
echo:
if not defined results (
call :dk_color %Blue% "Go back to Main Menu, select Troubleshoot and run DISM
Restore and SFC Scan options."
call :dk_color %Blue% "After that, restart system and try activation again."
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
goto dk_done
)
)
::=================================================================================
=======================================================
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_ckeckwmic
call :dk_checksku
call :dk_product
call :dk_sppissue
::=================================================================================
=======================================================
call :dk_checkperm
if defined _perm (
cls
echo
___________________________________________________________________________________
________
echo:
call :dk_color2 %_White% " " %Green% "%winos% is already permanently
activated."
echo
___________________________________________________________________________________
________
if %_unattended%==1 goto dk_done
echo:
choice /C:10 /N /M "> [1] Activate Anyway [0] %_exitmsg% : "
if errorlevel 2 exit /b
)
cls
::=================================================================================
=======================================================
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-*EvalEdition~*.mum" (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% |
find /i "Eval" %nul1% && (
%eline%
echo [%winos% ^| %winbuild%]
echo:
echo Evaluation editions cannot be activated outside of their evaluation period.
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset
evaluation period."
echo:
set fixes=%fixes% %mas%evaluation_editions
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%evaluation_editions"
goto dk_done
)
)
::=================================================================================
=======================================================
set error=
cls
echo:
call :dk_showosinfo
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
if defined _int (
echo Checking Internet Connection [Connected%ping_f%]
) else (
set error=1
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
call :dk_color %Blue% "Internet is required for HWID activation."
)
::=================================================================================
=======================================================
call :dk_errorcheck
::=================================================================================
=======================================================
:: Detect Key
set key=
set altkey=
set changekey=
set altapplist=
set altedition=
set notworking=
::=================================================================================
=======================================================
:: Install key
echo:
if defined changekey (
call :dk_color %Blue% "[%altedition%] edition product key will be used to enable
HWID activation."
echo:
)
if defined winsub (
call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] detected. Script will
activate base edition [SKU ID-%regSKU%]."
echo:
)
set generickey=1
call :dk_inskey "[%key%]"
::=================================================================================
=======================================================
set regionchange=1
for %%# in (US CN IN BR DE JP GB FR MX ID IT PK TR KR CA ES AU NG VN PL PH NL EG AR
TH CO SA TW MY CL) do if /i "%name%"=="%%#" set regionchange=
if defined regionchange (
%psc% "Set-WinHomeLocation -GeoId 244" %nul%
if !errorlevel! EQU 0 (
echo Changing Windows Region To USA [Successful] [Script will change it
back]
) else (
call :dk_color %Red% "Changing Windows Region To USA [Failed]"
)
)
::=================================================================================
=========================================================
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
if not exist "%tdir%\" md "%tdir%\" %nul%
%_xmlexist% (
set error=1
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
call :dk_color %Gray% "Installing [Link] [Failed with ClipSVC
service restart, wait...]"
)
)
set rebuildinfo=
%_xmlexist% (
set error=1
set rebuildinfo=1
call :dk_color %Red% "Installing [Link] [Failed With clipup -
v -o]"
)
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*.xml" (
set error=1
set rebuildinfo=1
call :dk_color %Red% "Checking Ticket Migration [Failed]"
)
::=================================================================================
=========================================================
call :dk_product
echo:
echo Activating...
call :dk_act
call :dk_checkperm
if defined _perm (
echo:
call :dk_color %Green% "%winos% is permanently activated with a digital license."
goto :dl_final
)
::=================================================================================
=========================================================
set "_ident=HKU\S-1-5-19\SOFTWARE\Microsoft\IdentityCRL"
::=================================================================================
=========================================================
:: Extended licensing servers tests incase error not found and activation failed
for %%# in (
[Link]/v7.0/licenses/content
[Link]/ppsecure/[Link]
[Link]/v7.0/users/me/orders
) do if not defined resfail (
%psc% "try { !tls! irm [Link] -Method POST } catch { if ($_.[Link]
-eq $null) { Write-Host """"[%%#] $($_.[Link])"""" -ForegroundColor Red
-BackgroundColor Black; exit 3 } }"
if !errorlevel!==3 set resfail=1
)
)
if defined resfail (
set error=1
for %%# in (
[Link]
[Link]
[Link]
[Link]
[Link]
) do (
findstr /i "%%#" "%SysPath%\drivers\etc\hosts" %nul1% && set "hosfail= [%%# Blocked
in Hosts]"
)
call :dk_color %Red% "Checking Licensing Servers [Failed to Connect]!
hosfail!"
echo:
set fixes=%fixes% %mas%licensing-servers-issue
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%licensing-
servers-issue"
echo:
)
::=================================================================================
=========================================================
set wcount=0
for %%G in (DependOnService Description DisplayName ErrorControl ImagePath
ObjectName Start Type ServiceSidType RequiredPrivileges FailureActions) do (
reg query HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v %%G %nul% || (set
wucorrupt=1&set /a wcount+=1)
)
if defined wucorrupt (
set error=1
call :dk_color %Red% "Checking Windows Update Registry [Corruption Found]"
if !wcount! GTR 2 (
call :dk_color %Red% "Windows seems to be infected with Mal%w%ware."
echo:
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal
%w%ware"
echo:
) else (
echo:
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have
used any tool to block updates, undo it."
echo:
)
) else (
%psc% "Start-Job { Start-Service wuauserv } | Wait-Job -Timeout 20 | Out-Null"
sc query wuauserv | find /i "RUNNING" %nul% || (
set error=1
set wuerror=1
sc start wuauserv %nul%
call :dk_color %Red% "Starting Windows Update Service [Failed] [!
errorlevel!]"
echo:
call :dk_color %Blue% "HWID activation needs working Windows updates, if you have
used any tool to block updates, undo it."
echo:
)
)
)
::=================================================================================
=========================================================
::=================================================================================
=========================================================
echo:
if defined _perm (
call :dk_color %Green% "%winos% is permanently activated with a digital license."
) else (
call :dk_color %Red% "Activation Failed %error_code%"
if defined notworking (
call :dk_color %Blue% "At the time of writing, HWID Activation is not supported for
this product."
call :dk_color %Blue% "Use TSforge activation option from the main menu instead."
) else (
if not defined error call :dk_color %Blue% "%_fixmsg%"
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
)
::=================================================================================
=======================================================
:dl_final
echo:
if defined regionchange (
%psc% "Set-WinHomeLocation -GeoId %nation%" %nul%
if !errorlevel! EQU 0 (
echo Restoring Windows Region [Successful]
) else (
call :dk_color %Red% "Restoring Windows Region [Failed] [%name% -
%nation%]"
)
)
REM if %osSKU%==175 call :dk_color %Red% "%winos% does not support activation on
non-azure platforms."
if defined _perm (
call :dk_reeval %nul%
)
goto :dk_done
::=================================================================================
=======================================================
:: Set variables
:dk_setvar
set ps=%SysPath%\WindowsPowerShell\v1.0\[Link]
set psc=%ps% -nop -c
set winbuild=1
for /f "tokens=2 delims=[]" %%G in ('ver') do for /f "tokens=2,3,4 delims=. " %%H
in ("%%~G") do set "winbuild=%%J"
set _NCS=1
if %winbuild% LSS 10586 set _NCS=0
if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 %nul2% | find /i "0x0"
%nul1% && (set _NCS=0)
:: Show OS info
:dk_showosinfo
call :dk_reflection
set osSKU=
set slcSKU=
set wmiSKU=
set regSKU=
set winsub=
:winsubstatus:
$DM = [AppDomain]::[Link](6,
1).DefineDynamicModule(4).DefineType(2)
[void]$[Link]('ClipGetSubscriptionStatus', '[Link]', 22, 1,
[Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
$m = [[Link]]
$p = $m::AllocHGlobal(12)
$r = $[Link]()::ClipGetSubscriptionStatus([ref]$p)
if ($r -eq 0) {
$enabled = $m::ReadInt32($p)
if ($enabled -ge 1) {
$state = $m::ReadInt32($p, 8)
if ($state -eq 1) {
"Subscription_is_activated."
}
}
}
:winsubstatus:
:dk_checkperm
:dk_refresh
:: Install Key
:dk_inskey
set generickey=
exit /b
:: Activation command
:dk_act
set error_code=
if %_wmic% EQU 1 wmic path %spp% where "ApplicationID='55c92734-d682-4d71-983e-
d6ec3f16059f' AND PartialProductKey IS NOT NULL AND LicenseDependsOn is NULL" call
Activate %nul%
if %_wmic% EQU 0 %psc% "try {$null=(([WMISEARCHER]'SELECT ID FROM %spp% WHERE
ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND PartialProductKey IS NOT
NULL AND LicenseDependsOn is NULL').Get()).Activate(); exit 0} catch { exit
$_.[Link] }" %nul%
set error_code=%errorlevel%
cmd /c exit /b %error_code%
if %error_code% NEQ 0 (set "error_code=[Error Code: 0x%=ExitCode%]") else (set
error_code=)
exit /b
:dk_actids
set allapps=
if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='%1') get ID /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT ID FROM %spp% WHERE ApplicationID=''%1''').Get()).ID ^| %%
{echo ('ID='+$_)}" %nul6%')"
%chkapp% do (if defined allapps (call set "allapps=!allapps! %%a") else (call set
"allapps=%%a"))
:: Check potential script crash issue when user manually installs way too many
licenses for Office (length limit in variable)
:dk_actid
set apps=
if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='%1' and PartialProductKey is not null) get ID /VALUE"
%nul6%')"
if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT ID FROM %spp% WHERE ApplicationID=''%1'' AND
PartialProductKey IS NOT NULL').Get()).ID ^| %% {echo ('ID='+$_)}" %nul6%')"
%chkapp% do (if defined apps (call set "apps=!apps! %%a") else (call set "apps=%
%a"))
exit /b
:dk_reeval
:: This key is left by the system in rearm process and sppsvc sometimes fails to
delete it, it causes issues in working of the Scheduled Tasks of SPP
:: Get Activation IDs from licensing files if not found through WMI
:getactivationid:
$folderPath = "$env:SysPath\spp\tokens\skus"
$files = Get-ChildItem -Path $folderPath -Recurse -Filter "*.xrm-ms"
$guids = @()
foreach ($file in $files) {
$content = Get-Content -Path $[Link] -Raw
$matches = [regex]::Matches($content, 'name="productSkuId">\{([0-9a-fA-F\-]
+)\}')
foreach ($match in $matches) {
$guids += $[Link][1].Value
}
}
$guids = $guids | Select-Object -Unique
$guidsString = $guids -join " "
$guidsString
:getactivationid:
:xrm:
function InstallLicenseFile($Lsc) {
try {
$null = $[Link]([[Link]]::ReadAllText($Lsc))
} catch {
$[Link]($_.[Link])
}
}
function InstallLicenseArr($Str) {
$a = $Str -split ';'
ForEach ($x in $a) {InstallLicenseFile "$x"}
}
function InstallLicenseDir($Loc) {
Get-ChildItem $Loc -Recurse -Filter *.xrm-ms | ForEach-Object
{InstallLicenseFile $_.FullName}
}
function ReinstallLicenses() {
$Paths = @("$env:SysPath\oem", "$env:SysPath\licensing", "$env:SysPath\spp\
tokens")
foreach ($Path in $Paths) {
if (Test-Path $Path) { InstallLicenseDir "$Path" }
}
}
:xrm:
:: Check [Link]
:dk_ckeckwmic
:dk_sppissue
echo:
%psc% "$job = Start-Job { (Get-WmiObject -Query 'SELECT * FROM %sps%').Version };
if (-not (Wait-Job $job -Timeout 30)) {write-host '%_slser% is not working
correctly. Check this webpage for help - %mas%troubleshoot'}"
exit /b
:: Get Product name (WMI/REG methods are not reliable in all conditions, hence
[Link] method is used)
:dk_product
set winos=
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 (set winos=%%s)
echo "%winos%" | find /i "Windows" %nul1% || (
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v ProductName %nul6%') do set "winos=%%b"
if %winbuild% GEQ 22000 (
set winos=!winos:Windows 10=Windows 11!
)
)
:dk_reflection
::=================================================================================
=======================================================
:dk_chkmal
set w=
set results=
if exist "%ProgramFiles%\KM%w%Spico" set pupfound= KM%w%Spico
if not defined pupfound (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
tasks" /f Path /s | find /i "AutoPico" %nul% && set pupfound= KM%w%Spico
)
set hcount=0
for %%# in ([Link] [Link] [Link] [Link]) do (
find /i "%%#" %SysPath%\drivers\etc\hosts %nul% && set /a hcount+=1)
if %hcount%==4 set "results=[Antivirus URLs are blocked in hosts]"
if not "%results%%pupfound%"=="" (
if defined pupfound call :dk_color %Gray% "Checking PUP Activators
[Found%pupfound%]"
if defined results call :dk_color %Red% "Checking Probable Mal%w%ware Infection..."
if defined results (call :dk_color %Red% "%results%"&set showfix=1)
echo:
set fixes=%fixes% %mas%remove_mal%w%ware
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%remove_mal
%w%ware"
echo:
)
:: Remove the scheduled task of R@1n-KMS (old version) that runs the activation
command every minute, as it leads to high CPU usage.
if exist %SysPath%\Tasks\R@1n-KMS (
for /f %%A in ('dir /b /a:-d %SysPath%\Tasks\R@1n-KMS %nul6%') do (schtasks /delete
/tn \R@1n-KMS\%%A /f %nul%)
)
exit /b
::=================================================================================
=======================================================
:dk_errorcheck
set showfix=
call :dk_chkmal
::==============================
:: Check Sandboxing
::==============================
if defined safeboot_option (
call :dk_color %Red% "Checking Boot Mode [%safeboot_option%]"
if not defined showfix (
echo:
call :dk_color %Blue% "Safe mode found. Reboot the system and run in normal mode."
echo:
)
set error=1
set showfix=1
)
::==============================
:: Check ImageState
:: [Link]
setup-states
if /i not "%imagestate%"=="IMAGE_STATE_COMPLETE" (
call :dk_color %Gray% "Checking Windows Setup State [%imagestate%]"
echo "%imagestate%" | find /i "RESEAL" %nul% && (
if not defined showfix (
echo:
call :dk_color %Blue% "You need to run it in normal mode in case you are running it
in Audit Mode."
echo:
)
set error=1
set showfix=1
)
echo "%imagestate%" | find /i "UNDEPLOYABLE" %nul% && (
if not defined showfix (
echo:
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "If the activation fails, do this - " %_Yellow% " %mas%in-
place_repair_upgrade"
echo:
)
)
)
::==============================
set serv_cor=
for %%# in (%_serv%) do (
set _regcorr=
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 _regcorr (
reg query HKLM\SYSTEM\CurrentControlSet\Services\%%# /v %%G %nul% || (set
_corrupt=1&set _regcorr=-RegistryError)
)
if defined serv_cor (
call :dk_color %Red% "Checking Corrupt Services [%serv_cor%]"
set error=1
set showfix=1
)
::==============================
set serv_ste=
for %%# in (%_serv%) do (
sc start %%# %nul%
if !errorlevel! EQU 1058 (if defined serv_ste (set "serv_ste=!serv_ste! %%#") else
(set "serv_ste=%%#"))
)
:: Change disabled services startup type to default
set serv_csts=
set serv_cste=
if defined serv_ste (
for %%# in (%serv_ste%) do (
if /i %%#==ClipSVC (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%
%#" /v "Start" /t REG_DWORD /d "3" /f %nul% & sc config %%# start= demand %nul%)
if /i %%#==wlidsvc sc config %%# start= demand %nul%
if /i %%#==sppsvc (reg add "HKLM\SYSTEM\CurrentControlSet\Services\%
%#" /v "Start" /t REG_DWORD /d "2" /f %nul% & sc config %%# start= delayed-auto
%nul%)
if /i %%#==SLsvc sc config %%# start= auto %nul%
if /i %%#==KeyIso sc config %%# start= demand %nul%
if /i %%#==LicenseManager sc config %%# start= demand %nul%
if /i %%#==Winmgmt sc config %%# start= auto %nul%
if !errorlevel!==0 (
if defined serv_csts (set "serv_csts=!serv_csts! %%#") else (set "serv_csts=%%#")
) else (
if defined serv_cste (set "serv_cste=!serv_cste! %%#") else (set "serv_cste=%%#")
)
)
)
if defined serv_cste (
call :dk_color %Red% "Enabling Disabled Services [Failed] [%serv_cste
%]"
set error=1
set showfix=1
)
::==============================
set serv_e=
for %%# in (%_serv%) do (
set errorcode=
set checkerror=
if defined serv_e (
call :dk_color %Red% "Starting Services [Failed] [%serv_e%]"
::==============================
:: Check WMI
set wmifailed=
if %_wmic% EQU 1 wmic path Win32_ComputerSystem get CreationClassName /value %nul2%
| find /i "computersystem" %nul1%
if %_wmic% EQU 0 %psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -
Property CreationClassName" %nul2% | find /i "computersystem" %nul1%
if defined wmifailed (
call :dk_color %Red% "Checking WMI [Not Working]"
::==============================
::==============================
set tokenstore=
if %winbuild% GEQ 7600 (
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\SoftwareProtectionPlatform" /v TokenStore %nul6%') do call set
"tokenstore=%%b"
if %winbuild% LSS 9200 set "tokenstore=%Systemdrive%\Windows\ServiceProfiles\
NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform"
::==============================
:: This code creates token folder only if it's missing and sets default permission
for it
if %winbuild% GEQ 7600 if not defined toerr if not exist "%tokenstore%\" (
if exist "%tokenstore%\" (
call :dk_color %Gray% "Checking SPP Token Folder [Not Found, Created
Now] [%tokenstore%\]"
) else (
call :dk_color %Red% "Checking SPP Token Folder [Not Found, Failed to
Create] [%tokenstore%\]"
if not defined showfix (
echo:
set fixes=%fixes% %mas%in-place_repair_upgrade
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%in-
place_repair_upgrade"
echo:
)
set error=1
set showfix=1
)
)
::==============================
:: This code checks if SPP has permission access to tokens folder and required
registry keys. It's often caused by gaming spoofers.
set permerror=
if %winbuild% GEQ 9200 if not defined toerr if not defined ps32onArm if exist
"%tokenstore%\" (
for %%# in (
"%tokenstore%+FullControl"
"HKLM:\SYSTEM\WPA+QueryValues, EnumerateSubKeys, WriteKey"
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
SoftwareProtectionPlatform+SetValue"
) do for /f "tokens=1,2 delims=+" %%A in (%%#) do if not defined permerror (
%psc% "$acl = (Get-Acl '%%A' | fl | Out-String); if (-not ($acl -match 'NT
SERVICE\\sppsvc Allow %%B') -or ($acl -match 'NT SERVICE\\sppsvc Deny')) {Exit 2}"
%nul%
if !errorlevel!==2 (
if "%%A"=="%tokenstore%" (
set "permerror=Error Found In Token Folder"
) else (
set "permerror=Error Found In SPP Registries"
)
)
)
REM [Link]
issue-when-start-office-application
if defined permerror (
call :dk_color %Red% "Checking SPP Permissions [!permerror!]"
if not defined showfix (
echo:
call :dk_color %Blue% "%_fixmsg%"
echo:
)
set error=1
set showfix=1
)
)
::==============================
set chkalp=
set wpainfo=NotFound
for /f "delims=" %%a in ('%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split
':wpatest\:.*';. ([scriptblock]::Create($f[1]))" %nul6%') do (set wpainfo=%%a)
for /f "delims=0123456789" %%i in ("%wpainfo%") do set chkalp=%%i
if defined chkalp (
call :dk_color %Red% "Checking WPA Registry Errors [%wpainfo%]"
if not defined showfix (
echo "%wpainfo%" | find /i "Error Found" %nul% && (
echo:
call :dk_color %Blue% "Go back to Main Menu, select Troubleshoot and run Fix WPA
Registry option."
echo:
set error=1
set showfix=1
)
)
set wpainfo=a
)
::==============================
:: Check Rearm
::==============================
:: Check SoftwareLicensingService
if %error_code% NEQ 0 (
call :dk_color %Red% "Checking SoftwareLicensingService [Not Working]
[%error_code%]"
if not defined showfix (
echo:
call :dk_color %Blue% "%_fixmsg%"
call :dk_color %Blue% "If activation still fails then run Fix WPA Registry option."
echo:
)
set error=1
set showfix=1
)
::==============================
::==============================
::==============================
::==============================
set osedition=0
if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is
NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-
d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS
NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')"
%chkedi% do if not errorlevel 1 (call set "osedition=%%a")
if not %osedition%==0 (
if "%osSKU%"=="164" set osedition=ProfessionalEducation
if "%osSKU%"=="165" set osedition=ProfessionalEducationN
)
::==============================
::==============================
:: This "WLMS" service was included in previous Eval editions (which were
activable) to automatically shut down the system every hour after the evaluation
period expired and prevent SPPSVC from stopping.
if exist "%SysPath%\wlms\[Link]" (
echo Checking Eval WLMS Service [Found]
)
::==============================
::==============================
if %winbuild% GEQ 7600 for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\
Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" /v "SkipRearm"
%nul6%') do if /i %%b NEQ 0x0 (
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
SoftwareProtectionPlatform" /v "SkipRearm" /t REG_DWORD /d "0" /f %nul%
call :dk_color %Gray% "Checking SkipRearm [Default 0 Value Not
Found. Changing To 0]"
%psc% "Start-Job { Stop-Service sppsvc -force } | Wait-Job -Timeout 20 | Out-Null"
)
::==============================
:: Check SvcRestartTask status, this task helps in making sure system remains
activated
::==============================
exit /b
:: This code checks for invalid registry keys in HKLM\SYSTEM\WPA. This issue may
appear even on healthy systems
:wpatest:
$wpaKey = [[Link]]::OpenRemoteBaseKey('LocalMachine',
$env:COMPUTERNAME).OpenSubKey("SYSTEM\\WPA")
$count = 0
foreach ($subkeyName in $[Link]()) {
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
$count++
}
}
$osVersion = [[Link]]::[Link]
$minBuildNumber = 14393
if ($[Link] -ge $minBuildNumber) {
$subkeyHashTable = @{}
foreach ($subkeyName in $[Link]()) {
if ($subkeyName -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
$keyNumber = $subkeyName -replace '.*-', ''
$subkeyHashTable[$keyNumber] = $true
}
}
for ($i=1; $i -le $count; $i++) {
if (-not $[Link]("$i")) {
Write-Output "Total Keys $count. Error Found - $i key does not exist."
$[Link]()
exit
}
}
}
$[Link]() | ForEach-Object {
if ($_ -match '8DEC0AF1-0341-4b93-85CD-72606C2DF94C.*') {
if ($[Link] -lt 3) {
cmd /c "reg query "HKLM\SYSTEM\WPA\$_" /ve /t REG_BINARY >nul 2>&1"
if ($LASTEXITCODE -ne 0) {
Write-Host "Total Keys $count. Error Found - Binary Data is corrupt."
$[Link]()
exit
}
} else {
$subkey = $[Link]($_)
$p = $[Link]()
if (($p | Where-Object { $[Link]($_) -eq
[[Link]]::Binary }).Count -eq 0) {
Write-Host "Total Keys $count. Error Found - Binary Data is
corrupt."
$[Link]()
exit
}
}
}
}
$count
$[Link]()
:wpatest:
::=================================================================================
=======================================================
:dk_color
if %_NCS% EQU 1 (
echo %esc%[%~1%~2%esc%[0m
) else if exist %ps% (
%psc% write-host -back '%1' -fore '%2' '%3'
) else if not exist %ps% (
echo %~3
)
exit /b
:dk_color2
if %_NCS% EQU 1 (
echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m
) else if exist %ps% (
%psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore
'%5' '%6'
) else if not exist %ps% (
echo %~3 %~6
)
exit /b
::=================================================================================
=======================================================
:dk_done
echo:
if %_unattended%==1 timeout /t 2 & exit /b
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to
Ignore"
choice /C:10 /N
if !errorlevel!==2 exit /b
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do
(start %%#))
)
if defined terminal (
call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..."
choice /c 0 /n
) else (
call :dk_color %_Yellow% "Press any key to %_exitmsg%..."
pause %nul1%
)
exit /b
::=================================================================================
=======================================================
:hwiddata
set f=
for %%# in (
8b351c9c-f398-4515-9900-09df49427262_XGVPP-NMH47-7TTHJ-W3FW7-8H%f%V2C___4_X19-
99683_0_OEM:NONSLP_Enterprise
c83cef07-6b72-4bbc-a28f-a00386872839_3V6Q6-NQXCX-V8YXR-9QCYV-QP%f%FCT__27_X19-
98746_0_Volume:MAK_EnterpriseN
4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V%f%66T__48_X19-
98841_0_____Retail_Professional
9fbaf5d6-4d83-4422-870d-fdda6e5858aa_2B87N-8KFHP-DKV6R-Y2C8J-PK%f%CKT__49_X19-
98859_0_____Retail_ProfessionalN
f742e4ff-909d-4fe9-aacb-3231d24a0c58_4CPRK-NM3K3-X6XXQ-RXX86-WX%f%CHW__98_X19-
98877_0_____Retail_CoreN
1d1bac85-7365-4fea-949a-96978ec91ae0_N2434-X9D7W-8PF6X-8DV9T-8T%f%YMD__99_X19-
99652_0_____Retail_CoreCountrySpecific
3ae2cc14-ab2d-41f4-972f-5e20142771dc_BT79Q-G7N6G-PGBYW-4YWX6-6F%f%4BT_100_X19-
99661_0_____Retail_CoreSingleLanguage
2b1f36bb-c1cd-4306-bf5c-a0367c2d97d8_YTMG3-N6DKC-DKB77-7M9GH-8H%f%VX7_101_X19-
98868_0_____Retail_Core
2a6137f3-75c0-4f26-8e3e-d83d802865a4_XKCNC-J26Q9-KFHD2-FKTHY-KD%f%72Y_119_X19-
99606_0_OEM:NONSLP_PPIPro
e558417a-5123-4f6f-91e7-385c1c7ca9d4_YNMGQ-8RYV3-4PGQ3-C8XTP-7C%f%FBY_121_X19-
98886_0_____Retail_Education
c5198a66-e435-4432-89cf-ec777c9d0352_84NGF-MHBT6-FXBX8-QWJK7-DR%f%R8H_122_X19-
98892_0_____Retail_EducationN
f6e29426-a256-4316-88bf-cc5b0f95ec0c_PJB47-8PN2T-MCGDY-JTY3D-CB%f%CPV_125_X23-
50331_1_Volume:MAK_EnterpriseS_Ge
cce9d2de-98ee-4ce2-8113-222620c64a27_KCNVH-YKWX8-GJJB9-H9FDT-6F%f%7W2_125_X22-
66075_1_Volume:MAK_EnterpriseS_VB
d06934ee-5448-4fd1-964a-cd077618aa06_43TBQ-NH92J-XKTM7-KT3KK-P3%f%9PB_125_X21-
83233_0_OEM:NONSLP_EnterpriseS_RS5
706e0cfd-23f4-43bb-a9af-1a492b9f1302_NK96Y-D9CD8-W44CQ-R8YTK-DY%f%JWX_125_X21-
05035_0_OEM:NONSLP_EnterpriseS_RS1
faa57748-75c8-40a2-b851-71ce92aa8b45_FWN7H-PF93Q-4GGP8-M8RF3-MD%f%WWW_125_X19-
99617_0_OEM:NONSLP_EnterpriseS_TH
3d1022d8-969f-4222-b54b-327f5a5af4c9_2DBW3-N2PJG-MVHW3-G7TDK-9H%f%KR4_126_X21-
04921_0_Volume:MAK_EnterpriseSN_RS1
60c243e1-f90b-4a1b-ba89-387294948fb6_NTX6B-BRYC2-K6786-F6MVQ-M7%f%V2X_126_X19-
98770_0_Volume:MAK_EnterpriseSN_TH
01eb852c-424d-4060-94b8-c10d799d7364_3XP6D-CRND4-DRYM2-GM84D-4G%f%G8Y_139_X23-
37869_1_____Retail_ProfessionalCountrySpecific_Zn
eb6d346f-1c60-4643-b960-40ec31596c45_DXG7C-N36C4-C4HTG-X4T3X-2Y%f%V77_161_X21-
43626_0_____Retail_ProfessionalWorkstation
89e87510-ba92-45f6-8329-3afa905e3e83_WYPNQ-8C467-V2W6J-TX4WX-WT%f%2RQ_162_X21-
43644_0_____Retail_ProfessionalWorkstationN
62f0c100-9c53-4e02-b886-a3528ddfe7f6_8PTT6-RNW4C-6V7J2-C2D3X-MH%f%BPB_164_X21-
04955_0_____Retail_ProfessionalEducation
13a38698-4a49-4b9e-8e83-98fe51110953_GJTYN-HDMQY-FRR76-HVGC7-QP%f%F8P_165_X21-
04956_0_____Retail_ProfessionalEducationN
df96023b-dcd9-4be2-afa0-c6c871159ebe_NJCF7-PW8QT-3324D-688JX-2Y%f%V66_175_X21-
41295_0_____Retail_ServerRdsh
d4ef7282-3d2c-4cf0-9976-8854e64a8d1e_V3WVW-N2PV2-CGWC3-34QGF-VM%f%J2C_178_X21-
32983_0_____Retail_Cloud
af5c9381-9240-417d-8d35-eb40cd03e484_NH9J3-68WK7-6FB93-4K3DF-DJ%f%4F6_179_X21-
32987_0_____Retail_CloudN
8ab9bdd1-1f67-4997-82d9-8878520837d9_XQQYW-NFFMW-XJPBH-K8732-CK%f%FFD_188_X21-
99378_0_____OEM:DM_IoTEnterprise
ed655016-a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY%f%74H_191_X21-
99682_0_OEM:NONSLP_IoTEnterpriseS_VB
6c4de1b8-24bb-4c17-9a77-7b939414c298_CGK42-GYN6Y-VD22B-BX98W-J8%f%JXD_191_X23-
12617_0_OEM:NONSLP_IoTEnterpriseS_Ge
d4bdc678-0a4b-4a32-a5b3-aaa24c3b0f24_K9VKN-3BGWV-Y624W-MCRMQ-BH%f%DCD_202_X22-
53884_0_____Retail_CloudEditionN
92fb8726-92a8-4ffc-94ce-f82e07444653_KY7PN-VR6RX-83W6Y-6DDYQ-T6%f%R4W_203_X22-
53847_0_____Retail_CloudEdition
5a85300a-bfce-474f-ac07-a30983e3fb90_N979K-XWD77-YW3GB-HBGH6-D3%f%2MH_205_X23-
15042_0_____OEM:DM_IoTEnterpriseSK
80083eae-7031-4394-9e88-4901973d56fe_P8Q7T-WNK7X-PMFXY-VXHBG-RR%f%K69_206_X23-
62084_0_____OEM:DM_IoTEnterpriseK
) do (
for /f "tokens=1-9 delims=_" %%A in ("%%#") do (
if %1==ticket if "%key%"=="%%B" (
set
"SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;Pfn=Microsoft.W
indows.%%C.%
%D_8wekyb3d8bbwe;PKeyIID=4651452171313143042643394811178622662420334572603118196647
35280;"
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':sign\:.*';.
([scriptblock]::Create($f[1]))"
)
)
)
exit /b
::=================================================================================
=======================================================
:sign:
$ErrorActionPreference = "Stop"
function SignProperties {
param (
$Properties,
$rsa
)
$sha256 = [[Link].SHA256]::Create()
$bytes = [[Link]]::[Link]($Properties)
$hash = $[Link]($bytes)
$signature = $[Link]($hash,
[[Link]]::SHA256,
[[Link]]::Pkcs1)
return [Convert]::ToBase64String($signature)
[byte[]] $key =
0x07,0x02,0x00,0x00,0x00,0xA4,0x00,0x00,0x52,0x53,0x41,0x32,0x00,0x04,0x00,0x00,
0x01,0x00,0x01,0x00,0x29,0x87,0xBA,0x3F,0x52,0x90,0x57,0xD8,0x12,0x26,0x6B,0x38,
0xB2,0x3B,0xF9,0x67,0x08,0x4F,0xDD,0x8B,0xF5,0xE3,0x11,0xB8,0x61,0x3A,0x33,0x42,
0x51,0x65,0x05,0x86,0x1E,0x00,0x41,0xDE,0xC5,0xDD,0x44,0x60,0x56,0x3D,0x14,0x39,
0xB7,0x43,0x65,0xE9,0xF7,0x2B,0xA5,0xF0,0xA3,0x65,0x68,0xE9,0xE4,0x8B,0x5C,0x03,
0x2D,0x36,0xFE,0x28,0x4C,0xD1,0x3C,0x3D,0xC1,0x90,0x75,0xF9,0x6E,0x02,0xE0,0x58,
0x97,0x6A,0xCA,0x80,0x02,0x42,0x3F,0x6C,0x15,0x85,0x4D,0x83,0x23,0x6A,0x95,0x9E,
0x38,0x52,0x59,0x38,0x6A,0x99,0xF0,0xB5,0xCD,0x53,0x7E,0x08,0x7C,0xB5,0x51,0xD3,
0x8F,0xA3,0x0D,0xA0,0xFA,0x8D,0x87,0x3C,0xFC,0x59,0x21,0xD8,0x2E,0xD9,0x97,0x8B,
0x40,0x60,0xB1,0xD7,0x2B,0x0A,0x6E,0x60,0xB5,0x50,0xCC,0x3C,0xB1,0x57,0xE4,0xB7,
0xDC,0x5A,0x4D,0xE1,0x5C,0xE0,0x94,0x4C,0x5E,0x28,0xFF,0xFA,0x80,0x6A,0x13,0x53,
0x52,0xDB,0xF3,0x04,0x92,0x43,0x38,0xB9,0x1B,0xD9,0x85,0x54,0x7B,0x14,0xC7,0x89,
0x16,0x8A,0x4B,0x82,0xA1,0x08,0x02,0x99,0x23,0x48,0xDD,0x75,0x9C,0xC8,0xC1,0xCE,
0xB0,0xD7,0x1B,0xD8,0xFB,0x2D,0xA7,0x2E,0x47,0xA7,0x18,0x4B,0xF6,0x29,0x69,0x44,
0x30,0x33,0xBA,0xA7,0x1F,0xCE,0x96,0x9E,0x40,0xE1,0x43,0xF0,0xE0,0x0D,0x0A,0x32,
0xB4,0xEE,0xA1,0xC3,0x5E,0x9B,0xC7,0x7F,0xF5,0x9D,0xD8,0xF2,0x0F,0xD9,0x8F,0xAD,
0x75,0x0A,0x00,0xD5,0x25,0x43,0xF7,0xAE,0x51,0x7F,0xB7,0xDE,0xB7,0xAD,0xFB,0xCE,
0x83,0xE1,0x81,0xFF,0xDD,0xA2,0x77,0xFE,0xEB,0x27,0x1F,0x10,0xFA,0x82,0x37,0xF4,
0x7E,0xCC,0xE2,0xA1,0x58,0xC8,0xAF,0x1D,0x1A,0x81,0x31,0x6E,0xF4,0x8B,0x63,0x34,
0xF3,0x05,0x0F,0xE1,0xCC,0x15,0xDC,0xA4,0x28,0x7A,0x9E,0xEB,0x62,0xD8,0xD8,0x8C,
0x85,0xD7,0x07,0x87,0x90,0x2F,0xF7,0x1C,0x56,0x85,0x2F,0xEF,0x32,0x37,0x07,0xAB,
0xB0,0xE6,0xB5,0x02,0x19,0x35,0xAF,0xDB,0xD4,0xA2,0x9C,0x36,0x80,0xC6,0xDC,0x82,
0x08,0xE0,0xC0,0x5F,0x3C,0x59,0xAA,0x4E,0x26,0x03,0x29,0xB3,0x62,0x58,0x41,0x59,
0x3A,0x37,0x43,0x35,0xE3,0x9F,0x34,0xE2,0xA1,0x04,0x97,0x12,0x9D,0x8C,0xAD,0xF7,
0xFB,0x8C,0xA1,0xA2,0xE9,0xE4,0xEF,0xD9,0xC5,0xE5,0xDF,0x0E,0xBF,0x4A,0xE0,0x7A,
0x1E,0x10,0x50,0x58,0x63,0x51,0xE1,0xD4,0xFE,0x57,0xB0,0x9E,0xD7,0xDA,0x8C,0xED,
0x7D,0x82,0xAC,0x2F,0x25,0x58,0x0A,0x58,0xE6,0xA4,0xF4,0x57,0x4B,0xA4,0x1B,0x65,
0xB9,0x4A,0x87,0x46,0xEB,0x8C,0x0F,0x9A,0x48,0x90,0xF9,0x9F,0x76,0x69,0x03,0x72,
0x77,0xEC,0xC1,0x42,0x4C,0x87,0xDB,0x0B,0x3C,0xD4,0x74,0xEF,0xE5,0x34,0xE0,0x32,
0x45,0xB0,0xF8,0xAB,0xD5,0x26,0x21,0xD7,0xD2,0x98,0x54,0x8F,0x64,0x88,0x20,0x2B,
0x14,0xE3,0x82,0xD5,0x2A,0x4B,0x8F,0x4E,0x35,0x20,0x82,0x7E,0x1B,0xFE,0xFA,0x2C,
0x79,0x6C,0x6E,0x66,0x94,0xBB,0x0A,0xEB,0xBA,0xD9,0x70,0x61,0xE9,0x47,0xB5,0x82,
0xFC,0x18,0x3C,0x66,0x3A,0x09,0x2E,0x1F,0x61,0x74,0xCA,0xCB,0xF6,0x7A,0x52,0x37,
0x1D,0xAC,0x8D,0x63,0x69,0x84,0x8E,0xC7,0x70,0x59,0xDD,0x2D,0x91,0x1E,0xF7,0xB1,
0x56,0xED,0x7A,0x06,0x9D,0x5B,0x33,0x15,0xDD,0x31,0xD0,0xE6,0x16,0x07,0x9B,0xA5,
0x94,0x06,0x7D,0xC1,0xE9,0xD6,0xC8,0xAF,0xB4,0x1E,0x2D,0x88,0x06,0xA7,0x63,0xB8,
0xCF,0xC8,0xA2,0x6E,0x84,0xB3,0x8D,0xE5,0x47,0xE6,0x13,0x63,0x8E,0xD1,0x7F,0xD4,
0x81,0x44,0x38,0xBF
$xml = @"
<?xml version="1.0" encoding="utf-8"?><genuineAuthorization
xmlns="[Link]
version><genuineProperties
origin="sppclient"><properties>$PropertiesStr</properties><signatures><signature
name="clientLockboxKey"
method="rsa-sha256">$SignatureStr</signature></signatures></genuineProperties></
genuineAuthorization>
"@
[[Link]]::WriteAllText("$env:ProgramData\Microsoft\Windows\ClipSVC\
GenuineTicket\GenuineTicket", ($xml -join ""), [[Link]]::ASCII)
:sign:
::=================================================================================
=======================================================
:: Below code is used to get alternate edition name and key if current edition
doesn't support HWID activation
:hwidfallback
set notfoundaltactID=
if %_NoEditionChange%==1 exit /b
for %%# in (
125_EnterpriseS-2021_______________cce9d2de-98ee-4ce2-8113-222620c64a27_ed655016-
a9e8-4434-95d9-4345352c2552_QPM6N-7J2WJ-P88HH-P3YRH-YY%f%74H_IoTEnterpriseS-2021
125_EnterpriseS-2024_______________f6e29426-a256-4316-88bf-cc5b0f95ec0c_6c4de1b8-
24bb-4c17-9a77-7b939414c298_CGK42-GYN6Y-VD22B-BX98W-J8%f%JXD_IoTEnterpriseS-2024
138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_4de7cb65-
cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V%f%66T_Professional
139_ProfessionalCountrySpecific____f7af7d09-40e4-419c-a49b-eae366689ebd_4de7cb65-
cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V%f%66T_Professional
139_ProfessionalCountrySpecific-Zn_01eb852c-424d-4060-94b8-c10d799d7364_4de7cb65-
cdf1-4de9-8ae8-e3cce27b9f2c_VK7JG-NPHTM-C97JM-9MPGT-3V%f%66T_Professional
) do (
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
echo "!allapps! !altapplist!" | find /i "%%C" %nul1% && (
echo "!allapps!" | find /i "%%D" %nul1% && (
set altkey=%%E
set altedition=%%F
) || (
set altedition=%%F
set notfoundaltactID=1
)
)
)
)
exit /b
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:OhookActivation
:: To activate Office with Ohook activation, run the script with "/Ohook"
parameter or change 0 to 1 in below line
set _act=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 "%%A"=="/Ohook" set _act=1
if /i "%%A"=="/Ohook-Uninstall" set _rem=1
if /i "%%A"=="-el" set _elev=1
)
)
::=================================================================================
=======================================================
:oh_menu
if %_unattended%==0 (
cls
if not defined terminal mode 76, 25
title Ohook Activation %masver%
call :oh_checkapps
echo:
echo:
echo:
echo:
if defined checknames (call :dk_color %_Yellow% " Close [!
checknames!] before proceeding...")
echo ____________________________________________________________
echo:
echo [1] Install Ohook Office Activation
echo:
echo [2] Uninstall Ohook
echo ____________________________________________
echo:
echo [3] Download Office
echo:
echo [0] %_exitmsg%
echo ____________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,3,0]"
choice /C:1230 /N
set _el=!errorlevel!
if !_el!==4 exit /b
if !_el!==3 start %mas%genuine-installation-media &goto :oh_menu
if !_el!==2 goto :oh_uninstall
if !_el!==1 goto :oh_menu2
goto :oh_menu
)
::=================================================================================
=======================================================
:oh_menu2
cls
if not defined terminal (
mode 140, 32
if exist "%SysPath%\spp\store_test\" mode 140, 32
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=32;$[Link]=300;$[Link]=$W;
$[Link]=$B;}" %nul%
)
title Ohook Activation %masver%
echo:
echo Initializing...
call :dk_chkmal
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_reflection
call :dk_ckeckwmic
call :dk_product
call :dk_sppissue
::=================================================================================
=======================================================
set error=
cls
echo:
call :dk_showosinfo
::=================================================================================
=======================================================
:: Software Protection
:: Windows Management Instrumentation
set notwinact=1
set ohookact=1
call :dk_errorcheck
call :oh_setspp
set o14c2r=
set o16uwp=
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\14.0\Common\InstallRoot /v
Path" %nul6%') do if exist "%%b\*[Link]" (set o14msi=Office 2010 MSI )
for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\14.0\Common\InstallRoot /v
Path" %nul6%') do if exist "%%b\*[Link]" (set o14msi=Office 2010 MSI )
%nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
%nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
::=================================================================================
=======================================================
call :oh_getpath
if "%o16c2r%%o15c2r%%o16msi%%o15msi%%o14msi%"=="" (
set error=1
echo:
if not "%o14c2r%%o16uwp%"=="" (
call :dk_color %Red% "Checking Supported Office Install [Not Found]"
) else (
call :dk_color %Red% "Checking Installed Office [Not Found]"
)
if defined ohub (
echo:
echo You only have the Office Dashboard app installed. You need to install the full
version of Office.
)
echo:
call :dk_color %Blue% "Download and install Office from the below URL and then try
again."
echo:
set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
goto dk_done
)
set multioffice=
if not "%o16c2r%%o15c2r%%o16msi%%o15msi%%o14msi%"=="1" set multioffice=1
if not "%o14c2r%%o16uwp%"=="" set multioffice=1
if defined multioffice (
call :dk_color %Gray% "Checking Multiple Office Install [Found, its
recommended to install only one version]"
)
::=================================================================================
=======================================================
set winserver=
reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v ProductType
%nul2% | find /i "WinNT" %nul1% || set winserver=1
if not defined winserver (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% |
find /i "Server" %nul1% && set winserver=1
)
::=================================================================================
=======================================================
call :oh_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=15
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o15c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o15c2r_reg%\Configuration")
if not defined _oArch for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v Platform" %nul6%') do (set "_oArch=%%b")
if not defined _version for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v version" %nul6%') do (set "_version=%%b")
if not defined _prids for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v ProductReleaseId" %nul6%') do (set "_prids=%o15c2r_reg%\
propertyBag /v ProductReleaseId" & set "_config=%o15c2r_reg%\propertyBag")
echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9)
for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\
Active %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set "_oLPath=%_oRoot%\Licenses"
set "_oIntegrator=%_oRoot%\integration\[Link]"
call :oh_ppcpath
echo:
echo Activating Office... [C2R ^| %_version% ^| %_oArch%]
if defined noOsppc (
call :dk_color %Red% "Checking [Link] [Not found. Aborting
activation...]"
call :dk_color %Blue% "%_fixmsg%"
set error=1
goto :starto16c2r
)
::=================================================================================
=======================================================
:starto16c2r
call :oh_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=16
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
AudienceData" %nul6%') do (set "_AudienceData=^| %%b ")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o16c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o16c2r_reg%\Configuration")
echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8)
for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs"
/s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set _oIds=%_oIds:.16=%
set _o16c2rIds=%_oIds%
set "_oLPath=%_oRoot%\Licenses16"
set "_oIntegrator=%_oRoot%\integration\[Link]"
call :oh_ppcpath
echo:
echo Activating Office... [C2R ^| %_version% %_AudienceData%^|
%_oArch%]
if defined noOsppc (
call :dk_color %Red% "Checking [Link] [Not found. Aborting
activation...]"
call :dk_color %Blue% "%_fixmsg%"
set error=1
goto :startmsi
)
::=================================================================================
=======================================================
:: Old version of Office with subscription license key may show a banner to sign
in to fix license issue.
:: Although script applies a Resiliency registry entry to fix that but it doesn't
work on old office versions.
:: Below code checks that condition and informs the user to update the Office.
if defined _sublic (
if not exist "%_oLPath%\Word2021VL_KMS_Client_AE*.xrm-ms" (
call :dk_color %Gray% "Checking Old Office With Sub License [Found. Update
Office, otherwise, it may show a licensing issue-related banner.]"
)
)
::=================================================================================
=======================================================
:: mass()grave(dot)dev/office-license-is-not-genuine
:: Add registry keys for volume products so that 'non-genuine' banner won't appear
:: 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
::=================================================================================
=======================================================
:startmsi
::=================================================================================
=======================================================
call :oh_clearblock
call :oh_uninstkey
call :oh_licrefresh
::=================================================================================
=======================================================
echo:
if not defined error (
call :dk_color %Green% "Office is permanently activated."
if defined ohub call :dk_color %Gray% "Office apps such as Word, Excel are
activated, use them directly. Ignore 'Buy' button in Office dashboard app."
echo Help: %mas%troubleshoot
) else (
call :dk_color %Red% "Some errors were detected."
if not defined ierror if not defined showfix call :dk_color %Blue% "%_fixmsg%"
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
goto :dk_done
::=================================================================================
=======================================================
:oh_uninstall
cls
if not defined terminal mode 145, 32
title Uninstall Ohook Activation %masver%
set _present=
set _unerror=
call :oh_reset
call :oh_getpath
echo:
echo Uninstalling Ohook activation...
echo:
::==================================
::==================================
set _sidlist=
for /f "tokens=* delims=" %%a in ('%psc% "$p = 'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\ProfileList'; Get-ChildItem $p | ForEach-Object { $pi = (Get-
ItemProperty """"$p\$($_.PSChildName)"""").ProfileImagePath; if ($pi -like '*\
Users\*' -and (Test-Path """"$pi\[Link]"""") -and -not ($_.PSChildName -match
'\.bak$')) { Split-Path $_.PSPath -Leaf } }" %nul6%') do (if defined _sidlist (set
_sidlist=!_sidlist! %%a) else (set _sidlist=%%a))
::==================================
echo
___________________________________________________________________________________
_______
echo:
goto :dk_done
::=================================================================================
=======================================================
:oh_reset
set key=
set _oRoot=
set _oArch=
set _oIds=
set _oLPath=
set _hookPath=
set _hook=
set _sppcPath=
set _osppPath=
set _actid=
set _prod=
set _lic=
set _arr=
set _prids=
set _config=
set _version=
set _License=
exit /b
::=================================================================================
=======================================================
:oh_getpath
set o16c2r=
set o15c2r=
set o16msi=
set o15msi=
set o14msi=
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
exit /b
::=================================================================================
=======================================================
:oh_expiredpreview
exit /b
::=================================================================================
=======================================================
:oh_ppcpath
set noOsppc=
set _hook68=
set _hook86=
set _osppPath68=
set _osppPath86=
if defined isOspp (
if not "%osarch%"=="x86" (
if /i "%_oArch%"=="x64" (
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\
OfficeSoftwareProtectionPlatform /v Path" %nul6%') do (set "_osppPath68=%%b")
if not exist "!_osppPath68![Link]" set noOsppc=1
)
if /i "%_oArch%"=="x86" (
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\
OfficeSoftwareProtectionPlatform /v Path" %nul6%') do (set "_osppPath68=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\
OfficeSoftwareProtectionPlatform /v Path" %nul6%') do (set "_osppPath86=%%b")
if not exist "!_osppPath68![Link]" set noOsppc=1
if not exist "!_osppPath86![Link]" set noOsppc=1
)
) else (
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\
OfficeSoftwareProtectionPlatform /v Path" %nul6%') do (set "_osppPath86=%%b")
if not exist "!_osppPath86![Link]" set noOsppc=1
)
if "!_osppPath68:~-1!"=="\" set "_osppPath68=!_osppPath68:~0,-1!"
if "!_osppPath86:~-1!"=="\" set "_osppPath86=!_osppPath86:~0,-1!"
)
exit /b
::=================================================================================
=======================================================
:: Some Office Retail to Volume converter tools may edit the ProductReleaseIds to
add VL products. This code restores it because it may affect features.
:oh_fixprids
set _pridsR=%_pridsR:,= %
for %%# in (%_pridsR%) do (echo %%# | findstr /I "%_oIds%" %nul1% || set _pridsE=1)
for %%# in (%_oIds%) do (echo %%# | findstr /I "%_pridsR%" %nul1% || set _pridsE=1)
exit /b
::=================================================================================
=======================================================
:oh_installlic
if defined _oIntegrator (
if %oVer%==16 (
"!_oIntegrator!" /I /License PRIDName=%_License%.16 PidKey=%key% %nul%
) else (
"!_oIntegrator!" /I /License PRIDName=%_License% PidKey=%key% %nul%
)
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
echo "!allapps!" | find /i "!_actid!" %nul1% && exit /b
)
set _License=%_License:XVolume=XC2RVL_%
set _License=%_License:O365EduCloudRetail=O365EduCloudEDUR_%
set _License=%_License:ProjectProRetail=ProjectProO365R_%
set _License=%_License:ProjectStdRetail=ProjectStdO365R_%
set _License=%_License:VisioProRetail=VisioProO365R_%
set _License=%_License:VisioStdRetail=VisioStdO365R_%
set _License=%_License:Retail=R_%
set _License=%_License:Volume=VL_%
exit /b
::=================================================================================
=======================================================
:oh_hookinstall
set ierror=
set hasherror=
::======================================
::======================================
set exhook=
if exist "!_work!\BIN\%_hook%" set exhook=1
echo:
echo Symlinking System's [Link] ["%_hookPath%\[Link]"] [Successful]
if defined exhook (
echo Copying Custom %_hook% to ["%_hookPath%\[Link]"] [Successful]
) else (
echo Extracting Custom %_hook% to ["%_hookPath%\[Link]"] [Successful]
)
goto :oh_hookinstall_error
::=================================================================================
=======================================================
:oh_hookinstall_ospp
set ierror=
set hasherror=
::======================================
::======================================
if defined ierror (
set "ierror=Rename [Link]"
goto :oh_hookinstall_error
)
set exhook=
if exist "!_work!\BIN\%_hook68%" if exist "!_work!\BIN\%_hook86%" set exhook=1
if defined exhook (
pushd "!_work!\BIN\"
if defined _osppPath68 (copy /y /b "%_hook68%" "%_osppPath68%\[Link]" %nul%)
if defined _osppPath86 (copy /y /b "%_hook86%" "%_osppPath86%\[Link]" %nul%)
popd
) else (
if defined _osppPath68 (set _hook=%_hook68%&call :oh_extractdll "%_osppPath68%\
[Link]" "%offset68%")
if defined _osppPath86 (set _hook=%_hook86%&call :oh_extractdll "%_osppPath86%\
[Link]" "%offset86%")
)
if defined ierror (
set ierror=Copy
goto :oh_hookinstall_error
)
echo:
if defined _osppPath68 (echo Renaming [Link] to [Link]
["%_osppPath68%\[Link]"])
if defined _osppPath86 (echo Renaming [Link] to [Link]
["%_osppPath86%\[Link]"])
if defined exhook (
if defined _osppPath68 (echo Copying Custom %_hook68% to
["%_osppPath68%\[Link]"])
if defined _osppPath86 (echo Copying Custom %_hook86% to
["%_osppPath86%\[Link]"])
) else (
if defined _osppPath68 (echo Extracting Custom %_hook68% to
["%_osppPath68%\[Link]"])
if defined _osppPath86 (echo Extracting Custom %_hook86% to
["%_osppPath86%\[Link]"])
)
::=================================================================================
=======================================================
:oh_hookinstall_error
if defined ierror (
set error=1
call :dk_color %Red% "Installing Ohook [Failed to %ierror%]"
echo:
call :oh_checkapps
if defined checknames (
call :dk_color %Blue% "Close [!checknames!] and try again."
call :dk_color %Blue% "If it is still not fixed, reboot your machine using the
restart option and try again."
) else (
if /i not "%ierror%"=="Copy" call :dk_color %Blue% "Reboot your machine using the
restart option and try again."
if /i "%ierror%"=="Copy" call :dk_color %Blue% "If you are using any third-party
antivirus, check if it is blocking the script."
)
echo:
)
exit /b
::=================================================================================
=======================================================
:oh_setspp
set isOspp=
if %winbuild% GEQ 9200 (
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
) else (
set isOspp=1
set spp=OfficeSoftwareProtectionProduct
set sps=OfficeSoftwareProtectionService
)
if "%1"=="14" (
set isOspp=1
set spp=OfficeSoftwareProtectionProduct
set sps=OfficeSoftwareProtectionService
)
exit /b
::=================================================================================
=======================================================
:oh_process
set key=
set _actid=
set _lic=
set _preview=
set _License=%%#
if not "!key!"=="" (
echo "!allapps!" | find /i "!_actid!" %nul1% || call :oh_installlic
if not %oVer%==14 set generickey=1
call :dk_inskey "[!key!] [!_prod!] [!_lic!]"
) else (
set error=1
call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !
_prod! key not found in script]"
call :dk_color %Blue% "Make sure you are using the latest version of MAS."
set fixes=%fixes% %mas%
call :dk_color %_Yellow% "%mas%"
)
)
exit /b
::=================================================================================
=======================================================
:oh_processmsi
call :oh_reset
if "%1"=="14" (
call :dk_actids 59a52881-a989-479d-af46-f275c6370663
) else (
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
)
set oVer=%1
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\InstallRoot /v Path"
%nul6%') do (set "_oRoot=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\ProductVersion /v
LastProduct" %nul6%') do (set "_version=%%b")
if "%_oRoot:~-1%"=="\" set "_oRoot=%_oRoot:~0,-1%"
call :oh_ppcpath
call :msiofficedata %2
echo:
echo Activating Office... [MSI ^| %_version% ^| %_oArch%]
if defined noOsppc (
call :dk_color %Red% "Checking [Link] [Not found. Aborting
activation...]"
call :dk_color %Blue% "%_fixmsg%"
set error=1
exit /b
)
exit /b
::=================================================================================
=======================================================
:oh_clearblock
set _sidlist=
for /f "tokens=* delims=" %%a in ('%psc% "$p = 'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\ProfileList'; Get-ChildItem $p | ForEach-Object { $pi = (Get-
ItemProperty """"$p\$($_.PSChildName)"""").ProfileImagePath; if ($pi -like '*\
Users\*' -and (Test-Path """"$pi\[Link]"""") -and -not ($_.PSChildName -match
'\.bak$')) { Split-Path $_.PSPath -Leaf } }" %nul6%') do (if defined _sidlist (set
_sidlist=!_sidlist! %%a) else (set _sidlist=%%a))
::==========================
set loadedsids=
set alrloadedsids=
::==========================
set "_sidlist=%loadedsids% %alrloadedsids%"
set /a counter=0
for %%# in (%_sidlist%) do set /a counter+=1
if %counter% EQU 0 (
set error=1
call :dk_color %Red% "Checking User Accounts SID [Not Found]"
exit /b
)
if %counter% GTR 10 (
call :dk_color %Gray% "Checking Total User Accounts [%counter%]"
)
::==========================
:: Clear the vNext/shared/device license blocks which may prevent ohook activation
set vnextexist=
rmdir /s /q "%ProgramData%\Microsoft\Office\Licenses\" %nul%
if defined o16uwpapplist (
for %%# in (%_sidlist%) do (
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\ProfileList\%%#" /v ProfileImagePath" %nul6%') do (
rmdir /s /q "%%b\AppData\Local\Packages\[Link].Desktop_8wekyb3d8bbwe\
LocalCache\Local\Microsoft\Office\Licenses\" %nul%
if exist "%%b\AppData\Local\Packages\[Link].Desktop_8wekyb3d8bbwe\
SystemAppData\Helium\[Link]" (
set defname=DEFTEMP-%%#
reg load HKU\!defname! "%%b\AppData\Local\Packages\
[Link].Desktop_8wekyb3d8bbwe\SystemAppData\Helium\[Link]" %nul%
reg query HKU\!defname!\Software\Microsoft\Office\16.0\Common\Licensing /s %nul2% |
findstr /i "CIDToLicenseIdsMapping LicenseIdToEmailMapping @" %nul% && set
vnextexist=1
reg delete HKU\!defname!\Software\Microsoft\Office\16.0\Common\Licensing /f %nul%
reg unload HKU\!defname! %nul%
)
)
)
)
if defined vnextexist (
echo:
call :dk_color %Gray% "Office vNext subscription detected:"
call :dk_color %Blue% "If active, this license overrides other activation methods."
call :dk_color %Blue% "If expiring soon, rerun the script after expiration."
call :dk_color2 %Blue% "If expired and script activation fails, get help - "
%_Yellow% " %mas%troubleshoot"
echo:
)
:: Clear device-based-licensing
:: [Link]
::==========================
:: Some retail products attempt to validate the license and may show a banner
"There was a problem checking this device's license status."
:: Resiliency registry entry can skip this check
set defname=DEFTEMP-%random%
for /f "skip=2 tokens=2*" %%a in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\ProfileList" /v Default" %nul6%') do call set "defdat=%%b"
::==========================
exit /b
::=================================================================================
=======================================================
:oh_uninstkey
set upk_result=0
call :dk_actid 0ff1ce15-a989-479d-af46-f275c6370663
if "%_actprojvis%"=="1" (
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description,
LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-
f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { $_.LicenseFamily
-notmatch 'Project' -and $_.LicenseFamily -notmatch 'Visio' } | Select-Object -
ExpandProperty ID" %nul6%') do call set "_allactid=%%a !_allactid!"
for /f "delims=" %%a in ('%psc% "Get-WmiObject -Query 'SELECT ID, Description,
LicenseFamily FROM %spp% WHERE ApplicationID=''0ff1ce15-a989-479d-af46-
f275c6370663'' AND PartialProductKey IS NOT NULL' | Where-Object { '!_allactid!' -
contains $_.ID -and ($_.LicenseFamily -match 'Project' -or $_.LicenseFamily -match
'Visio') } | Select-Object -ExpandProperty ID" %nul6%') do call set "_allactid=%
%a !_allactid!"
)
if %_wmic% EQU 1 wmic path %spp% where ID='%%#' call UninstallProductKey %nul%
if %_wmic% EQU 0 %psc% "$null=([WMI]'%spp%=''%%#''').UninstallProductKey()" %nul%
if !errorlevel!==0 (
set upk_result=1
) else (
set error=1
set upk_result=2
)
)
)
::=================================================================================
=======================================================
:oh_licrefresh
if exist "%SysPath%\spp\store_test\2.0\[Link]" (
%psc% "Stop-Service sppsvc -force; $sls = Get-WmiObject SoftwareLicensingService;
$f=[[Link]]::ReadAllText('!_batp!') -split ':xrm\:.*';.
([scriptblock]::Create($f[1])); ReinstallLicenses" %nul%
if !errorlevel! NEQ 0 %psc% "$sls = Get-WmiObject SoftwareLicensingService;
$f=[[Link]]::ReadAllText('!_batp!') -split ':xrm\:.*';.
([scriptblock]::Create($f[1])); ReinstallLicenses" %nul%
)
exit /b
::=================================================================================
=======================================================
:oh_checkapps
set checkapps=
set checknames=
for /f "tokens=1" %%i in ('tasklist ^| findstr /I ".exe" %nul6%') do (set
"checkapps=!checkapps! -%%i-")
for %%# in (
Access_msaccess.exe
Excel_excel.exe
Groove_groove.exe
Lync_lync.exe
OneNote_onenote.exe
Outlook_outlook.exe
PowerPoint_powerpnt.exe
Project_winproj.exe
Publisher_mspub.exe
Visio_visio.exe
Word_winword.exe
Lime_lime.exe
) do (
for /f "tokens=1-2 delims=_" %%A in ("%%#") do (
echo !checkapps! | find /i "-%%B-" %nul1% && (if defined checknames (set
"checknames=!checknames! %%A") else (set "checknames=%%A"))
)
)
exit /b
::=================================================================================
=======================================================
::===============
:: We couldn't find any keys (blocked/generic doesn't matter) for these Office 2010
products. If you have them, please share with us.
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_Retail________ExcelR_[HSExcelR]
14_7004b7f0-6407-4f45-8eac-966e5f868bde_Retail________GrooveR
14_133c8359-4e93-4241-8118-30bb18737ea0_Retail________PowerPointR_[HSPowerPointR]
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_Retail________WordR_[HSWordR]
14_dbe3aee0-5183-4ff7-8142-
66050173cb01_Retail________SmallBusBasicsR_[SmallBusBasicsMSDNR]
14_19316117-30a8-4773-8fd9-7f7231f4e060_SubPrepid_____HomeBusinessSubR
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_SubPrepid_____ProjectProSubR
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_SubPrepid_____ProPlusSubR
14_14f5946a-debc-4716-babc-7e2c240fec08_Retail________MondoR
14_533b656a-4425-480b-8e30-1a2358898350_MAK___________MondoVL
:ohookdata
set f=
for %%# in (
:: Office 2010
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_7KTYC-XR43P-C3MRW-BJKFD-XB%f
%YPG_Retail________AccessR
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_7XHPQ-BQMYG-YBP49-CY8B2-T8%f
%CGQ_ByPass________AccessRuntimeR
14_95ab3ec8-4106-4f9d-b632-03c019d1d23f_89RTQ-MT4GK-6CPTX-WWP7C-J9%f
%KXR_MAK___________AccessVL
14_71dc86ff-f056-40d0-8ffb-9592705c9b76_39TRR-C2F37-9WYJ2-MJQXH-B9%f
%38K_MAK___________ExcelVL
14_fdad0dfa-417d-4b4f-93e4-64ea8867b7fd_RCGT3-FPQDV-H49CD-PPDBF-TH%f
%47G_MAK___________GrooveVL
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_3YR9B-D9W79-BY66R-R8XYP-QY%f
%YYY_Retail________HomeBusinessR_[HomeBusinessDemoR]
14_09e2d37e-474b-4121-8626-58ad9be5776f_3X43R-HHHXX-FRHRW-2M2WJ-8V%f
%PHD_Retail________HomeStudentR_[HomeStudentDemoR]
14_ef1da464-01c8-43a6-91af-e4e5713744f9_XDGJY-KFHW9-JWX9X-YM4GW-GC%f
%8WR_Retail________InfoPathR
14_85e22450-b741-430c-a172-a37962c938af_6GKT2-KMJPK-4RRBF-8VQKB-JB%f
%6G6_MAK___________InfoPathVL
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_2TG3P-9DB76-4YT99-8RXGD-CW%f
%XBP_Retail________OneNoteR_[HSOneNoteR]
14_6860b31f-6a67-48b8-84b9-e312b3485c4b_CV64P-F4VRH-BJ33D-PH6MR-X6%f
%9RY_MAK___________OneNoteVL
14_fbf4ac36-31c8-4340-8666-79873129cf40_9D8FR-7GYBW-4YG8M-V36JK-VD%f
%7CM_Retail________OutlookR
14_a9aeabd8-63b8-4079-a28e-f531807fd6b8_J8C9M-YXMH2-9CX44-2C3YG-V7%f
%692_MAK___________OutlookVL
14_acb51361-c0db-4895-9497-1831c41f31a6_GMBWM-WVX26-7WHV4-DB43D-WV%f
%DY2_Retail________PersonalR_[PersonalDemoR,PersonalPrepaidR]
14_38252940-718c-4aa6-81a4-135398e53851_HPBQP-RJHDR-Q3472-PT9Q6-PB%f
%B72_MAK___________PowerPointVL
14_8b559c37-0117-413e-921b-b853aeb6e210_367X9-9HP9R-TKHY6-DH4QH-K9%f
%PY7_Retail________ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR,OEM-
SingleImage]
14_725714d7-d58f-4d12-9fa8-35873c6f7215_6JD4G-KRW3J-48MGV-DM6FC-T9%f
%WKR_Retail________ProjectProR_[ProjectProMSDNR]
14_1cf57a59-c532-4e56-9a7d-ffa2fe94b474_3XDTH-MMGJ6-F9MKX-THP8D-G9%f
%BP7_MAK___________ProjectProVL
14_688f6589-2bd9-424e-a152-b13f36aa6de1_2W96V-RTQ9R-2BPVT-PT8H9-MV%f
%68T_Retail________ProjectStdR
14_11b39439-6b93-4642-9570-f2eb81be2238_4DTT4-D4MKX-23KFH-JKR6T-YK%f
%G2J_MAK___________ProjectStdVL
14_71af7e84-93e6-4363-9b69-699e04e74071_2J9H6-H4D3G-PCXD2-96XVM-TR%f
%R73_Retail________ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
14_fdf3ecb9-b56f-43b2-a9b8-1b48b6bae1a7_6CD6C-9R8PB-T2D9Y-8RKKX-W7%f
%DFK_MAK___________ProPlusVL_[ProPlusAcadVL]
14_98677603-a668-4fa4-9980-3f1f05f78f69_CTRJP-P72VV-JBF8Y-4W6WW-HX%f
%HVG_Retail________PublisherR
14_3d014759-b128-4466-9018-e80f6320d9d0_32YG9-3VX77-YXJVV-PRVFW-TT%f
%8BV_MAK___________PublisherVL
14_8090771e-d41a-4482-929e-de87f1f47e46_7VKXH-9BWCG-RPTBB-JBRV3-GR%f
%HYC_MAK___________SmallBusBasicsVL
14_b78df69e-0966-40b1-ae85-30a5134dedd0_H48K6-FB4Y6-P83GH-9J7XG-HD%f
%KKX_ByPass________SPDR
14_b6d2565c-341d-4768-ad7d-addbe00bb5ce_W3BTX-H6BW7-Q6DFW-BXFFY-8R%f
%VJP_Retail________StandardR_[StandardMSDNR][KeyisforMSDNR]
14_1f76e346-e0be-49bc-9954-70ec53a4fcfe_2XTQP-GDR7C-GTXPC-6W6PV-4R%f
%XGC_MAK___________StandardVL_[StandardAcadVL]
14_2745e581-565a-4670-ae90-6bf7c57ffe43_VXHHB-W7HBD-7M342-RJ7P8-CH%f
%BD6_ByPass________StarterR
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_2RDPT-WPYQM-C2WXF-BTPDW-2J%f
%2HM_Retail________VisioSIR_Prem[Pro,Std]
14_36756cb8-8e69-4d11-9522-68899507cd6a_7PKFT-X2MKQ-GT6X2-8CB2W-CH%f
%C9K_MAK___________VisioSIVL_Prem[Pro,Std]
14_98d4050e-9c98-49bf-9be1-85e12eb3ab13_6J3XK-DFKGK-X373V-QJHYM-V3%f
%FC2_MAK___________WordVL
:: Office 2013
15_ab4d047b-97cf-4126-a69f-34df08e2f254_B7RFY-7NXPK-Q4342-Y9X2H-3J%f
%X4X_Retail________AccessRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f
%GJP_Bypass________AccessRuntimeRetail
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_9MF9G-CN32B-HV7XT-9XJ8T-9K%f
%VF4_MAK___________AccessVolume
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_NT889-MBH4X-8MD4H-X8R2D-WQ%f
%HF8_Retail________ExcelRetail
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_Y3N36-YCHDK-XYWBG-KYQVV-BD%f
%TJ2_MAK___________ExcelVolume
15_cfaf5356-49e3-48a8-ab3c-e729ab791250_BMK4W-6N88B-BP9QR-PHFCK-MG%f
%7GF_Retail________GrooveRetail
15_4825ac28-ce41-45a7-9e6e-1fed74057601_RN84D-7HCWY-FTCBK-JMXWM-HT%f
%7GJ_MAK___________GrooveVolume
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-
Perp______HomeBusinessPipcRetail
15_a2b90e7a-a797-4713-af90-f0becf52a1dd_YWD4R-CNKVT-VG8VJ-9333B-RC%f
%W9F_Subscription__HomeBusinessRetail
15_1fdfb4e4-f9c9-41c4-b055-c80daf00697d_B92QY-NKYFQ-6KTKH-VWW2Q-3P%f%B3B_OEM-
ARM_______HomeStudentARMRetail
15_ebef9f05-5273-404a-9253-c5e252f50555_QPG96-CNT7M-KH36K-KY4HQ-M7%f%TBR_OEM-
ARM_______HomeStudentPlusARMRetail
15_f2de350d-3028-410a-bfae-283e00b44d0e_6WW3N-BDGM9-PCCHD-9QPP9-P3%f
%4QG_Subscription__HomeStudentRetail
15_44984381-406e-4a35-b1c3-e54f499556e2_RV7NQ-HY3WW-7CKWH-QTVMW-29%f
%VHC_Retail________InfoPathRetail
15_9e016989-4007-42a6-8051-64eb97110cf2_C4TGN-QQW6Y-FYKXC-6WJW7-X7%f
%3VG_MAK___________InfoPathVolume
15_9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f
%CMY_PrepidBypass__LyncAcademicRetail
15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_N42BF-CBY9F-W2C7R-X397X-DY%f
%FQW_PrepidBypass__LyncEntryRetail
15_fada6658-bfc6-4c4e-825a-59a89822cda8_89P23-2NK2R-JXM2M-3Q8R8-BW%f
%M3Y_Retail________LyncRetail
15_e1264e10-afaf-4439-a98b-256df8bb156f_3WKCD-RN489-4M7XJ-GJ2GQ-YB%f
%FQ6_MAK___________LyncVolume
15_69ec9152-153b-471a-bf35-77ec88683eae_VNWHF-FKFBW-Q2RGD-HYHWF-R3%f
%HH2_Subscription__MondoRetail
15_f33485a0-310b-4b72-9a0e-b1d605510dbd_2YNYQ-FQMVG-CB8KW-6XKYD-M7%f
%RRJ_MAK___________MondoVolume
15_3391e125-f6e4-4b1e-899c-a25e6092d40d_4TGWV-6N9P6-G2H8Y-2HWKB-B4%f
%FF4_Bypass________OneNoteFreeRetail
15_8b524bcc-67ea-4876-a509-45e46f6347e8_3KXXQ-PVN2C-8P7YY-HCV88-GV%f
%GQ6_Retail________OneNoteRetail
15_b067e965-7521-455b-b9f7-c740204578a2_JDMWF-NJC7B-HRCHY-WFT8G-BP%f
%XD9_MAK___________OneNoteVolume
15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_9N4RQ-CF8R2-HBVCB-J3C9V-94%f
%P4D_Retail________OutlookRetail
15_8d577c50-ae5e-47fd-a240-24986f73d503_HNG29-GGWRG-RFC8C-JTFP4-2J%f
%9FH_MAK___________OutlookVolume
15_5aab8561-1686-43f7-9ff5-2c861da58d17_9CYB3-NFMRW-YFDG6-XC7TF-BY%f%36J_OEM-
Perp______PersonalPipcRetail
15_17e9df2d-ed91-4382-904b-4fed6a12caf0_2NCQJ-MFRMH-TXV83-J7V4C-RV%f
%RWC_Retail________PersonalRetail
15_31743b82-bfbc-44b6-aa12-85d42e644d5b_HVMN2-KPHQH-DVQMK-7B3CM-FG%f
%BFC_Retail________PowerPointRetail
15_e40dcb44-1d5c-4085-8e8f-943f33c4f004_47DKN-HPJP7-RF9M3-VCYT2-TM%f
%Q4G_MAK___________PowerPointVolume
15_064383fa-1538-491c-859b-0ecab169a0ab_N3QMM-GKDT3-JQGX6-7X3MQ-4G%f
%BG3_Retail________ProPlusRetail
15_2b88c4f2-ea8f-43cd-805e-4d41346e18a7_QKHNX-M9GGH-T3QMW-YPK4Q-QR%f
%P9V_MAK___________ProPlusVolume
15_4e26cac1-e15a-4467-9069-cb47b67fe191_CF9DD-6CNW2-BJWJQ-CVCFX-Y7%f%TXD_OEM-
Perp______ProfessionalPipcRetail
15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_MBQBN-CQPT6-PXRMC-TYJFR-3C%f
%8MY_Retail________ProfessionalRetail
15_2f72340c-b555-418d-8b46-355944fe66b8_WPY8N-PDPY4-FC7TF-KMP7P-KW%f
%YFY_Subscription__ProjectProRetail
15_ed34dc89-1c27-4ecd-8b2f-63d0f4cedc32_WFCT2-NBFQ7-JD7VV-MFJX6-6F%f
%2CM_MAK___________ProjectProVolume
15_58d95b09-6af6-453d-a976-8ef0ae0316b1_NTHQT-VKK6W-BRB87-HV346-Y9%f
%6W8_Subscription__ProjectStdRetail
15_2b9e4a37-6230-4b42-bee2-e25ce86c8c7a_3CNQX-T34TY-99RH4-C4YD2-KW%f
%YGV_MAK___________ProjectStdVolume
15_c3a0814a-70a4-471f-af37-2313a6331111_TWNCJ-YR84W-X7PPF-6DPRP-D6%f
%7VC_Retail________PublisherRetail
15_38ea49f6-ad1d-43f1-9888-99a35d7c9409_DJPHV-NCJV6-GWPT6-K26JX-C7%f
%GX6_MAK___________PublisherVolume
15_ba3e3833-6a7e-445a-89d0-7802a9a68588_3NY6J-WHT3F-47BDV-JHF36-23%f
%43W_PrepidBypass__SPDRetail
15_32255c0a-16b4-4ce2-b388-8a4267e219eb_V6VWN-KC2HR-YYDD6-9V7HQ-7T%f
%7VP_Retail________StandardRetail
15_a24cca51-3d54-4c41-8a76-4031f5338cb2_9TN6B-PCYH4-MCVDQ-KT83C-TM%f
%Q7T_MAK___________StandardVolume
15_a56a3b37-3a35-4bbb-a036-eee5f1898eee_NVK2G-2MY4G-7JX2P-7D6F2-VF%f
%QBR_Subscription__VisioProRetail
15_3e4294dd-a765-49bc-8dbd-cf8b62a4bd3d_YN7CF-XRH6R-CGKRY-GKPV3-BG%f
%7WF_MAK___________VisioProVolume
15_980f9e3e-f5a8-41c8-8596-61404addf677_NCRB7-VP48F-43FYY-62P3R-36%f
%7WK_Subscription__VisioStdRetail
15_44a1f6ff-0876-4edb-9169-dbb43101ee89_RX63Y-4NFK2-XTYC8-C6B3W-YP%f
%XPJ_MAK___________VisioStdVolume
15_191509f2-6977-456f-ab30-cf0492b1e93a_NB77V-RPFQ6-PMMKQ-T87DV-M4%f
%D84_Retail________WordRetail
15_9cedef15-be37-4ff0-a08a-13a045540641_RPHPB-Y7NC4-3VYFM-DW7VD-G8%f
%YJ8_MAK___________WordVolume
:: Office 365 - 15.0 version
15_742178ed-6b28-42dd-b3d7-b7c0ea78741b_Y9NF9-M2QWD-FF6RJ-QJW36-RR%f
%F2T_SubTest_______O365BusinessRetail
15_a96f8dae-da54-4fad-bdc6-108da592707a_3NMDC-G7C3W-68RGP-CB4MH-4C%f
%XCH_SubTest1______O365HomePremRetail
15_e3dacc06-3bc2-4e13-8e59-8e05f3232325_H8DN8-Y2YP3-CR9JT-DHDR9-C7%f
%GP3_Subscription2_O365ProPlusRetail
15_0bc1dae4-6158-4a1c-a893-807665b934b2_2QCNB-RMDKJ-GC8PB-7QGQV-7Q%f
%TQJ_Subscription2_O365SmallBusPremRetail
:: Office 365 - 16.0 version
16_dabaa1f2-109b-496d-bf49-1536cc862900_3HYJN-9KG99-F8VG9-V3DT8-JF%f
%MHV_Subscription__O365AppsBasicRetail
16_742178ed-6b28-42dd-b3d7-b7c0ea78741b_Y9NF9-M2QWD-FF6RJ-QJW36-RR%f
%F2T_SubTest_______O365BusinessRetail
16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_W62NQ-267QR-RTF74-PF2MH-JQ%f
%MTH_Subscription__O365EduCloudRetail
16_a96f8dae-da54-4fad-bdc6-108da592707a_3NMDC-G7C3W-68RGP-CB4MH-4C%f
%XCH_SubTest1______O365HomePremRetail
16_e3dacc06-3bc2-4e13-8e59-8e05f3232325_H8DN8-Y2YP3-CR9JT-DHDR9-C7%f
%GP3_Subscription2_O365ProPlusRetail
16_0bc1dae4-6158-4a1c-a893-807665b934b2_2QCNB-RMDKJ-GC8PB-7QGQV-7Q%f
%TQJ_Subscription2_O365SmallBusPremRetail
:: Office 2016
16_bfa358b0-98f1-4125-842e-585fa13032e6_WHK4N-YQGHB-XWXCC-G3HYC-6J%f
%F94_Retail________AccessRetail
16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_RNB7V-P48F4-3FYY6-2P3R3-63%f
%BQV_PrepidBypass__AccessRuntimeRetail
16_3b2fa33f-cd5a-43a5-bd95-f49f3f546b0b_JJ2Y4-N8KM3-Y8KY3-Y22FR-R3%f
%KVK_MAK___________AccessVolume
16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_RKJBN-VWTM2-BDKXX-RKQFD-JT%f
%YQ2_Retail________ExcelRetail
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_FVGNR-X82B2-6PRJM-YT4W7-8H%f
%V36_MAK___________ExcelVolume
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_2WQNF-GBK4B-XVG6F-BBMX7-M4%f%F2Y_OEM-
Perp______HomeBusinessPipcRetail
16_86834d00-7896-4a38-8fae-32f20b86fa2b_HM6FM-NVF78-KV9PM-F36B8-D9%f
%MXD_Retail________HomeBusinessRetail
16_090896a0-ea98-48ac-b545-ba5da0eb0c9c_PBQPJ-NC22K-69MXD-KWMRF-WF%f%G77_OEM-
ARM_______HomeStudentARMRetail
16_6bbe2077-01a4-4269-bf15-5bf4d8efc0b2_6F2NY-7RTX4-MD9KM-TJ43H-94%f%TBT_OEM-
ARM_______HomeStudentPlusARMRetail
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_PNPRV-F2627-Q8JVC-3DGR9-WT%f
%YRK_Retail________HomeStudentRetail
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_YWD4R-CNKVT-VG8VJ-9333B-RC%f
%3B8_Retail________HomeStudentVNextRetail
16_69ec9152-153b-471a-bf35-77ec88683eae_VNWHF-FKFBW-Q2RGD-HYHWF-R3%f
%HH2_Subscription__MondoRetail
16_2cd0ea7e-749f-4288-a05e-567c573b2a6c_FMTQQ-84NR8-2744R-MXF4P-PG%f
%YR3_MAK___________MondoVolume
16_436366de-5579-4f24-96db-3893e4400030_XYNTG-R96FY-369HX-YFPHY-F9%f
%CPM_Bypass________OneNoteFreeRetail
16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_FXF6F-CNC26-W643C-K6KB7-6X%f
%XW3_Retail________OneNoteRetail
16_23b672da-a456-4860-a8f3-e062a501d7e8_9TYVN-D76HK-BVMWT-Y7G88-9T%f
%PPV_MAK___________OneNoteVolume
16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_7N4KG-P2QDH-86V9C-DJFVF-36%f
%9W9_Retail________OutlookRetail
16_50059979-ac6f-4458-9e79-710bcb41721a_7QPNR-3HFDG-YP6T9-JQCKQ-KK%f
%XXC_MAK___________OutlookVolume
16_5aab8561-1686-43f7-9ff5-2c861da58d17_9CYB3-NFMRW-YFDG6-XC7TF-BY%f%36J_OEM-
Perp______PersonalPipcRetail
16_a9f645a1-0d6a-4978-926a-abcb363b72a6_FT7VF-XBN92-HPDJV-RHMBY-6V%f
%KBF_Retail________PersonalRetail
16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_N7GCB-WQT7K-QRHWG-TTPYD-7T%f
%9XF_Retail________PowerPointRetail
16_9b4060c9-a7f5-4a66-b732-faf248b7240f_X3RT9-NDG64-VMK2M-KQ6XY-DP%f
%FGV_MAK___________PowerPointVolume
16_de52bd50-9564-4adc-8fcb-a345c17f84f9_GM43N-F742Q-6JDDK-M622J-J8%f
%GDV_Retail________ProPlusRetail
16_c47456e3-265d-47b6-8ca0-c30abbd0ca36_FNVK8-8DVCJ-F7X3J-KGVQB-RC%f
%2QY_MAK___________ProPlusVolume
16_4e26cac1-e15a-4467-9069-cb47b67fe191_CF9DD-6CNW2-BJWJQ-CVCFX-Y7%f%TXD_OEM-
Perp______ProfessionalPipcRetail
16_d64edc00-7453-4301-8428-197343fafb16_NXFTK-YD9Y7-X9MMJ-9BWM6-J2%f
%QVH_Retail________ProfessionalRetail
16_2f72340c-b555-418d-8b46-355944fe66b8_WPY8N-PDPY4-FC7TF-KMP7P-KW%f
%YFY_Subscription__ProjectProRetail
16_82f502b5-b0b0-4349-bd2c-c560df85b248_PKC3N-8F99H-28MVY-J4RYY-CW%f
%GDH_MAK___________ProjectProVolume
16_16728639-a9ab-4994-b6d8-f81051e69833_JBNPH-YF2F7-Q9Y29-86CTG-C9%f
%YGV_MAKC2R________ProjectProXVolume
16_58d95b09-6af6-453d-a976-8ef0ae0316b1_NTHQT-VKK6W-BRB87-HV346-Y9%f
%6W8_Subscription__ProjectStdRetail
16_82e6b314-2a62-4e51-9220-61358dd230e6_4TGWV-6N9P6-G2H8Y-2HWKB-B4%f
%G93_MAK___________ProjectStdVolume
16_431058f0-c059-44c5-b9e7-ed2dd46b6789_N3W2Q-69MBT-27RD9-BH8V3-JT%f
%2C8_MAKC2R________ProjectStdXVolume
16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_WKWND-X6G9G-CDMTV-CPGYJ-6M%f
%VBF_Retail________PublisherRetail
16_fcc1757b-5d5f-486a-87cf-c4d6dedb6032_9QVN2-PXXRX-8V4W8-Q7926-TJ%f
%GD8_MAK___________PublisherVolume
16_9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f
%CMY_PrepidBypass__SkypeServiceBypassRetail
16_971cd368-f2e1-49c1-aedd-330909ce18b6_4N4D8-3J7Y3-YYW7C-73HD2-V8%f
%RHY_PrepidBypass__SkypeforBusinessEntryRetail
16_418d2b9f-b491-4d7f-84f1-49e27cc66597_PBJ79-77NY4-VRGFG-Y8WYC-CK%f
%CRC_Retail________SkypeforBusinessRetail
16_03ca3b9a-0869-4749-8988-3cbc9d9f51bb_DMTCJ-KNRKR-JV8TQ-V2CR2-VF%f
%TFH_MAK___________SkypeforBusinessVolume
16_4a31c291-3a12-4c64-b8ab-cd79212be45e_2FPWN-4H6CM-KD8QQ-8HCHC-P9%f
%XYW_Retail________StandardRetail
16_0ed94aac-2234-4309-ba29-74bdbb887083_WHGMQ-JNMGT-MDQVF-WDR69-KQ%f
%BWC_MAK___________StandardVolume
16_a56a3b37-3a35-4bbb-a036-eee5f1898eee_NVK2G-2MY4G-7JX2P-7D6F2-VF%f
%QBR_Subscription__VisioProRetail
16_295b2c03-4b1c-4221-b292-1411f468bd02_NRKT9-C8GP2-XDYXQ-YW72K-MG%f
%92B_MAK___________VisioProVolume
16_0594dc12-8444-4912-936a-747ca742dbdb_G98Q2-B6N77-CFH9J-K824G-XQ%f
%CC4_MAKC2R________VisioProXVolume
16_980f9e3e-f5a8-41c8-8596-61404addf677_NCRB7-VP48F-43FYY-62P3R-36%f
%7WK_Subscription__VisioStdRetail
16_44151c2d-c398-471f-946f-7660542e3369_XNCJB-YY883-JRW64-DPXMX-JX%f
%CR6_MAK___________VisioStdVolume
16_1d1c6879-39a3-47a5-9a6d-aceefa6a289d_B2HTN-JPH8C-J6Y6V-HCHKB-43%f
%MGT_MAKC2R________VisioStdXVolume
16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_P8K82-NQ7GG-JKY8T-6VHVY-88%f
%GGD_Retail________WordRetail
16_c3000759-551f-4f4a-bcac-a4b42cbf1de2_YHMWC-YN6V9-WJPXD-3WQKP-TM%f
%VCV_MAK___________WordVolume
:: Office 2019
16_518687bd-dc55-45b9-8fa6-f918e1082e83_WRYJ6-G3NP7-7VH94-8X7KP-JB%f
%7HC_Retail________Access2019Retail
16_385b91d6-9c2c-4a2e-86b5-f44d44a48c5f_6FWHX-NKYXK-BW34Q-7XC9F-Q9%f%PX7_MAK-
AE________Access2019Volume
16_22e6b96c-1011-4cd5-8b35-3c8fb6366b86_FGQNJ-JWJCG-7Q8MG-RMRGJ-9T%f
%QVF_PrepidBypass__AccessRuntime2019Retail
16_c201c2b7-02a1-41a8-b496-37c72910cd4a_KBPNW-64CMM-8KWCB-23F44-8B%f
%7HM_Retail________Excel2019Retail
16_05cb4e1d-cc81-45d5-a769-f34b09b9b391_8NT4X-GQMCK-62X4P-TW6QP-YK%f%PYF_MAK-
AE________Excel2019Volume
16_7fe09eef-5eed-4733-9a60-d7019df11cac_QBN2Y-9B284-9KW78-K48PB-R6%f
%2YT_Retail________HomeBusiness2019Retail
16_6303d14a-afad-431f-8434-81052a65f575_DJTNY-4HDWM-TDWB2-8PWC2-W2%f%RRT_OEM-
ARM_______HomeStudentARM2019Retail
16_215c841d-ffc1-4f03-bd11-5b27b6ab64cc_NM8WT-CFHB2-QBGXK-J8W6J-GV%f%K8F_OEM-
ARM_______HomeStudentPlusARM2019Retail
16_4539aa2c-5c31-4d47-9139-543a868e5741_XNWPM-32XQC-Y7QJC-QGGBV-YY%f
%7JK_Retail________HomeStudent2019Retail
16_20e359d5-927f-47c0-8a27-38adbdd27124_WR43D-NMWQQ-HCQR2-VKXDR-37%f
%B7H_Retail________Outlook2019Retail
16_92a99ed8-2923-4cb7-a4c5-31da6b0b8cf3_RN3QB-GT6D7-YB3VH-F3RPB-3G%f%QYB_MAK-
AE________Outlook2019Volume
16_2747b731-0f1f-413e-a92d-386ec1277dd8_NMBY8-V3CV7-BX6K6-2922Y-43%f
%M7T_Retail________Personal2019Retail
16_7e63cc20-ba37-42a1-822d-d5f29f33a108_HN27K-JHJ8R-7T7KK-WJYC3-FM%f
%7MM_Retail________PowerPoint2019Retail
16_13c2d7bf-f10d-42eb-9e93-abf846785434_29GNM-VM33V-WR23K-HG2DT-KT%f%QYR_MAK-
AE________PowerPoint2019Volume
16_a3072b8f-adcc-4e75-8d62-fdeb9bdfae57_BN4XJ-R9DYY-96W48-YK8DM-MY%f
%7PY_Retail________ProPlus2019Retail
16_6755c7a7-4dfe-46f5-bce8-427be8e9dc62_T8YBN-4YV3X-KK24Q-QXBD7-T3%f%C63_MAK-
AE________ProPlus2019Volume
16_1717c1e0-47d3-4899-a6d3-1022db7415e0_9NXDK-MRY98-2VJV8-GF73J-TQ%f
%9FK_Retail________Professional2019Retail
16_0d270ef7-5aaf-4370-a372-bc806b96adb7_JDTNC-PP77T-T9H2W-G4J2J-VH%f
%8JK_Retail________ProjectPro2019Retail
16_d4ebadd6-401b-40d5-adf4-a5d4accd72d1_TBXBD-FNWKJ-WRHBD-KBPHH-XD%f%9F2_MAK-
AE________ProjectPro2019Volume
16_bb7ffe5f-daf9-4b79-b107-453e1c8427b5_R3JNT-8PBDP-MTWCK-VD2V8-HM%f
%KF9_Retail________ProjectStd2019Retail
16_fdaa3c03-dc27-4a8d-8cbf-c3d843a28ddc_RBRFX-MQNDJ-4XFHF-7QVDR-JH%f%XGC_MAK-
AE________ProjectStd2019Volume
16_f053a7c7-f342-4ab8-9526-a1d6e5105823_4QC36-NW3YH-D2Y9D-RJPC7-VV%f
%B9D_Retail________Publisher2019Retail
16_40055495-be00-444e-99cc-07446729b53e_K8F2D-NBM32-BF26V-YCKFJ-29%f%Y9W_MAK-
AE________Publisher2019Volume
16_b639e55c-8f3e-47fe-9761-26c6a786ad6b_JBDKF-6NCD6-49K3G-2TV79-BK%f
%P73_Retail________SkypeforBusiness2019Retail
16_15a430d4-5e3f-4e6d-8a0a-14bf3caee4c7_9MNQ7-YPQ3B-6WJXM-G83T3-CB%f%BDK_MAK-
AE________SkypeforBusiness2019Volume
16_f88cfdec-94ce-4463-a969-037be92bc0e7_N9722-BV9H6-WTJTT-FPB93-97%f
%8MK_PrepidBypass__SkypeforBusinessEntry2019Retail
16_fdfa34dd-a472-4b85-bee6-cf07bf0aaa1c_NDGVM-MD27H-2XHVC-KDDX2-YK%f
%P74_Retail________Standard2019Retail
16_beb5065c-1872-409e-94e2-403bcfb6a878_NT3V6-XMBK7-Q66MF-VMKR4-FC%f%33M_MAK-
AE________Standard2019Volume
16_a6f69d68-5590-4e02-80b9-e7233dff204e_2NWVW-QGF4T-9CPMB-WYDQ9-7X%f
%P79_Retail________VisioPro2019Retail
16_f41abf81-f409-4b0d-889d-92b3e3d7d005_33YF4-GNCQ3-J6GDM-J67P3-FM%f%7QP_MAK-
AE________VisioPro2019Volume
16_4a582021-18c2-489f-9b3d-5186de48f1cd_263WK-3N797-7R437-28BKG-3V%f
%8M8_Retail________VisioStd2019Retail
16_933ed0e3-747d-48b0-9c2c-7ceb4c7e473d_BGNHX-QTPRJ-F9C9G-R8QQG-8T%f%27F_MAK-
AE________VisioStd2019Volume
16_72cee1c2-3376-4377-9f25-4024b6baadf8_JXR8H-NJ3MK-X66W8-78CWD-QR%f
%VR2_Retail________Word2019Retail
16_fe5fe9d5-3b06-4015-aa35-b146f85c4709_9F36R-PNVHH-3DXGQ-7CD2H-R9%f%D3V_MAK-
AE________Word2019Volume
:: Office 2021
16_f634398e-af69-48c9-b256-477bea3078b5_P286B-N3XYP-36QRQ-29CMP-RV%f
%X9M_Retail________Access2021Retail
16_ae17db74-16b0-430b-912f-4fe456e271db_JBH3N-P97FP-FRTJD-MGK2C-VF%f%WG6_MAK-
AE________Access2021Volume
16_844c36cb-851c-49e7-9079-12e62a049e2a_MNX9D-PB834-VCGY2-K2RW2-2D%f
%P3D_Bypass________AccessRuntime2021Retail
16_fb099c19-d48b-4a2f-a160-4383011060aa_V6QFB-7N7G9-PF7W9-M8FQM-MY%f
%8G9_Retail________Excel2021Retail
16_9da1ecdb-3a62-4273-a234-bf6d43dc0778_WNYR4-KMR9H-KVC8W-7HJ8B-K7%f%9DQ_MAK-
AE________Excel2021Volume
16_38b92b63-1dff-4be7-8483-2a839441a2bc_JM99N-4MMD8-DQCGJ-VMYFY-R6%f
%3YK_Subscription__HomeBusiness2021Retail
16_2f258377-738f-48dd-9397-287e43079958_N3CWD-38XVH-KRX2Y-YRP74-6R%f
%BB2_Subscription__HomeStudent2021Retail
16_279706f4-3a4b-4877-949b-f8c299cf0cc5_NB2TQ-3Y79C-77C6M-QMY7H-7Q%f
%Y8P_Retail________OneNote2021Retail
16_0c7af60d-0664-49fc-9b01-41b2dea81380_THNKC-KFR6C-Y86Q9-W8CB3-GF%f%7PD_MAK-
AE________OneNote2021Volume
16_778ccb9a-2f6a-44e5-853c-eb22b7609643_CNM3W-V94GB-QJQHH-BDQ3J-33%f
%Y8H_Bypass________OneNoteFree2021Retail
16_ecea2cfa-d406-4a7f-be0d-c6163250d126_4NCWR-9V92Y-34VB2-RPTHR-YT%f
%GR7_Retail________Outlook2021Retail
16_45bf67f9-0fc8-4335-8b09-9226cef8a576_JQ9MJ-QYN6B-67PX9-GYFVY-QJ%f%6TB_MAK-
AE________Outlook2021Volume
16_8f89391e-eedb-429d-af90-9d36fbf94de6_RRRYB-DN749-GCPW4-9H6VK-HC%f
%HPT_Retail________Personal2021Retail
16_c9bf5e86-f5e3-4ac6-8d52-e114a604d7bf_3KXXQ-PVN2C-8P7YY-HCV88-GV%f
%M96_Retail1_______PowerPoint2021Retail
16_716f2434-41b6-4969-ab73-e61e593a3875_39G2N-3BD9C-C4XCM-BD4QG-FV%f%YDY_MAK-
AE________PowerPoint2021Volume
16_c2f04adf-a5de-45c5-99a5-f5fddbda74a8_8WXTP-MN628-KY44G-VJWCK-C7%f
%PCF_Retail________ProPlus2021Retail
16_3f180b30-9b05-4fe2-aa8d-0c1c4790f811_RNHJY-DTFXW-HW9F8-4982D-MD%f%2CW_MAK-
AE1_______ProPlus2021Volume
16_96097a68-b5c5-4b19-8600-2e8d6841a0db_JRJNJ-33M7C-R73X3-P9XF7-R9%f%F6M_MAK-
AE________ProPlusSPLA2021Volume
16_711e48a6-1a79-4b00-af10-73f4ca3aaac4_DJPHV-NCJV6-GWPT6-K26JX-C7%f
%PBG_Retail________Professional2021Retail
16_3747d1d5-55a8-4bc3-b53d-19fff1913195_QKHNX-M9GGH-T3QMW-YPK4Q-QR%f
%WMV_Retail________ProjectPro2021Retail
16_17739068-86c4-4924-8633-1e529abc7efc_HVC34-CVNPG-RVCMT-X2JRF-CR%f%7RK_MAK-
AE1_______ProjectPro2021Volume
16_4ea64dca-227c-436b-813f-b6624be2d54c_2B96V-X9NJY-WFBRC-Q8MP2-7C%f
%HRR_Retail________ProjectStd2021Retail
16_84313d1e-47c8-4e27-8ced-0476b7ee46c4_3CNQX-T34TY-99RH4-C4YD2-KW%f%6WH_MAK-
AE________ProjectStd2021Volume
16_b769b746-53b1-4d89-8a68-41944dafe797_CDNFG-77T8D-VKQJX-B7KT3-KK%f
%28V_Retail1_______Publisher2021Retail
16_a0234cfe-99bd-4586-a812-4f296323c760_2KXJH-3NHTW-RDBPX-QFRXJ-MT%f%GXF_MAK-
AE________Publisher2021Volume
16_c3fb48b2-1fd4-4dc8-af39-819edf194288_DVBXN-HFT43-CVPRQ-J89TF-VM%f
%MHG_Retail________SkypeforBusiness2021Retail
16_6029109c-ceb8-4ee5-b324-f8eb2981e99a_R3FCY-NHGC7-CBPVP-8Q934-YT%f%GXG_MAK-
AE________SkypeforBusiness2021Volume
16_9e7e7b8e-a0e7-467b-9749-d0de82fb7297_HXNXB-J4JGM-TCF44-2X2CV-FJ%f
%VVH_Retail________Standard2021Retail
16_223a60d8-9002-4a55-abac-593f5b66ca45_2CJN4-C9XK2-HFPQ6-YH498-82%f%TXH_MAK-
AE________Standard2021Volume
16_b99ba8c4-e257-4b70-a31a-8bd308ce7073_BQWDW-NJ9YF-P7Y79-H6DCT-MK%f%Q9C_MAK-
AE________StandardSPLA2021Volume
16_814014d3-c30b-4f63-a493-3708e0dc0ba8_T6P26-NJVBR-76BK8-WBCDY-TX%f
%3BC_Retail________VisioPro2021Retail
16_c590605a-a08a-4cc7-8dc2-f1ffb3d06949_JNKBX-MH9P4-K8YYV-8CG2Y-VQ%f%2C8_MAK-
AE________VisioPro2021Volume
16_16d43989-a5ef-47e2-9ff1-272784caee24_89NYY-KB93R-7X22F-93QDF-DJ%f
%6YM_Retail________VisioStd2021Retail
16_d55f90ee-4ba2-4d02-b216-1300ee50e2af_BW43B-4PNFP-V637F-23TR2-J4%f%7TX_MAK-
AE________VisioStd2021Volume
16_fb33d997-4aa3-494e-8b58-03e9ab0f181d_VNCC4-CJQVK-BKX34-77Y8H-CY%f
%XMR_Retail________Word2021Retail
16_0c728382-95fb-4a55-8f12-62e605f91727_BJG97-NW3GM-8QQQ7-FH76G-68%f%6XM_MAK-
AE________Word2021Volume
:: Office 2024
16_8fdb1f1e-663f-4f2e-8fdb-7c35aee7d5ea_GNXWX-DF797-B2JT3-82W27-KH%f%PXT_MAK-
AE________ProPlus2024Volume-Preview
16_33b11b14-91fd-4f7b-b704-e64a055cf601_X86XX-N3QMW-B4WGQ-QCB69-V2%f%6KW_MAK-
AE________ProjectPro2024Volume-Preview
16_eb074198-7384-4bdd-8e6c-c3342dac8435_DW99Y-H7NT6-6B29D-8JQ8F-R3%f%QT7_MAK-
AE________VisioPro2024Volume-Preview
16_e563d108-7b0e-418a-8390-20e1d133d6bb_P6NMW-JMTRC-R6MQ6-HH3F2-BT%f
%HKB_Retail________Access2024Retail
16_f748e2f7-5951-4bc2-8a06-5a1fbe42f5f4_CXNJT-98HPP-92HX7-MX6GY-2P%f%VFR_MAK-
AE________Access2024Volume
16_f3a5e86a-e4f8-4d88-8220-1440c3bbcefa_82CNJ-W82TW-BY23W-BVJ6W-W4%f
%8GP_Retail________Excel2024Retail
16_523fbbab-c290-460d-a6c9-48e49709cb8e_7Y287-9N2KC-8MRR3-BKY82-2D%f%QRV_MAK-
AE________Excel2024Volume
16_885f83e0-5e18-4199-b8be-56697d0debfb_N69X7-73KPT-899FD-P8HQ4-QG%f
%TP4_Retail________Home2024Retail
16_acd4eccb-ff89-4e6a-9350-d2d56276ec69_PRKQM-YNPQR-77QT6-328D7-BD%f
%223_Retail________HomeBusiness2024Retail
16_6f5fd645-7119-44a4-91b4-eccfeeb738bf_2CFK4-N44KG-7XG89-CWDG6-P7%f
%P27_Retail________Outlook2024Retail
16_9a1e1bac-2d8b-4890-832f-0a68b27c16e0_NQPXP-WVB87-H3MMB-FYBW2-9Q%f%FPB_MAK-
AE________Outlook2024Volume
16_da9a57ae-81a8-4cb3-b764-5840e6b5d0bf_CT2KT-GTNWH-9HFGW-J2PWJ-XW%f
%7KJ_Retail________PowerPoint2024Retail
16_eca0d8a6-e21b-4622-9a87-a7103ff14012_RRXFN-JJ26R-RVWD2-V7WMP-27%f%PWQ_MAK-
AE________PowerPoint2024Volume
16_295dcc21-151a-4b4d-8f50-2b627ea197f6_GNJ6P-Y4RBM-C32WW-2VJKJ-MT%f
%HKK_Retail________ProjectPro2024Retail
16_2141d341-41aa-4e45-9ca1-201e117d6495_WNFMR-HK4R7-7FJVM-VQ3JC-76%f%HF6_MAK-
AE1_______ProjectPro2024Volume
16_ead42f74-817d-45b4-af6b-3beeb36ba650_C2PNM-2GQFC-CY3XR-WXCP4-GX%f
%3XM_Retail________ProjectStd2024Retail
16_4b6d9b9b-c16e-429d-babe-8bb84c3c27d6_F2VNW-MW8TT-K622Q-4D96H-PW%f%J8X_MAK-
AE________ProjectStd2024Volume
16_db249714-bb54-4422-8c78-2cc8d4c4a19f_VWCNX-7FKBD-FHJYG-XBR4B-88%f
%KC6_Retail________ProPlus2024Retail
16_d77244dc-2b82-4f0a-b8ae-1fca00b7f3e2_4YV2J-VNG7W-YGTP3-443TK-TF%f%8CP_MAK-
AE1_______ProPlus2024Volume
16_3046a03e-2277-4a51-8ccd-a6609eae8c19_XKRBW-KN2FF-G8CKY-HXVG6-FV%f%Y2V_MAK-
AE________SkypeforBusiness2024Volume
16_44a07f51-8263-4b2f-b2a5-70340055c646_GVG6N-6WCHH-K2MVP-RQ78V-3J%f%7GJ_MAK-
AE1_______Standard2024Volume
16_282d8f34-1111-4a6f-80fe-c17f70dec567_HGRBX-N68QF-6DY8J-CGX4W-XW%f
%7KP_Retail________VisioPro2024Retail
16_4c2f32bf-9d0b-4d8c-8ab1-b4c6a0b9992d_GBNHB-B2G3Q-G42YB-3MFC2-7C%f%JCX_MAK-
AE________VisioPro2024Volume
16_8504167d-887a-41ae-bd1d-f849d834352d_VBXPJ-38NR3-C4DKF-C8RT7-RG%f
%HKQ_Retail________VisioStd2024Retail
16_0978336b-5611-497c-9414-96effaff4938_YNFTY-63K7P-FKHXK-28YYT-D3%f%2XB_MAK-
AE________VisioStd2024Volume
16_f6b24e61-6aa7-4fd2-ab9b-4046cee4230a_XN33R-RP676-GMY2F-T3MH7-GC%f
%VKR_Retail________Word2024Retail
16_06142aa2-e935-49ca-af5d-08069a3d84f3_WD8CQ-6KNQM-8W2CX-2RT63-KK%f%3TP_MAK-
AE________Word2024Volume
) do (
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
)
)
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's. On
each install, it will install a unique sppc dll file
:oh_extractdll
set b=
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':%_hook%\:.*';$encoded =
($f[1]) -replace '-', 'A' -replace '_', 'a';$bytes = [Con%b%vert]::FromBas%b
%e64String($encoded); $PePath='%1'; $offset='%2';
$m=[[Link]]::ReadAllText('!_batp!') -split ':hexedit\:.*';.
([scriptblock]::Create($m[1]))" %nul2% | find /i "Error found" %nul1% && set
hasherror=1
exit /b
:hexedit:
# Use a MemoryStream to perform operations on the bytes
$MemoryStream = New-Object [Link]
$Writer = New-Object [Link]($MemoryStream)
$[Link]($bytes)
# Offset information
$timestampOffset = 136
$exportTimestampOffset = $offset
$checkSumOffset = 216
# Calculate timestamp
$currentTimestamp = [DateTime]::UtcNow
$unixTimestamp = [int]($currentTimestamp - (Get-Date -Year 1970 -Month 1 -Day 1 -
Hour 0 -Minute 0 -Second 0)).TotalSeconds
# Change timestamps
$[Link] = $timestampOffset
$[Link]($unixTimestamp)
$[Link] = $exportTimestampOffset
$[Link]($unixTimestamp)
$[Link]()
$[Link]()
:hexedit:
::=================================================================================
=======================================================
::
:: This below blocks of text is encoded in base64 format
:: The blocks in labels "[Link]" and "[Link]" contains below files
::
:: 09865ea5993215965e8f27a74b8a41d15fd0f60f5f404cb7a8b3c7757acdab02 *[Link]
:: 393a1fa26deb3663854e41f2b687c188a9eacd87b23f17ea09422c4715cb5a9f *[Link]
::
:: The files are encoded in base64 to make AIO version.
::
:: mass()grave(dot)dev/ohook
:: Here you can find the files source code and info on how to rebuild the
identical [Link] files
::
:: [Link]/a/35335273
:: Here you can check how to extract [Link] files from base64
::
:: For any further question, feel free to contact us on
mass()grave(dot)dev/contactus
::
::=================================================================================
=======================================================
::
:: If you want to use a different [Link] or without base64 format, then create a
folder named "BIN" where this script is located and
:: place these two files in that "BIN" folder. [Link], [Link]
:: Script will auto pick that instead of using the below from base64 section. You
can also delete the below code in that case.
::
::=================================================================================
=======================================================
::
:: Replace "-" with "A" and "_" with "a" before base64 conversion
:: It was changed to prevent antiviruses from detecting and flagging base64
encoding
:[Link]:
TVqQ--M----E----//8--Lg---------Q-----------------------------------------------
g-----4fug4-t-
nNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4g_W4gRE9TIG1vZGUuDQ0KJ---------BQRQ--
T-EH-MDc0GQ----------O--
DiML-QIo--I----e--------RxE----Q----------C-_g-Q-----g--B-----E----G----------
CQ----B---+dY---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---------------------------------------------------------------------------------
--------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
FWJ5VZTjUXwg+wwx0Xw-----IlEJBSNRfSJ
RCQQi0UMx0QkD-----CJRCQEi0UIx0QkC--ggGqJBCTHRfQ-----6-oB--CLNXhggGqD7BiFwInDi0Xwd-
qJBCQx2//WUesyi1X0x0QkB-oggGqJBCSJVCQI/xW-YIBqg+wMhcCLRfCJBCR0Cv/WuwE---BS6wP/
1lCNZfiJ2FteXcNVieVXVlOD7DyLRRiLdRyJRCQQ
i0UUiXQkFIlEJ-yLRRCJRCQIi0UMiUQkBItFCIkEJOiE----McmD7BiJx4X-
dVyLRRg5CHZV_9koiwYB2IN4E-B0RYlEJ-SLRQiJTeSJBCTo+/7//4tN5IX-dSwDHsdDE-E---
DHQxQ-----x0MY-----MdDH-----DHQy------x0Mk-----EHrpI1l9In4W15fXcIY
-LgB----wgw-kP8lcGC-_pCQ/yVsYIBqkJD/////-----P////
8----------------------------------------------------------------------------------
-------------------------------------------------------------------
------------------------------------------------TgBh-G0-ZQ---Ec-cgBh-GM-
ZQ---------------------------------------------------------------------------------
---------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
------------------------------------------------U----------F6Ug-Bf-gBGwwEBIgB---
k----H----ODf//+d-----EEOCIUCQg0FSIYD
gwQCj8NBxkHFD-QEK----EQ---BV4P//qg----BBDgiF-kINBU_H-4YEgwUCm8NBxkHHQcUMB-QQ----
c----NPg//
8I---------------------------------------------------------------------------------
---------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
------------------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--nR---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_2V0UmV
zcG9uc2U-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-
BTUFBDUy5TTHBJc0N1cnJlbnRJbnN0YWxsZWRQcm9kdWN0S2V5RGVmYXVsdEtleQBTTHBJc0N1cnJlbnRJb
nN0YWxsZWRQcm9kdWN0S2V5RGVmYXVsdEtleQBTUFBDUy5TTHBQcm9jZXNzVk1Q
_XBlTWVzc2FnZQBTTHBQcm9jZXNzVk1Q_XBlTWVzc2FnZQBTUFBDUy5TTHBTZXRBY3RpdmF0_W9uSW5Qcm9
ncmVzcwBTTHBTZXRBY3RpdmF0_W9uSW5Qcm9ncmVzcwBTUFBDUy5TTHBUcmlnZ2VyU2VydmljZVdvcmtlcg
BTTHBUcmlnZ2VyU2VydmljZVdvcmtlcgBT
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/+---B--U---------BQ--------------------Q-B--C--------------------f-
I---E-UwB0-HI-_QBu-Gc-RgBp-Gw-ZQBJ-G4-ZgBv----W-I---E-M--0-D--OQ-w-DQ-RQ-0----eg-
t--E-QwBv-G0-c-Bh-G4-eQBO-GE-bQBl----
--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-1-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-0-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-NQ-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----
MzBIMGkwdjBSMVox-------------------------------------------------------------------
-----------------------------------------------------------------------------------
------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----
:[Link]:
:==================================================================================
======================================================
:: Replace "-" with "A" and "_" with "a" before base64 conversion
:: It was changed to prevent antiviruses from detecting and flagging base64
encoding
:[Link]:
TVqQ--M----E----//8--Lg---------Q-----------------------------------------------
g-----4fug4-t-
nNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4g_W4gRE9TIG1vZGUuDQ0KJ---------BQRQ--
ZIYH-MDc0GQ----------P--
LiIL-gIo--I----e--------ExE----Q-----JIx-g-----Q-----g--B----------G----------
CQ----B---LeY---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----------------------------------------------------------------------------------
-----------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
EFUU0iD7EhFMclMjQXvDw--SI1EJDjHRCQ0
-----EiJRCQoSI1EJDRIiUQkIEjHRCQ4-----OgF-Q--SItMJDhIix1ZY---hcBBicR0B//
TRTHk6yhEi0QkNEiNF_kP--D/FUlg--BIi0wkOEiFwHQK/9NBv-E---Dr-v/
TRIngSIPESFtBXMNBVUFUVVdWU0iD7Dgx9kyLrCSQ----SIusJJg---BMiWwkIEiJz0iJ
bCQo6J----BBicSFwHVEQTl1-HY+SGveKEiLVQBI-dqDeh--dChIifnoIv///4X-dRxI-10-SMdDE-E---
BIx0MY-----EjHQy------SP/G67xEieBIg8Q4W15fXUFcQV3Du-E---DDkJCQkJCQkP8lel8--
JCQDx+E------D/JXpf--CQk-8fh-------/yVKXw--
kJD/JTpf--CQkP//////////----------D//////////
w----------------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------TgBh-G0-ZQ---Ec-cgBh-GM-
ZQ---------------------------------------------------------------------------------
---------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-------------------------------------------------E---iB----B---CIE---ExE---x----
TEQ--GRE--CB-------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
--------------EH-w-HggMw-s----EMBw-MYggwB2-Gc-VQBM-C0----
Q----------------------------------------------------------------------------------
------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------
-----------------------------------------------------------------------------------
------------------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--CIE---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--/VI--BpT--BGUw--glM--MhT---DV---KVQ--FFU--CFV---
w1Q---tV--BKVQ--g1U--LxV--DzVQ--J1Y--FlW
--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-
BTUFBDUy5TTEdldEdlbnVpbmVJbmZvcm1hdGlvbgBTTEdldEdlbnVpbmVJbmZvcm1hdGlvbgBTUFBDUy5TT
EdldEluc3RhbGxlZFByb2R1Y3RLZXlJZHM-U0xHZXRJbnN0YWxsZWRQcm9kdWN0S2V5SWRz-
FNQUENTLlNMR2V0TGljZW5z
ZQBTTEdldExpY2Vuc2U-U1BQQ1MuU0xHZXRM_WNlbnNlRmlsZUlk-FNMR2V0TGljZW5zZUZpbGVJZ-
BTUFBDUy5TTEdldExpY2Vuc2VJbmZvcm1hdGlvbgBTTEdldExpY2Vuc2VJbmZvcm1hdGlvbgBTTEdldExpY
2Vuc2luZ1N0YXR1c0luZm9ybWF0_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_W9uRGF0YQBTTFNldEF1dGhlbnRpY2F
0_W9uRGF0YQBTUFBDUy5T
TFNldEN1cnJlbnRQcm9kdWN0S2V5-FNMU2V0Q3VycmVudFByb2R1Y3RLZXk-
U1BQQ1MuU0xTZXRHZW51_W5lSW5mb3JtYXRpb24-U0xTZXRHZW51_W5lSW5mb3JtYXRpb24-
U1BQQ1MuU0xVbmluc3RhbGxM_WNlbnNl-FNMVW5pbnN0YWxsTGljZW5zZQBTUFBDUy5T
TFVu_W5zdGFsbFByb29mT2ZQdXJj_GFzZQBTTFVu_W5zdGFsbFByb29mT2ZQdXJj_GFzZQBTUFBDUy5TTFV
ubG9hZEFwcGxpY2F0_W9uUG9s_WNpZXM-U0xVbmxvYWRBcHBs_WNhdGlvblBvbGlj_WVz-
FNQUENTLlNMVW5yZWdpc3RlckV2ZW50-FNMVW5yZWdpc3Rl
ckV2ZW50-FNQUENTLlNMVW5yZWdpc3RlclBsdWdpbgBTTFVucmVn_XN0ZXJQbHVn_W4-
U1BQQ1MuU0xwQXV0_GVudGljYXRlR2VudWluZVRpY2tldFJlc3BvbnNl-
FNMcEF1dGhlbnRpY2F0ZUdlbnVpbmVU_WNrZXRSZXNwb25zZQBTUFBDUy5TTHBCZWdpbkdlbnVp
bmVU_WNrZXRUcmFuc2FjdGlvbgBTTHBCZWdpbkdlbnVpbmVU_WNrZXRUcmFuc2FjdGlvbgBTUFBDUy5TTHB
DbGVhckFjdGl2YXRpb25JblByb2dyZXNz-FNMcENsZWFyQWN0_XZhdGlvbkluUHJvZ3Jlc3M-
U1BQQ1MuU0xwRGVwb3NpdERvd25sZXZlbEdlbnVpbmVU
_WNrZXQ-U0xwRGVwb3NpdERvd25sZXZlbEdlbnVpbmVU_WNrZXQ-
U1BQQ1MuU0xwRGVwb3NpdFRv_2VuQWN0_XZhdGlvblJlc3BvbnNl-
FNMcERlcG9z_XRUb2tlbkFjdGl2YXRpb25SZXNwb25zZQBTUFBDUy5TTHBHZW5lcmF0ZVRv_2VuQWN0_XZh
dGlvbkNoYWxs
ZW5nZQBTTHBHZW5lcmF0ZVRv_2VuQWN0_XZhdGlvbkNoYWxsZW5nZQBTUFBDUy5TTHBHZXRHZW51_W5lQmx
vYgBTTHBHZXRHZW51_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/4---E-BQ---------F--------------------B--E--I-------------------
B8-g---QBT-HQ-cgBp-G4-ZwBG-Gk-b-Bl-Ek-
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-DU-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-DQ-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-1-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------------------------------------------------------------------------------
---------------------
-----------------------------------------------------------------------------------
-----
:[Link]:
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:TSforgeActivation
:: To activate Windows ESU, run the script with "/Z-ESU" parameter or change 0 to
1 in below line
set _actesu=0
:: To activate all Office apps (including Project/Visio), run the script with "/Z-
Office" parameter or change 0 to 1 in below line
set _actoff=0
:: To activate Office K-M-S host (csvlk), run the script with "/Z-OffHost"
parameter or change 0 to 1 in below line
set _actoffhost=0
:: To activate Windows 8/8.1 APPX Sideloading (APPXLOB), run the script with "/Z-
APPX" parameter or change 0 to 1 in below line
set _actappx=0
:: To reset rearm counter, evaluation period and clear the tamper state, key lock,
run the script with "/Z-Reset" parameter or change 0 to 1 in below line
set _resall=0
:: Debug Mode:
:: To run the script in debug mode, change 0 to any parameter above that you want
to run, in below line
set "_debug=0"
:: Script will run in unattended mode if parameters are used OR value is changed
in above lines.
:: If multiple options are selected then script will only pick one from the
advanced option.
::=================================================================================
=======================================================
cls
color 07
set KS=K%blank%MS
title TSforge 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 "%%A"=="-el" (set _elev=1)
if /i "%%A"=="/Z-Windows" (set _actwin=1)
if /i "%%A"=="/Z-ESU" (set _actesu=1)
if /i "%%A"=="/Z-Office" (set _actoff=1)
if /i "%%A"=="/Z-ProjectVisio" (set _actprojvis=1)
if /i "%%A"=="/Z-WindowsESUOffice" (set _actwinesuoff=1)
if /i "%%A"=="/Z-WinHost" (set _actwinhost=1)
if /i "%%A"=="/Z-OffHost" (set _actoffhost=1)
if /i "%%A"=="/Z-APPX" (set _actappx=1)
echo "%%A" | find /i "/Z-ID-" >nul && (set _actman=1& set "filtsids=%%A" & call
set "filtsids=%%filtsids:~6%%" & if defined filtsids call set tsids=%%filtsids%% %
%tsids%%)
if /i "%%A"=="/Z-Reset" (set _resall=1)
if /i "%%A"=="/Z-SCID" (set _actmethod=SCID)
if /i "%%A"=="/Z-ZCID" (set _actmethod=ZCID)
if /i "%%A"=="/Z-KMS4k" (set _actmethod=KMS4k)
)
::=================================================================================
=======================================================
:ts_menu
if %_unattended%==0 (
cls
if not defined terminal mode 76, 33
title TSforge Activation %masver%
echo:
echo:
echo:
echo ______________________________________________________________
echo:
echo [1] Activate - Windows
echo [2] Activate - ESU
echo [3] Activate - Office [All]
echo [4] Activate - Office [Project/Visio]
echo [5] Activate - All
echo _______________________________________________
echo:
echo Advanced Options:
echo:
echo [A] Activate - Windows %KS% Host
echo [B] Activate - Office %KS% Host
echo [C] Activate - Windows 8/8.1 APPX Sideloading
echo [D] Activate - Manually Select Products
if defined _vis (
echo [E] Reset - Rearm/Timers
) else (
echo [E] Reset - Rearm/Timers/Tamper/Lock
)
echo [F] Change - Activation Method [%_actmethod%]
echo _______________________________________________
echo:
echo [6] Remove TSforge Activation
echo [7] Download Office
echo [0] %_exitmsg%
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard..."
choice /C:12345ABCDEF670 /N
set _el=!errorlevel!
if !_el!==14 exit /b
if !_el!==13 start %mas%genuine-installation-media & goto :ts_menu
if !_el!==12 call :ts_remove & cls & goto :ts_menu
if !_el!==11 goto :ts_changemethod
if !_el!==10 cls & setlocal & set "_resall=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==9 cls & setlocal & set "_actman=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==8 cls & setlocal & set "_actappx=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==7 cls & setlocal & set "_actoffhost=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==6 cls & setlocal & set "_actwinhost=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==5 cls & setlocal & set "_actwinesuoff=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==4 cls & setlocal & set "_actprojvis=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==3 cls & setlocal & set "_actoff=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==2 cls & setlocal & set "_actesu=1" & call :ts_start & endlocal &
cls & goto :ts_menu
if !_el!==1 cls & setlocal & set "_actwin=1" & call :ts_start & endlocal &
cls & goto :ts_menu
goto :ts_menu
)
goto :ts_start
::=================================================================================
=======================================================
:ts_changemethod
cls
if not defined terminal mode 76, 36
echo:
echo:
echo:
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " [1] " %_Green% "Auto"
echo Builds ^>= 26100 - StaticCID (KMS4k if offline)
echo Builds ^< 26100 - ZeroCID
echo __________________________________________________
echo:
echo [2] StaticCID
echo Needs Internet
echo Not for Windows 7 or older
echo __________________________________________________
echo:
echo [3] ZeroCID
echo Works reliably on builds below 26100
echo Does not work on builds above 26100.4188
echo __________________________________________________
echo:
echo [4] KMS4k
echo Volume licenses only
echo Activates for 4000+ years
echo __________________________________________________
echo:
echo [5] Learn More
echo [0] %_exitmsg%
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard..."
choice /C:123450 /N
set _el=!errorlevel!
::=================================================================================
=======================================================
:ts_start
cls
echo:
echo Initializing...
call :dk_chkmal
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_ckeckwmic
call :dk_checksku
call :dk_product
call :dk_sppissue
::=================================================================================
=======================================================
set error=
cls
echo:
call :dk_showosinfo
if /i %_actmethod%==Auto (
if %winbuild% GEQ 26100 (
set tsmethod=StaticCID
) else (
set tsmethod=ZeroCID
)
)
::=================================================================================
=======================================================
if /i %tsmethod%==StaticCID (
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
if defined _int (
echo Checking Internet Connection [Connected!ping_f!]
) else (
if /i %_actmethod%==Auto if not %_actman%==1 set tsmethod=KMS4k
if /i !tsmethod!==KMS4k (
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
call :dk_color %Blue% "Switching To KMS4k activation because Internet is needed for
StaticCID method."
) else (
set error=1
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
call :dk_color %Blue% "Internet is required for TSforge StaticCID option."
)
echo:
)
)
::=================================================================================
=======================================================
:: Software Protection
:: Windows Management Instrumentation
call :dk_errorcheck
call :ts_getedition
if not defined tsedition (
call :dk_color %Red% "Checking Windows Edition ID [Not found in
installed licenses, aborting...]"
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto :dk_done
)
if /i !tsmethod!==KMS4k (
call :_taskclear-cache
echo Clearing %KS% Cache [Successful]
)
::=================================================================================
=======================================================
::=================================================================================
=======================================================
:: Process Windows
:: Check if system is permanently activated or not
echo:
echo Processing Windows...
set /a UBR=0
if %winbuild% EQU 26100 (
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b
if !UBR! LSS 4188 (set dontcheckact=1)
)
set tempid=
if /i %tsmethod%==KMS4k (set keytype=ks) else (set keytype=zero)
for /f "delims=" %%a in ('%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split
':wintsid\:.*';. ([scriptblock]::Create($f[1]))" %nul6%') do (
echo "%%a" | findstr /r ".*-.*-.*-.*-.*" %nul1% && (set tsids=!tsids! %%a& set
tempid=%%a)
)
if defined tempid (
echo Checking Activation ID [%tempid%] [%tsedition%]
) else (
call :dk_color %Red% "Checking Activation ID [Not Found]
[%tsedition%] [%osSKU%]"
set error=1
if /i %tsmethod%==KMS4k (
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
)
goto :ts_esu
)
if defined winsub (
call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] found. Script will
activate base edition [SKU ID-%regSKU%]."
echo:
)
goto :ts_esu
::=================================================================================
=======================================================
:ts_oldks
:: KMS keys for KMS4k method because TSforge cannot install KMS key on Windows
Vista and 7
set f=
set key=
set tempid=
if not defined allapps call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
for %%# in (
:: Windows 7
ae2ee509-1b34-41c0-acb7-6d4650168915_33PXH-7Y6KF-2VJC9-XBBR8-HV%f%THH_Enterprise
1cb6d605-11b3-4e14-bb30-da91c8e3983a_YDRBP-3D83W-TY26F-D46B2-XC%f%KRJ_EnterpriseN
b92e9980-b9d5-4821-9c94-140f632f6312_FJ82H-XT6CR-J8D7P-XQJJ2-GP%f%DD4_Professional
54a09a0d-d57b-4c10-8b69-a842d6590ad5_MRPKT-YTG23-K7D7T-X2JMM-QY%f%7MG_ProfessionalN
db537896-376f-48ae-a492-53d0547773d0_YBYF6-BHCR3-JPKRB-CDW7B-F9%f
%BK4_Embedded_POSReady
aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395_73KQT-CD9G6-K7TQG-66MRP-CQ%f
%22C_Embedded_ThinPC
5a041529-fef8-4d07-b06f-b59b573b32d2_W82YF-2Q76Y-63HXB-FGJG9-GF%f%7QX_ProfessionalE
46bbed08-9c7b-48fc-a614-95250573f4ea_C29WB-22CC8-VJ326-GHFJW-H9%f%DH4_EnterpriseE
:: Windows Server 2008 R2
68531fb9-5511-4989-97be-d11a0f55633f_YC6KT-GKW9T-YTKYR-T4X34-R7%f
%VHC_ServerStandard
7482e61b-c589-4b7f-8ecc-46d455ac3b87_74YFP-3QFB3-KQT8W-PMXWJ-7M%f
%648_ServerDatacenter
620e2b3d-09e7-42fd-802a-17a13652fe7a_489J6-VHDMP-X63PK-3K798-CP%f
%X3Y_ServerEnterprise
7482e61b-c589-4b7f-8ecc-46d455ac3b87_74YFP-3QFB3-KQT8W-PMXWJ-7M%f
%648_ServerDatacenterCore
68531fb9-5511-4989-97be-d11a0f55633f_YC6KT-GKW9T-YTKYR-T4X34-R7%f
%VHC_ServerStandardCore
620e2b3d-09e7-42fd-802a-17a13652fe7a_489J6-VHDMP-X63PK-3K798-CP%f
%X3Y_ServerEnterpriseCore
8a26851c-1c7e-48d3-a687-fbca9b9ac16b_GT63C-RJFQ3-4GMB6-BRFB9-CB%f
%83V_ServerEnterpriseIA64
a78b8bd9-8017-4df5-b86a-09f756affa7c_6TPJF-RBVHG-WBW2R-86QPH-6R%f%TM4_ServerWeb
cda18cf3-c196-46ad-b289-60c072869994_TT8MH-CG224-D3D7Q-498W2-9Q%f%CTX_ServerHPC
a78b8bd9-8017-4df5-b86a-09f756affa7c_6TPJF-RBVHG-WBW2R-86QPH-6R%f%TM4_ServerWebCore
f772515c-0e87-48d5-a676-e6962c3e1195_736RG-XDKJK-V34PF-BHK87-J6%f
%X3K_ServerEmbeddedSolution
:: Windows Vista
cfd8ff08-c0d7-452b-9f60-ef5c70c32094_VKK3X-68KWM-X2YGT-QR4M6-4B%f%WMV_Enterprise
4f3d1606-3fea-4c01-be3c-8d671c401e3b_YFKBB-PQJJV-G996G-VWGXY-2V%f%3X8_Business
2c682dc2-8b68-4f63-a165-ae291d4cf138_HMBQG-8H2RH-C77VX-27R82-VM%f%QBT_BusinessN
d4f54950-26f2-4fb4-ba21-ffab16afcade_VTC42-BM838-43QHV-84HX6-XJ%f%XKV_EnterpriseN
:: Windows Server 2008
ad2542d4-9154-4c6d-8a44-30f11ee96989_TM24T-X9RMF-VWXK6-X8JC9-BF%f
%GM2_ServerStandard
68b6e220-cf09-466b-92d3-45cd964b9509_7M67G-PC374-GR742-YH8V4-TC%f
%BY3_ServerDatacenter
c1af4d90-d1bc-44ca-85d4-003ba33db3b9_YQGMW-MPWTJ-34KDK-48M3W-X4%f
%Q6V_ServerEnterprise
01ef176b-3e0d-422a-b4f8-4ea880035e8f_4DWFP-JF3DJ-B7DTH-78FJB-PD%f
%RHK_ServerEnterpriseIA64
ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b_WYR28-R7TFJ-3X2YQ-YCY4H-M2%f%49D_ServerWeb
7afb1156-2c1d-40fc-b260-aab7442b62fe_RCTX3-KWVHP-BR6TB-RB6DM-6X%f
%7HP_ServerComputeCluster
2401e3d0-c50a-4b58-87b2-7e794b7d2607_W7VD6-7JFBR-RX26B-YKQ3Y-6F%f
%FFJ_ServerStandardV
fd09ef77-5647-4eff-809c-af2b64659a45_22XQ2-VRXRG-P8D42-K34TD-G3%f
%QQC_ServerDatacenterV
8198490a-add0-47b2-b3ba-316b12d647b4_39BXF-X8Q23-P2WWT-38T2F-G3%f
%FPG_ServerEnterpriseV
) do (
for /f "tokens=1-3 delims=_" %%A in ("%%#") do if %tsedition%==%%C if not defined
key (
echo "%allapps%" | find /i "%%A" %nul1% && (
set key=%%B
set tempid=%%A
)
)
)
set oldks=1
set generickey=1
call :dk_inskey "[%key%]"
set tsids=%tsids% %tempid%
goto :ts_esu
::=================================================================================
=======================================================
:ts_winvista
:: Keys aren't available for these editions, but since these editions aren't
publicly available, it doesn't matter
:: a797d61e-1475-470b-86c8-f737a72c188d StarterN
:: 5e9f548a-c8a9-44e6-a6c2-3f8d0a7a99dd ServerComputeClusterV
set f=
set key=
set tempid=
if not defined allapps call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
for %%# in (
:: WindowsVista
9de9abe2-d01d-4538-af84-4498bdbc2ba3_4D2XH-PRBMM-8Q22B-K8BM3-MR%f
%W4W_____Retail_Business
db442be4-81ed-4ab3-9d66-2417e8a5c81c_76884-QXFY2-6Q2WX-2QTQ8-QX%f
%X44_____Retail_BusinessN
b51791c2-b562-4b73-97b0-735a0e4429a6_YQPQV-RW8R3-XMPFG-RXG9R-JG%f
%TVF_____Retail_Enterprise
58c37517-42f8-4723-bb44-30b05791ff2a_Q7J9R-G63R4-BFMHF-FWM9R-RW%f
%DMV_____Retail_EnterpriseN
95c6e80a-0ff8-4bd0-95f2-c4a39b79d09e_RCG7P-TX42D-HM8FM-TCFCW-3V%f
%4VD_____Retail_HomeBasic
d0333dad-c14e-46f2-b62a-8b47a1b9768b_HY2VV-XC6FF-MD6WV-FPYBQ-GF%f
%JBT_____Retail_HomeBasicN
9e042223-03bf-49ae-808f-ff37f128d40d_X9HTF-MKJQQ-XK376-TJ7T4-76%f
%PKF_____Retail_HomePremium
92d8977c-d506-4e63-b500-6d39283b6cd5_KJ6TP-PF9W2-23T3Q-XTV7M-PX%f
%DT2_____Retail_HomePremiumN
89e51a3c-76c0-4beb-a650-53d34c8f8186_X9PYV-YBQRV-9BXWV-TQDMK-QD%f
%WK4_____Retail_Starter
30fab9cc-8614-4339-989f-7ce61fb7a5c4_VMCB9-FDRV6-6CDQM-RV23K-RP%f
%8F7_____Retail_Ultimate
1eefed20-8ac0-478c-8774-70cd44782ea1_CVX38-P27B4-2X8BT-RXD4J-V7%f
%CKX_____Retail_UltimateN
:: WindowsServer2008
c9ad502b-ef48-41d1-a2a0-38a38e82fed0_24FV9-H7JW8-C8Q6X-BQKMK-K9%f
%77J_____Retail_ServerComputeCluster
866e924e-c2a3-4872-aca1-6b48c13962d5_6QBHY-DXTPJ-T9W3P-DTJXX-4V%f
%QMB_____Retail_ServerDatacenter
d020c729-07f0-4f8f-87ce-bf803275c786_83TWG-TD3TC-HRDP2-K93FJ-Y3%f
%4YC_OEM:NONSLP_ServerDatacenterV
32b40e5e-0c6d-4c6f-ab12-a031933fd2c6_MRB7H-QJRHG-FXTBR-B2Q2M-8W%f
%MTJ_____Retail_ServerEnterprise
256cc990-1692-4ea8-965c-2d423d5dd24e_H4VB6-QPRWH-VDCYM-996P8-MH%f
%KFY_OEM:NONSLP_ServerEnterpriseIA64
1ba5e036-e386-42c4-b7eb-16bdb4fa1945_H8H7M-HDPQT-PJHQF-M7B83-9C%f
%VGV_____Retail_ServerEnterpriseV
8df04457-07c8-4301-bce9-d61eb76cb2d6_RGBMC-PQBVF-94Q9K-HD63B-VY%f
%6MP_____Retail_ServerHomePremium
5bd23b19-aa71-4a5b-8b68-c8801c2baff6_6C8KR-MD3QK-9GWFW-44CY2-W9%f
%CBM_____Retail_ServerHomeStandard
b86c7736-91ff-4de9-bfa9-b32b8a09acac_7XRBY-6MP2K-VQPT8-F37JV-YY%f
%Q83_____Retail_ServerMediumBusinessManagement
d3f5642f-081d-40b2-a4b9-efd3054d4584_6PDTD-JK48J-662TF-8J2QV-R4%f
%CRB_____Retail_ServerMediumBusinessMessaging
c6936a36-69f3-4994-9857-3069c7b9ec7a_D694V-CMWKH-PY92X-PFQKQ-JC%f
%B69_____Retail_ServerMediumBusinessSecurity
cc4c2cf8-ef29-4d8e-b168-2b65a3db3309_MRDK3-YYQF3-88BQJ-D6FJG-69%f
%YJY_____Retail_ServerSBSPremium
b3827b27-bd38-4284-98af-e4f4d1c051a0_2KB23-GJRBD-W3T9C-6CH2W-39%f
%B7V_____Retail_ServerSBSPrime
5dad0eff-3f6f-4310-8844-422f9dc7c84b_H4XDD-B27GY-667P6-XWVV7-GY%f
%G8J_____Retail_ServerSBSStandard
603504f9-109f-49f0-9271-8c66f7878f58_8YVM4-YQBDH-7WDQM-R27WR-WV%f
%CWG_____Retail_ServerStandard
65ab7338-9ad0-43fe-af1b-190b577495e2_H9MW3-6V7GK-94P9G-7FTPJ-VK%f
%CKF_____Retail_ServerStandardV
2be204da-24a0-4943-b66c-81e8464acd7e_2264C-TD9T8-P8HPW-CC9GH-MH%f
%M2V_____Retail_ServerStorageEnterprise
60207eba-8b4a-486c-a013-023b4b742c2f_RCYMT-YX342-8T6YY-XYHYC-3D%f
%D7X_____Retail_ServerStorageExpress
368856e9-43f7-4601-8358-e561f36c7dd8_FKFT2-WXYY9-WBPY7-6YMY4-X4%f
%8JF_____Retail_ServerStorageStandard
4bf433fa-ab04-4c6c-b55b-00170e14b8cd_8X9J7-HCJ7J-3WDJT-QM7D8-46%f
%4YH_____Retail_ServerStorageWorkgroup
a77a6806-f59e-4953-97d7-229317b8e6a6_BGT39-9FYH7-X2CYD-T628F-QP%f
%QPW_____Retail_ServerWeb
f92f836d-4d3e-4e90-a08f-2d612d65e716_HPH76-FHFPP-DRW9D-7W2V4-HW%f
%GKT_____Retail_ServerWinSB
3059a9fd-b068-4f0d-acaf-66324dca67ac_2V8G6-KRXYR-MMGXJ-6RWM3-GX%f
%CCG_____Retail_ServerWinSBV
) do (
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if %tsedition%==%%D if not defined
key (
echo "%allapps%" | find /i "%%A" %nul1% && (
set key=%%B
set tempid=%%A
)
)
)
set generickey=1
call :dk_inskey "[%key%]"
set tsids=%tsids% %tempid%
goto :ts_esu
::=================================================================================
=======================================================
:ts_wineval
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
call :dk_color %Blue% "Script will reset evaluation period, but to permanently
activate Windows,"
call :dk_color %Blue% "Go back to main menu and use [Change Edition] option and
change to Non-eval edition."
) else (
call :dk_color %Blue% "Script will reset evaluation period, but to permanently
activate Windows, install Non-eval edition."
call :dk_color %_Yellow% "%mas%evaluation_editions"
)
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
if defined _int (
echo Checking Internet Connection [Connected%ping_f%]
) else (
set error=1
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
call :dk_color %Blue% "Internet is required for Windows Evaluation activation."
)
:: c4b908d2-c4b9-439d-8ff0-48b656a24da4_EmbeddedIndustryEEval_8.1
:: 9b74255b-afe1-4da7-a143-98d1874b2a6c_EnterpriseNEval_8
:: 7fd0a88b-fb89-415f-9b79-84adc6a7cd56_EnterpriseNEval_8.1
:: 994578eb-193c-4c99-bea0-2483274c9afd_EnterpriseSNEval_2015
:: b9f3109c-bfa9-4f37-9824-6dba9ee62056_ServerStorageStandardEval_2012R2
:: 2d3b7269-65f4-467d-9d51-dbe0e5a4e668_ServerStorageWorkgroupEval_2012R2
:: --------
set f=
set key=
set eval=
if not defined allapps call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
for %%# in (
d9eea459-1e6b-499d-8486-e68163f2a8be_N3QJR-YCWKK-RVJGK-GQFMX-T8%f
%2BF_EmbeddedIndustryEval_8.1
fbd4c5c6-adc6-4740-bc65-b2dc6dc249c1_MJ8TN-42JH8-886MT-8THCF-36%f
%67B_EnterpriseEval_8_NoAct_ REM New time based activation not available
0eebbb45-29d4-49cb-ba87-a23db0cce40a_76FKW-8NR3K-QDH4P-3C87F-JH%f
%TTW_EnterpriseEval_8.1
3f4c0546-36c6-46a8-a37f-be13cdd0cf25_7HBDQ-QNKVG-K4RBF-HMBY6-YG%f
%9R6_EnterpriseEval_10
1f8dbfe8-defa-4676-b5a6-f76949a01540_4N8VT-7Y686-43DGV-THTW9-M9%f
%8W7_EnterpriseNEval_10
57a4ebb6-8e0c-41f8-b79e-8872ddc971ef_W63GF-7N4D9-GQH3K-K4FP7-9B%f
%T6C_EnterpriseSEval_2015
b47dd250-fd6a-44c8-9217-03aca6e4812e_N4DMT-RJKDQ-XR6H7-3DKKP-3Y%f
%JWT_EnterpriseSEval_2016
267bf82d-08e8-4046-b061-9ef3f8ac2b5a_N7HMH-MK36Q-M4X93-76KQ2-6J%f
%HWR_EnterpriseSEval_2019
aff25f1f-fb53-4e27-95ef-b8e5aca10ac6_9V4NK-624Y3-VK47R-Q27GP-27%f
%PGF_EnterpriseSEval_2021
399f0697-886b-4881-894c-4ff6c52e7d8f_CYPB3-XNV9V-QR4G4-Q3B8K-KQ%f
%FGJ_EnterpriseSEval_2024
6162e8c2-3c30-46e1-b964-0de603498e2d_R34N9-HJ6Q3-GBX4F-Q24KQ-49%f
%DF7_EnterpriseSNEval_2016
aed14fc8-907d-44fb-a3a1-d5d8e638acb3_MHN9Q-RD9PW-BFHDQ-9FTWQ-WQ%f
%PF8_EnterpriseSNEval_2019
5dd0c869-eae9-40ce-af48-736692cd8e43_XCN62-29X92-C4T8X-WP82X-DY%f
%MJ8_EnterpriseSNEval_2021
522cc0dc-3c7b-4258-ae68-f297ca63b64e_Y8DJM-NPXF3-QG4MH-W7WJK-KQ%f
%FGM_EnterpriseSNEval_2024
aa708397-8618-42de-b120-a44190ef456d_R63DV-9NPDX-QVWJF-HMR8V-M4%f
%K7D_IoTEnterpriseSEval_2024
cd25b1e8-5839-4a96-a769-b6abe3aa5dee_73BMN-332G9-DX6B8-FGDT3-GF%f
%YT6_ServerDatacenterEval_2012
e628c5e8-2300-4429-8b80-a8b21bd7ce0a_WPR94-KN3J7-MRB7X-JPJV8-RX%f
%7J2_ServerDatacenterEval_2012R2
01398239-85ff-487f-9e90-0e3cc5bcc92e_QVTQ9-GNRBH-JQ9G7-W7FBW-RX%f
%9QR_ServerDatacenterEval_2016
5ea4af9e-fd59-4691-b61c-1fc1ff3e309e_KNW3G-22YD2-7QKQJ-2RF2X-H6%f
%F8M_ServerDatacenterEval_2019
1d02774d-66ab-4c57-8b14-e254fdce09d4_PK7JN-24236-FH7JP-V792F-37%f
%CYR_ServerDatacenterEval_2021
96794a98-097f-42fe-8f28-2c38ea115229_M4RNW-CRTHF-TY7BG-DDHG6-J2%f
%T92_ServerDatacenterEval_2025
38d172c7-36b3-4e4b-b435-fd0b06b95c6e_RNFGD-WFFQR-XQ8BG-K7QQK-GJ%f
%CP9_ServerStandardEval_2012
4fc45a88-26b5-4cf9-9eef-769ee3f0a016_79M8M-N36BX-8YGJY-2G9KP-3Y%f
%GPC_ServerStandardEval_2012R2
9dfa8ec0-7665-4b9d-b2cb-bfc2dc37c9f4_9PBKX-4NHGT-QWV4C-4JD94-TV%f
%KQ6_ServerStandardEval_2016
7783a126-c108-4cf7-b59f-13c78c7a7337_J4WNC-H9BG3-6XRX4-3XD8K-Y7%f
%XRX_ServerStandardEval_2019
c1a197b6-ba5e-4394-b9bf-b659a6c1b873_7PBJM-MNVPD-MBQD7-TYTY4-W8%f
%JDY_ServerStandardEval_2021
753c53a2-4274-4339-8c2e-f66c0b9646c5_YPBVM-HFNWQ-CTF9M-FR4RR-7H%f
%9YG_ServerStandardEval_2025
0de5ff31-2d62-4912-b1a8-3ea01d2461fd_3CKBN-3GJ8X-7YT4X-D8DDC-D6%f
%69B_ServerStorageStandardEval_2012
fb08f53a-e597-40dc-9f08-8bbf99f19b92_NCJ6J-J23VR-DBYB3-QQBJF-W8%f
%CP7_ServerStorageWorkgroupEval_2012
) do (
for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %tsedition%==%%C if not defined
key (
echo "%allapps%" | find /i "%%A" %nul1% && (
set key=%%B
set eval=1
if /i "%%E"=="NoAct" set noact=1
echo Checking Activation ID [%%A] [%%C]
)
)
)
set resetstuff=1
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':tsforge\:.*';.
([scriptblock]::Create($f[1]))"
set resetstuff=
if !errorlevel!==3 (
set error=1
call :dk_color %Red% "Resetting Rearm / GracePeriod [Failed]"
call :dk_color %Blue% "%_fixmsg%"
goto :ts_esu
) else (
echo Resetting Rearm / GracePeriod [Successful]
)
set generickey=1
call :dk_inskey "[%key%]"
::=================================================================================
=======================================================
:ts_esu
echo:
echo Processing Windows ESU...
set esuexist=
set esuexistsup=
set esueditionlist=
set esuexistbutnosup=
set w10EsuEditions=Education-EducationN-Enterprise-EnterpriseN-Professional-
ProfessionalEducation-ProfessionalEducationN-ProfessionalN-ProfessionalWorkstation-
ProfessionalWorkstationN-ServerRdsh
set /a UBR=0
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b
if %winbuild% EQU 19045 if %UBR% GEQ 6156 (
set w10EsuEditionsLaterAdded=Core-CoreN-CoreCountrySpecific-CoreSingleLanguage-
IoTEnterprise-
)
if defined esuexistsup (
echo "%tsids%" | find /i "4220f546-f522-46df-8202-4d07afd26454" %nul1% && (
echo "%tsids%" | find /i "7e94be23-b161-4956-a682-146ab291774c" %nul1% || (
call :dk_color %Gray% "To get Client-ESU-Year6[4-6y] license, install updates from
the below URL."
call :dk_color %Blue% "%mas%tsforge#windows-esu"
)
)
goto :ts_off
)
if defined isltsc (
call :dk_color %Gray% "Checking Activation ID [%tsedition% LTSC
already has longer support, ESU is not applicable]"
goto :ts_off
)
if defined esuexistbutnosup (
call :dk_color %Red% "Checking Activation ID [Currently installed
ESU License is not supported for %tsedition%]"
echo:
if %winbuild% EQU 19045 if not defined w10EsuEditionsLaterAdded (
call :dk_color %Blue% "To get latest version, go to Windows settings and run
Windows Update. After that, try the script again."
goto :ts_off
)
call :dk_color %Blue% "Go back to Main Menu, select Change Windows Edition option
and change to any of the below listed editions."
echo [%esueditionlist%]
goto :ts_off
)
set esuavail=
if defined _vis if defined isServer set esuavail=1
if %winbuild% LEQ 7602 if not defined _vis if not defined isThinpc set esuavail=1
if %winbuild% GTR 7602 if %winbuild% LSS 10240 if defined isServer set esuavail=1
if %winbuild% GEQ 10240 if %winbuild% LEQ 19045 if not defined isServer set
esuavail=1
if %winbuild% EQU 9600 set esuavail=1
if defined esuavail (
call :dk_color %Red% "Checking Activation ID [ESU license is not
found, make sure Windows is fully updated]"
set fixes=%fixes% %mas%tsforge#windows-esu
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%tsforge#windows-esu"
) else (
call :dk_color %Gray% "Checking Activation ID [ESU is not
available for %winos%]"
)
::=================================================================================
=======================================================
:ts_off
set ohook=
for %%# in (15 16) do (
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1
)
)
if defined ohook (
echo:
call :dk_color %Gray% "Checking Ohook [Ohook activation is
already installed for Office]"
)
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
for /f "skip=2 tokens=2*" %%a in ('"reg query %_86%\14.0\Common\InstallRoot /v
Path" %nul6%') do if exist "%%b\*[Link]" (set o14msi=Office 2010 MSI )
for /f "skip=2 tokens=2*" %%a in ('"reg query %_68%\14.0\Common\InstallRoot /v
Path" %nul6%') do if exist "%%b\*[Link]" (set o14msi=Office 2010 MSI )
%nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
%nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
if not "%o14msi%%o14c2r%"=="" (
echo:
call :dk_color %Red% "Checking Unsupported Office Install [ %o14msi%%o14c2r%]"
if defined o14msi call :dk_color %Blue% "Use Ohook activation option for Office
2010."
)
::=================================================================================
=======================================================
call :ts_getpath
set o16uwp=
set o16uwp_path=
if "%o16uwp%%o16c2r%%o15c2r%%o16msi%%o15msi%"=="" (
set error=1
set showfix=1
echo:
if not "%o14msi%%o14c2r%"=="" (
call :dk_color %Red% "Checking Supported Office Install [Not Found]"
) else (
if %_actwin%==0 (
call :dk_color %Red% "Checking Installed Office [Not Found]"
) else (
call :dk_color %Gray% "Checking Installed Office [Not Found]"
)
)
if defined ohub (
echo:
echo You only have the Office Dashboard app installed. You need to install the full
version of Office.
)
call :dk_color %Blue% "Download and install Office from below URL and try again."
if %_actwin%==0 set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
goto :ts_act
)
set multioffice=
if not "%o16uwp%%o16c2r%%o15c2r%%o16msi%%o15msi%"=="1" set multioffice=1
if not "%o14c2r%%o14msi%"=="" set multioffice=1
if defined multioffice (
echo:
call :dk_color %Gray% "Checking Multiple Office Install [Found. Recommended
to install one version only]"
)
::=================================================================================
=======================================================
set winserver=
reg query "HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions" /v ProductType
%nul2% | find /i "WinNT" %nul1% || set winserver=1
if not defined winserver (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% |
find /i "Server" %nul1% && set winserver=1
)
::=================================================================================
=======================================================
call :ts_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=16
set "_oLPath=%o16uwp_path%\Licenses16"
set "pkeypath=%o16uwp_path%\Office16\[Link]-ms"
for /f "delims=" %%a in ('%psc% "(Get-AppxPackage -name '[Link]'
| Select-Object -ExpandProperty Dependencies) | Select-Object PackageFullName"
%nul6%') do (set "o16uwpapplist=!o16uwpapplist! %%a")
echo:
echo Processing Office... [UWP ^| %uwpinfo%]
call :ts_process
::=================================================================================
=======================================================
:ts_starto15c2r
call :ts_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=15
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o15c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o15c2r_reg%\Configuration")
if not defined _oArch for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v Platform" %nul6%') do (set "_oArch=%%b")
if not defined _version for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v version" %nul6%') do (set "_version=%%b")
if not defined _prids for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v ProductReleaseId" %nul6%') do (set "_prids=%o15c2r_reg%\
propertyBag /v ProductReleaseId" & set "_config=%o15c2r_reg%\propertyBag")
echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9)
for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\
Active %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set "_oLPath=%_oRoot%\Licenses"
set "pkeypath=%_oRoot%\Office15\[Link]-ms"
set "_oIntegrator=%_oRoot%\integration\[Link]"
echo:
echo Processing Office... [C2R ^| %_version% ^| %_oArch%]
::=================================================================================
=======================================================
:ts_starto16c2r
call :ts_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=16
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
AudienceData" %nul6%') do (set "_AudienceData=^| %%b ")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o16c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o16c2r_reg%\Configuration")
echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8)
for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs"
/s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set _oIds=%_oIds:.16=%
set _o16c2rIds=%_oIds%
set "_oLPath=%_oRoot%\Licenses16"
set "pkeypath=%_oRoot%\Office16\[Link]-ms"
set "_oIntegrator=%_oRoot%\integration\[Link]"
echo:
echo Processing Office... [C2R ^| %_version% %_AudienceData%^|
%_oArch%]
::=================================================================================
=======================================================
:: mass()grave(dot)dev/office-license-is-not-genuine
:: Add registry keys for volume products so that 'non-genuine' banner won't appear
::=================================================================================
=======================================================
:ts_startmsi
echo:
call :oh_clearblock
if "%o16msi%%o15msi%"=="" if not "%o16uwp%%o16c2r%%o15c2r%"=="" call :oh_uninstkey
call :oh_licrefresh
goto :ts_act
::=================================================================================
=======================================================
:ts_whost
echo:
echo Processing Windows %KS% Host...
if /i %tsmethod%==KMS4k (
echo:
call :dk_color %Red% "Skipping Windows %KS% Host [KMS4k method is not
supported with Windows %KS% Host]"
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
goto :ts_act
)
echo:
if %winbuild% GEQ 10586 (
call :dk_color %Gray% "With %KS% Host license, system may randomly change Windows
Edition later. It is a Windows issue and can be safely ignored."
)
call :dk_color %Gray% "%KS% Host [Not to be confused with %KS% Client] license
causes the %_slser% service to run continuously."
call :dk_color %Blue% "Only use this activation when necessary, you can revert to
normal activation from the previous menu."
if %_unattended%==0 (
echo:
choice /C:0F /N /M "> [0] Go back [F] Continue : "
if !errorlevel!==1 exit /b
echo:
)
set _arr=
set tempid=
set keytype=kmshost
:: Install current edition csvlk license so that correct edition can reflect for
csvlk
if %winbuild% GEQ 10586 (
for %%# in ("%SysPath%\spp\tokens\skus\%tsedition%\*CSVLK*.xrm-ms") do (
if defined _arr (set "_arr=!_arr!;"%SysPath%\spp\tokens\skus\%tsedition%\%%~nx#"")
else (set "_arr="%SysPath%\spp\tokens\skus\%tsedition%\%%~nx#"")
)
if defined _arr %psc% "$sls = Get-WmiObject %sps%;
$f=[[Link]]::ReadAllText('!_batp!') -split ':xrm\:.*';.
([scriptblock]::Create($f[1])); InstallLicenseArr '!_arr!'" %nul%
)
if defined tempid (
echo Checking Activation ID [%tempid%] [%tsedition%]
) else (
call :dk_color %Red% "Checking Activation ID [Not Found]
[%tsedition%] [%osSKU%]"
call :dk_color %Blue% "%KS% Host license is not found on your system. It is
available for the below editions."
call :dk_color %Blue% "Professional, Education, ProfessionalWorkstation,
Enterprise, EnterpriseS, and Server editions, etc."
goto :ts_act
)
if defined winsub (
echo:
call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] found. Script will
activate base edition [SKU ID-%regSKU%]."
)
goto :ts_act
::=================================================================================
=======================================================
:ts_whost_vista
set f=
set key=
set tempid=
if not defined allapps call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
for %%# in (
:: WindowsVista
212a64dc-43b1-4d3d-a30c-2fc69d2095c6_TWVG3-9Q4P8-W9XJF-Y76FJ-DW%f%Q4R_-Business-
BusinessN-Enterprise-EnterpriseN-
:: WindowsServer2008
c90d1b4e-8aa8-439e-8b9e-b6d6b6a6d975_BHC4Q-6D7B7-QMVH7-4MKQH-Y9%f%VK7_-
ServerComputeCluster-ServerDatacenter-ServerDatacenterV-ServerEnterprise-
ServerEnterpriseIA64-ServerEnterpriseV-ServerStandard-ServerStandardV-ServerWeb-
56df4151-1f9f-41bf-acaa-2941c071872b_PVGKG-2R7XQ-7WTFD-FXTJR-DQ%f%BQ3_-
ServerComputeCluster-ServerEnterprise-ServerEnterpriseV-ServerStandard-
ServerStandardV-ServerWeb-
c448fa06-49d1-44ec-82bb-0085545c3b51_KH4PC-KJFX6-XFVHQ-GDK2G-JC%f%JY9_-
ServerComputeCluster-ServerWeb-
) do (
for /f "tokens=1-3 delims=_" %%A in ("%%#") do if not defined key (
echo "%allapps%" | find /i "%%A" %nul1% && (
echo "%%C" | find /i "-%tsedition%-" %nul1% && (
set key=%%B
set tempid=%%A
)
)
)
)
if defined key (
echo Checking Activation ID [%tempid%] [%tsedition%]
) else (
call :dk_color %Red% "Checking Activation ID [Not Found]
[%tsedition%] [%osSKU%]"
call :dk_color %Blue% "%KS% Host license is not found on your system. It is
available for the below editions."
call :dk_color %Blue% "Business, BusinessN, Enterprise, EnterpriseN, and Server
editions, etc."
goto :ts_act
)
::=================================================================================
=======================================================
:ts_ohost
echo:
echo Processing Office %KS% Host...
if defined _vis (
echo:
call :dk_color %Blue% "Windows Vista and Server 2008 do not support the
installation of Office KMS Host."
goto :ts_act
)
if /i %tsmethod%==KMS4k (
echo:
call :dk_color %Red% "Skipping Office %KS% Host [KMS4k method is not
supported with Office %KS% Host]"
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
goto :ts_act
)
set ohostexist=
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set ohostids=%allapps%
call :dk_actids 59a52881-a989-479d-af46-f275c6370663
set ohostids=%ohostids% %allapps%
for %%# in (
bfe7a195-4f8f-4f0b-a622-cf13c7d16864_KMSHost2010-ProPlusVL
f3d89bbf-c0ec-47ce-a8fa-e5a5f97e447f_KMSHost2024Volume
47f3b983-7c53-4d45-abc6-bcd91e2dd90a_KMSHost2021Volume
70512334-47b4-44db-a233-be5ea33b914c_KMSHost2019Volume
98ebfe73-2084-4c97-932c-c0cd1643bea7_KMSHost2016Volume
2e28138a-847f-42bc-9752-61b03fff33cd_KMSHost2013Volume
) do (
for /f "tokens=1-2 delims=_" %%A in ("%%#") do (
echo "%ohostids%" | find /i "%%A" %nul1% && (
set ohostexist=1
set tsids=!tsids! %%A
echo Checking Activation ID [%%A] [%%B]
)
)
)
echo:
call :dk_color %Gray% "%KS% Host [Not to be confused with %KS% Client] license
causes the sppsvc service to run continuously."
call :dk_color %Gray% "Only use this activation when necessary."
goto :ts_act
::=================================================================================
=======================================================
:ts_appxlob
echo:
echo Processing Windows 8/8.1 APPX Sideloading...
echo:
if defined noappx (
call :dk_color %Gray% "Checking Activation ID [APPX Sideloading
feature is available only on Windows 8/8.1]"
goto :dk_done
)
if /i %tsmethod%==KMS4k (
echo:
call :dk_color %Red% "Skipping Windows 8/8.1 APPX [KMS4k method is not
supported with Windows 8/8.1 APPX]"
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
goto :dk_done
)
set appxexist=
if not defined allapps call :dk_actids 55c92734-d682-4d71-983e-d6ec3f16059f
for %%# in (
ec67814b-30e6-4a50-bf7b-d55daf729d1e_APPXLOB-Client
251ef9bf-2005-442f-94c4-86307de7bb32_APPXLOB-Embedded-Industry
1e58c9d7-e3f1-4f69-9039-1f162463ac2c_APPXLOB-Embedded-Standard
3502d53e-5d43-436a-84af-714e8d334f8d_APPXLOB-Server
) do (
for /f "tokens=1-2 delims=_" %%A in ("%%#") do (
echo "%allapps%" | find /i "%%A" %nul1% && (
set appxexist=1
set tsids=!tsids! %%A
echo Checking Activation ID [%%A] [%%B]
)
)
)
goto :ts_act
::=================================================================================
=======================================================
:ts_resetall
echo:
if defined _vis (
echo Processing Reset of Rearm / Timers...
) else (
echo Processing Reset of Rearm / Timers / Tamper / Lock...
)
echo:
set resetstuff=1
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':tsforge\:.*';.
([scriptblock]::Create($f[1]))"
if %errorlevel%==3 (
call :dk_color %Red% "Reset Failed."
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
) else (
call :dk_color %Green% "Reset process has been successfully done."
)
goto :dk_done
::=================================================================================
=======================================================
:ts_actman
echo:
echo Processing Manual Activation...
echo:
if /i %tsmethod%==KMS4k (
echo:
call :dk_color %Red% "Skipping Manual Activation [KMS4k method is not
supported with it]"
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
goto :dk_done
)
call :dk_color %Gray% "This option is for advanced users, those who already know
what they are doing."
call :dk_color %Blue% "Some activation IDs may cause system crash [MUI mismatch],
or irreversible changes [CloudEdition etc]."
if %_unattended%==1 (
echo:
for %%# in (%tsids%) do (echo Activation ID - %%#)
goto :ts_act
)
call :dk_color %Blue% "Although the script will try to remove those IDs from the
list, it is not fully guaranteed."
echo:
choice /C:0F /N /M "> [0] Go back [F] Continue : "
if %errorlevel%==1 exit /b
echo:
echo Fetching Supported Activation IDs list. Please wait...
if defined _vis (
echo:
call :dk_color %Blue% "On Windows Vista and Server 2008, you must manually install
the key before activating it."
)
echo:
call :dk_color %Gray% "Enter / Paste the Activation ID shown in first column in the
opened text file, or just press Enter to return:"
echo Add space after each Activation ID if you are adding multiple:
echo:
set /p tsids=
goto :ts_act
:listactids:
$t = [AppDomain]::[Link](4, 1).DefineDynamicModule(2,
$False).DefineType(0)
$[Link]('SLOpen', '[Link]', 22, 1, [Int32],
@([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
$[Link]('SLClose', '[Link]', 22, 1, [IntPtr], @([IntPtr]), 1,
3).SetImplementationFlags(128)
$[Link]('SLGetProductSkuInformation', '[Link]', 22, 1, [Int32],
@([IntPtr], [Guid].MakeByRefType(), [String], [UInt32].MakeByRefType(),
[UInt32].MakeByRefType(), [IntPtr].MakeByRefType()), 1,
3).SetImplementationFlags(128)
$[Link]('SLGetLicense', '[Link]', 22, 1, [Int32], @([IntPtr],
[Guid].MakeByRefType(), [UInt32].MakeByRefType(), [IntPtr].MakeByRefType()), 1,
3).SetImplementationFlags(128)
$w = $[Link]()
$m = [[Link]]
function slGetSkuInfo($SkuId) {
$c = 0; $b = 0
$r = $w::SLGetProductSkuInformation($hSLC, [ref][Guid]$SkuId,
"msft:sl/EUL/PHONE/PUBLIC", [ref]$null, [ref]$c, [ref]$b)
return ($r -eq 0)
}
function IsMuiNotLocked($SkuId) {
$r = $true; $c = 0; $b = 0
$LicId = [Guid]::Empty
[void]$w::SLGetProductSkuInformation($hSLC, [ref][Guid]$SkuId, "fileId", [ref]
$null, [ref]$c, [ref]$b)
$FileId = $m::PtrToStringUni($b)
$c = 0; $b = 0
[void]$w::SLGetLicense($hSLC, [ref][Guid]$FileId, [ref]$c, [ref]$b)
$blob = New-Object byte[] $c; $m::Copy($b, $blob, 0, $c)
$cont = [[Link]]::[Link]($blob)
$xml = [xml]$[Link]($[Link]('<r'))
$[Link][0].grant | foreach {
$_.[Link] | where { $_.name
-eq 'Kernel-MUI-Language-Allowed' } | foreach {
if ($_.InnerText -ne 'EMPTY') { $r = $false }
}
}
return $r
}
$hSLC = 0; [void]$w::SLOpen([ref]$hSLC)
$results = Get-WmiObject -Query "SELECT ID, Name, Description FROM
SoftwareLicensingProduct"
$maxNameWidth = 60
[void]$w::SLClose($hSLC)
if (-not $filteredResults) {
Exit 3
}
::=================================================================================
=======================================================
:ts_act
if defined eval (
echo:
echo Activating...
echo:
call :dk_act
set gpr=0
set gprdays=0
set actdone=
for /f "delims=" %%a in ('%psc% "(Get-WmiObject -Query 'SELECT GracePeriodRemaining
FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND
PartialProductKey IS NOT NULL AND LicenseDependsOn is NULL').GracePeriodRemaining"
%nul6%') do set "gpr=%%a"
set /a "gprdays=(!gpr!+1440-1)/1440"
if defined actdone (
call :dk_color %Green% "[%winos%] has been reset and activated successfully for !
gprdays! days."
) else (
set error=1
set showfix=1
call :dk_color %Red% "[%winos%] Activation Failed %error_code%. Remaining Period: !
gprdays! days [!gpr! minutes]."
if not defined noact (
call :dk_color %Gray% "To activate, check your internet connection and ensure the
date and time are correct."
) else (
call :dk_color %Blue% "This Windows version is known to not activate due to MS
Windows/Server issues."
)
if not defined showfix call :dk_color %Blue% "%_fixmsg%"
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
)
if defined tsids (
echo:
if not defined _vis if not defined oldks echo Installing Forged Product Key Data...
if /i %tsmethod%==KMS4k (
echo Writing TrustedStore data...
) else (
if /i %tsmethod%==StaticCID (echo Depositing Static Confirmation ID...) else (echo
Depositing Zero Confirmation ID...)
)
echo:
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':tsforge\:.*';.
([scriptblock]::Create($f[1])) %tsids%"
if !errorlevel!==3 (
if %_actman%==0 (if not defined showfix call :dk_color %Blue% "%_fixmsg%")
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
) else (
if /i %tsmethod%==KMS4k if %winbuild% GEQ 26200 (
echo:
call :dk_color %Gray% "In Windows settings, you may see a renewal notification for
activation that can be ignored."
if /i %_actmethod%==Auto call :dk_color %Gray% "To avoid this notification, run the
script with an internet connection to use the StaticCID method."
)
echo "%tsids%" | find /i "7e94be23-b161-4956-a682-146ab291774c" %nul1% && (
call :dk_color %Gray% "Windows Update can receive 1-3 years of ESU. 4-6 years ESU
is not officially supported, but you can manually install updates."
)
echo "%tsids%" | findstr /i "4afc620f-12a4-48ad-8015-2aebfbd6e47c 11be7019-a309-
4763-9a09-091d1722ffe3" %nul1% && (
call :dk_color %Gray% "ESU is not officially supported on Windows 8.1, but you can
manually install updates until Jan-2024."
)
echo "%tsids%" | findstr /i "0b533b5e-08b6-44f9-b885-c2de291ba456 f69e2d51-3bbd-
4ddf-8da7-a145e9dca597" %nul1% && (
call :dk_color %Gray% "Windows Update can receive 1-3 years of ESU. 4-6 years ESU
is not officially supported, but it might be useful."
)
)
goto :dk_done
::=================================================================================
=======================================================
:ts_remove
cls
if not defined terminal (
mode 100, 30
)
title Remove TSforge Activation %masver%
echo:
echo TSforge activation doesn't modify any Windows components and doesn't install
any new files.
echo:
echo Instead, it appends data to one of data files used by Software Protection
Platform.
echo:
call :dk_color %Gray% "If you want to reset the activation status,"
call :dk_color %Blue% "%_fixmsg%"
echo:
goto :dk_done
::=================================================================================
=======================================================
:ts_reset
set key=
set _oRoot=
set _oArch=
set _oIds=
set _oLPath=
set _actid=
set _prod=
set _lic=
set _arr=
set _prids=
set _config=
set _version=
set _License=
set _oMSI=
exit /b
::=================================================================================
=======================================================
:ts_getpath
set o16c2r=
set o15c2r=
set o16msi=
set o15msi=
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
exit /b
::=================================================================================
=======================================================
:ts_process
set skipprocess=
set foundprod=
call :tsksdata chkprod %%#
if defined _oMSI if not defined foundprod if /i %tsmethod%==KMS4k (
set skipprocess=1
call :dk_color %Red% "Checking Product In Script [%%# MSI Retail is
not supported with KMS4k]"
if /i %_actmethod%==Auto (
call :dk_color %Blue% "Connect to the Internet and try again. Script will use the
StaticCID activation method."
) else (
call :dk_color %Blue% "Use non-KMS4K activation options from the previous menu."
)
)
if "%_actprojvis%"=="1" (
echo %%# | findstr /i "Project Visio" %nul% || (
set skipprocess=1
call :dk_color %Gray% "Skipping Because Project/Visio Mode [%%#]"
)
)
if /i not %tsmethod%==KMS4k (
set no365=
if "%oVer%"=="15" (echo %%# | findstr /i "O365HomePremRetail" %nul% && set no365=1)
if "%oVer%"=="16" (echo %%# | findstr /i "O365" %nul% && set no365=1)
if defined no365 (
set _License=MondoRetail
set _altoffid=MondoRetail
call :ks_osppready
echo Converting Unsupported O365 Office [%%# To MondoRetail]
if "%oVer%"=="15" (call :dk_color %Gray% "Mondo 2013 is equivalent to O365 [15.0
version] in terms of the latest features.")
if "%oVer%"=="16" (call :dk_color %Gray% "Mondo 2016 is equivalent to O365 in terms
of the latest features.")
)
if /i %tsmethod%==KMS4k (
echo !_License! | find /i "Retail" %nul% && (set keytype=zero) || (set keytype=ks)
) else (
set keytype=zero
)
for /f "delims=" %%a in ('%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split
':offtsid\:.*';. ([scriptblock]::Create($f[1]))" %nul6%') do (
echo "%%a" | findstr /r ".*-.*-.*-.*-.*" %nul1% && (set tsids=!tsids! %%a& set
_actid=%%a)
)
set "_allactid=!tsids!"
if defined _actid (
echo Checking Activation ID [!_actid!] [!_License!]
) else (
call :dk_color %Red% "Checking Activation ID [Office %oVer%.0 !
_License! not found]"
set error=1
set showfix=1
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
if defined _actid (
echo "!allapps!" | find /i "!_actid!" %nul1% || call :oh_installlic
)
)
)
exit /b
::=================================================================================
=======================================================
:ts_processmsi
call :ts_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set _oMSI=1
set oVer=%1
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\InstallRoot /v Path"
%nul6%') do (set "_oRoot=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\ProductVersion /v
LastProduct" %nul6%') do (set "_version=%%b")
if "%_oRoot:~-1%"=="\" set "_oRoot=%_oRoot:~0,-1%"
set "_common=%CommonProgramFiles%"
if defined PROCESSOR_ARCHITEW6432 set "_common=%CommonProgramW6432%"
set "_common2=%CommonProgramFiles(x86)%"
call :msiofficedata %2
echo:
echo Processing Office... [MSI ^| %_version% ^| %_oArch%]
call :ts_process
exit /b
::=================================================================================
=======================================================
:ts_checkwinperm
::=================================================================================
=======================================================
:tsforge:
$src = @'
#if !POWERSHELL2
namespace ActivationWs
{
/*
MIT License
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
try {
IAsyncResult asyncResult = [Link](null, null);
[Link]();
return ParseSoapResponse(soapResponse);
} catch {
throw;
}
}
return soapRequest;
}
try {
// Insert SOAP envelope
using (Stream stream = [Link]()) {
[Link](stream);
}
return webRequest;
} catch {
throw;
}
}
if (.Any()) {
throw new Exception("The remote server returned an unexpected
response");
}
try {
XDocument responseXml =
[Link]([Link](BatchActivationServiceNs +
"ResponseXml").First().Value);
if ([Link](BatchActivationResponseNs +
"ErrorCode").Any()) {
string errorCode =
[Link](BatchActivationResponseNs + "ErrorCode").First().Value;
switch (errorCode) {
case "0x7F":
throw new Exception("The Multiple Activation Key has
exceeded its limit");
case "0x67":
throw new Exception("The product key has been
blocked");
case "0x68":
throw new Exception("Invalid product key");
case "0x86":
throw new Exception("Invalid key type");
case "0x90":
throw new Exception("Please check the Installation ID
and try again");
default:
throw new Exception([Link]("The remote server
reported an error ({0})", errorCode));
}
} else if ([Link](BatchActivationResponseNs +
"ResponseType").Any()) {
string responseType =
[Link](BatchActivationResponseNs + "ResponseType").First().Value;
switch (responseType) {
case "1":
string confirmationId =
[Link](BatchActivationResponseNs + "CID").First().Value;
return confirmationId;
case "2":
string activationsRemaining =
[Link](BatchActivationResponseNs +
"ActivationRemaining").First().Value;
return activationsRemaining;
default:
throw new Exception("The remote server returned an
unrecognized response");
}
} else {
throw new Exception("The remote server returned an unrecognized
response");
}
} catch {
throw;
}
}
}
}
#endif
// LibTSforge/[Link]
namespace LibTSforge
{
using System;
using [Link];
using [Link];
using [Link];
using [Link];
// 2^31 - 8 minutes
public static readonly ulong TimerMax =
(ulong)[Link](2147483640).Ticks;
[DllImport("[Link]")]
public static extern bool Wow64EnableWow64FsRedirection(bool
Wow64FsEnableRedirection);
// LibTSforge/SPP/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
if (Algorithm == PKeyAlgorithm.PKEY2005)
{
return Ranges;
}
if ([Link] == 0)
{
throw new NotSupportedException("Specified Activation ID is usable
only for Windows Anytime Upgrade. Please use a non-WAU Activation ID instead.");
}
return FilteredRanges;
}
if ([Link](pkcFileId)) return;
if ()
{
ranges[refActIdStr] = new List<KeyRange>();
}
ranges[refActIdStr].Add(keyRange);
}
if (keyRanges == null)
{
continue;
}
Products[refActId] = productConfig;
}
}
}
[Link](pkcFileId);
}
}
}
}
}
}
// LibTSforge/SPP/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using Crypto;
using PhysicalStore;
public ProductKey()
{
return new
Guid(CryptoUtils.SHA256Hash([Link]()).Take(16).ToArray());
}
if ( || [Link](";"))
{
return mpc;
}
return mpc;
}
pid2 = "";
if (Algorithm == PKeyAlgorithm.PKEY2005)
{
string mpc = GetMPC();
string serialHigh;
int serialLow;
int lastPart;
if (EulaType == "OEM")
{
serialHigh = "OEM";
serialLow = ((Group / 2) % 100) * 10000 + (Serial / 100000);
lastPart = Serial % 100000;
}
else
{
serialHigh = (Serial / 1000000).ToString("D3");
serialLow = Serial % 1000000;
lastPart = ((Group / 2) % 100) * 1000 + new
Random().Next(1000);
}
int checksum = 0;
return pid2;
}
return [Link]();
}
return [Link]();
}
switch (EulaType)
{
case "OEM":
licenseType = 2;
break;
case "Volume":
licenseType = 3;
break;
default:
licenseType = 0;
break;
}
return [Link](
"{0}-{1:D5}-{2:D3}-{3:D6}-{4:D2}-{5:D4}-{6:D4}.0000-{7:D3}{8:D4}",
mpc,
Group,
serialHigh,
serialLow,
licenseType,
lcid,
build,
dayOfYear,
year
);
}
[Link](new Guid(algoId).ToByteArray());
[Link](Group);
[Link](serialHigh);
[Link](serialLow);
[Link](Upgrade ? 1 : 0);
[Link](Security);
return [Link]();
}
if (Algorithm == PKeyAlgorithm.PKEY2005)
{
keyStr = "H4X3DH4X3DH4X3DH4X3D";
return keyStr;
}
}
}
// LibTSforge/SPP/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using [Link];
using [Link];
[StructLayout([Link])]
private struct SL_LICENSING_STATUS
{
public Guid SkuId;
public uint eStatus;
public uint dwGraceTime;
public uint dwTotalGraceDays;
public uint hrReason;
public ulong qwValidityExpiration;
}
public SLContext()
{
SLOpen(out Handle);
}
~SLContext()
{
Dispose();
}
}
unsafe
{
SL_LICENSING_STATUS* licensingStatuses =
(SL_LICENSING_STATUS*)pLicStat;
for (int i = 0; i < count; i++)
{
SL_LICENSING_STATUS slStatus = licensingStatuses[i];
return actId;
}
}
return [Link];
}
}
if (status != 0 || count == 0)
{
return [Link];
}
if (status != 0 || count == 0)
{
return [Link];
}
if (status != 0 || count == 0)
{
return [Link];
}
if (status != 0 || len == 0)
{
return [Link];
}
if (status != 0 || len == 0)
{
return null;
}
return [Link](ppbValue);
}
}
return [Link](ppbValue);
}
}
unsafe
{
SL_LICENSING_STATUS* licensingStatuses =
(SL_LICENSING_STATUS*)pLicStat;
for (int i = 0; i < count; i++)
{
[Link](licensingStatuses[i].SkuId);
}
}
return result;
}
}
// LibTSforge/SPP/[Link]
namespace [Link]
{
using Microsoft.Win32;
using System;
using [Link];
using [Link];
using [Link];
using Crypto;
using PhysicalStore;
using TokenStore;
try
{
sc = new ServiceController(svcName);
if ([Link] == [Link])
return;
}
catch (InvalidOperationException ex)
{
throw new InvalidOperationException([Link]("Unable to access
{0}: ", svcName) + [Link]);
}
[Link]([Link],
[Link](500));
}
catch ([Link])
{
continue;
}
catch (InvalidOperationException ex)
{
[Link]("Warning: Stopping sppsvc failed, retrying.
Details: " + [Link]);
[Link](500);
continue;
}
stopped = true;
}
if (!stopped)
throw new [Link]([Link]("Failed to stop
{0}", svcName));
if (status < 0)
{
throw new IOException("Failed to unload spsys");
}
try
{
sc = new ServiceController("slsvc");
if ([Link] == [Link])
return;
}
catch (InvalidOperationException ex)
{
throw new InvalidOperationException("Unable to access slsvc: "
+ [Link]);
}
[Link]("Starting slsvc...");
[Link]([Link],
[Link](500));
}
catch ([Link])
{
continue;
}
catch (InvalidOperationException ex)
{
[Link]("Warning: Starting slsvc failed, retrying.
Details: " + [Link]);
[Link](500);
continue;
}
started = true;
}
if (!started)
throw new [Link]("Failed to start slsvc");
[Link]();
}
[Link]([Link]),
"7B296FB0-376B-497e-B012-9C450E1B7327-*.C7483456-A289-439d-
8115-601632D005A0")
.FirstOrDefault() ?? "";
default:
string psDir = [Link](
(string)[Link](
@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\SoftwareProtectionPlatform",
"TokenStore",
""
)
);
string psPath = [Link](psDir, "[Link]");
if ([Link](psDir) || )
{
string[] psDirs =
{
@"spp\store",
@"spp\store\2.0",
@"spp\store_test",
@"spp\store_test\2.0"
};
[Link]([Link]),
dir
),
"[Link]"
);
if ([Link](tokDir) || )
{
string[] tokDirs =
{
@"spp\store",
@"spp\store\2.0",
@"spp\store_test",
@"spp\store_test\2.0"
};
[Link]([Link]),
dir
),
"[Link]"
);
switch (version)
{
case [Link]:
return new PhysicalStoreVista(psPath, production);
case PSVersion.Win7:
return new PhysicalStoreWin7(psPath, production);
default:
return new PhysicalStoreModern(psPath, production, version);
}
}
if ([Link](encrFilePath) || )
{
throw new FileNotFoundException("Store does not exist at expected
path '" + encrFilePath + "'.");
}
try
{
using (FileStream fs = [Link](encrFilePath, [Link],
[Link], [Link]))
{
byte[] encrData = [Link]();
[Link](filePath,
[Link](encrData, production, version));
}
[Link]("Store dumped successfully to '" + filePath +
"'.");
}
finally
{
if (manageSpp)
{
RestartSPP(version);
}
}
}
KillSPP(version);
RestartSPP(version);
[return: MarshalAs([Link])]
[DllImport("[Link]", CharSet = [Link], SetLastError = true)]
private static extern bool DeviceIoControl([In] SafeFileHandle hDevice,
[In] uint dwIoControlCode, [In] IntPtr lpInBuffer, [In] int nInBufferSize, [Out]
IntPtr lpOutBuffer, [In] int nOutBufferSize, out int lpBytesReturned, [In] IntPtr
lpOverlapped);
// LibTSforge/Crypto/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
return rand;
}
byte[] hash;
using (SHA1 sha1 = [Link]())
{
hash = [Link](data);
}
return [Link](hash);
}
}
byte[] hash;
using (SHA1 sha1 = [Link]())
{
hash = [Link](data);
}
// LibTSforge/Crypto/[Link]
namespace [Link]
{
public static class Keys
{
public static readonly byte[] PRODUCTION = {
0x07, 0x02, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x52, 0x53, 0x41, 0x32,
0x00, 0x04, 0x00, 0x00,
0x01, 0x00, 0x01, 0x00, 0x29, 0x87, 0xBA, 0x3F, 0x52, 0x90, 0x57, 0xD8,
0x12, 0x26, 0x6B, 0x38,
0xB2, 0x3B, 0xF9, 0x67, 0x08, 0x4F, 0xDD, 0x8B, 0xF5, 0xE3, 0x11, 0xB8,
0x61, 0x3A, 0x33, 0x42,
0x51, 0x65, 0x05, 0x86, 0x1E, 0x00, 0x41, 0xDE, 0xC5, 0xDD, 0x44, 0x60,
0x56, 0x3D, 0x14, 0x39,
0xB7, 0x43, 0x65, 0xE9, 0xF7, 0x2B, 0xA5, 0xF0, 0xA3, 0x65, 0x68, 0xE9,
0xE4, 0x8B, 0x5C, 0x03,
0x2D, 0x36, 0xFE, 0x28, 0x4C, 0xD1, 0x3C, 0x3D, 0xC1, 0x90, 0x75, 0xF9,
0x6E, 0x02, 0xE0, 0x58,
0x97, 0x6A, 0xCA, 0x80, 0x02, 0x42, 0x3F, 0x6C, 0x15, 0x85, 0x4D, 0x83,
0x23, 0x6A, 0x95, 0x9E,
0x38, 0x52, 0x59, 0x38, 0x6A, 0x99, 0xF0, 0xB5, 0xCD, 0x53, 0x7E, 0x08,
0x7C, 0xB5, 0x51, 0xD3,
0x8F, 0xA3, 0x0D, 0xA0, 0xFA, 0x8D, 0x87, 0x3C, 0xFC, 0x59, 0x21, 0xD8,
0x2E, 0xD9, 0x97, 0x8B,
0x40, 0x60, 0xB1, 0xD7, 0x2B, 0x0A, 0x6E, 0x60, 0xB5, 0x50, 0xCC, 0x3C,
0xB1, 0x57, 0xE4, 0xB7,
0xDC, 0x5A, 0x4D, 0xE1, 0x5C, 0xE0, 0x94, 0x4C, 0x5E, 0x28, 0xFF, 0xFA,
0x80, 0x6A, 0x13, 0x53,
0x52, 0xDB, 0xF3, 0x04, 0x92, 0x43, 0x38, 0xB9, 0x1B, 0xD9, 0x85, 0x54,
0x7B, 0x14, 0xC7, 0x89,
0x16, 0x8A, 0x4B, 0x82, 0xA1, 0x08, 0x02, 0x99, 0x23, 0x48, 0xDD, 0x75,
0x9C, 0xC8, 0xC1, 0xCE,
0xB0, 0xD7, 0x1B, 0xD8, 0xFB, 0x2D, 0xA7, 0x2E, 0x47, 0xA7, 0x18, 0x4B,
0xF6, 0x29, 0x69, 0x44,
0x30, 0x33, 0xBA, 0xA7, 0x1F, 0xCE, 0x96, 0x9E, 0x40, 0xE1, 0x43, 0xF0,
0xE0, 0x0D, 0x0A, 0x32,
0xB4, 0xEE, 0xA1, 0xC3, 0x5E, 0x9B, 0xC7, 0x7F, 0xF5, 0x9D, 0xD8, 0xF2,
0x0F, 0xD9, 0x8F, 0xAD,
0x75, 0x0A, 0x00, 0xD5, 0x25, 0x43, 0xF7, 0xAE, 0x51, 0x7F, 0xB7, 0xDE,
0xB7, 0xAD, 0xFB, 0xCE,
0x83, 0xE1, 0x81, 0xFF, 0xDD, 0xA2, 0x77, 0xFE, 0xEB, 0x27, 0x1F, 0x10,
0xFA, 0x82, 0x37, 0xF4,
0x7E, 0xCC, 0xE2, 0xA1, 0x58, 0xC8, 0xAF, 0x1D, 0x1A, 0x81, 0x31, 0x6E,
0xF4, 0x8B, 0x63, 0x34,
0xF3, 0x05, 0x0F, 0xE1, 0xCC, 0x15, 0xDC, 0xA4, 0x28, 0x7A, 0x9E, 0xEB,
0x62, 0xD8, 0xD8, 0x8C,
0x85, 0xD7, 0x07, 0x87, 0x90, 0x2F, 0xF7, 0x1C, 0x56, 0x85, 0x2F, 0xEF,
0x32, 0x37, 0x07, 0xAB,
0xB0, 0xE6, 0xB5, 0x02, 0x19, 0x35, 0xAF, 0xDB, 0xD4, 0xA2, 0x9C, 0x36,
0x80, 0xC6, 0xDC, 0x82,
0x08, 0xE0, 0xC0, 0x5F, 0x3C, 0x59, 0xAA, 0x4E, 0x26, 0x03, 0x29, 0xB3,
0x62, 0x58, 0x41, 0x59,
0x3A, 0x37, 0x43, 0x35, 0xE3, 0x9F, 0x34, 0xE2, 0xA1, 0x04, 0x97, 0x12,
0x9D, 0x8C, 0xAD, 0xF7,
0xFB, 0x8C, 0xA1, 0xA2, 0xE9, 0xE4, 0xEF, 0xD9, 0xC5, 0xE5, 0xDF, 0x0E,
0xBF, 0x4A, 0xE0, 0x7A,
0x1E, 0x10, 0x50, 0x58, 0x63, 0x51, 0xE1, 0xD4, 0xFE, 0x57, 0xB0, 0x9E,
0xD7, 0xDA, 0x8C, 0xED,
0x7D, 0x82, 0xAC, 0x2F, 0x25, 0x58, 0x0A, 0x58, 0xE6, 0xA4, 0xF4, 0x57,
0x4B, 0xA4, 0x1B, 0x65,
0xB9, 0x4A, 0x87, 0x46, 0xEB, 0x8C, 0x0F, 0x9A, 0x48, 0x90, 0xF9, 0x9F,
0x76, 0x69, 0x03, 0x72,
0x77, 0xEC, 0xC1, 0x42, 0x4C, 0x87, 0xDB, 0x0B, 0x3C, 0xD4, 0x74, 0xEF,
0xE5, 0x34, 0xE0, 0x32,
0x45, 0xB0, 0xF8, 0xAB, 0xD5, 0x26, 0x21, 0xD7, 0xD2, 0x98, 0x54, 0x8F,
0x64, 0x88, 0x20, 0x2B,
0x14, 0xE3, 0x82, 0xD5, 0x2A, 0x4B, 0x8F, 0x4E, 0x35, 0x20, 0x82, 0x7E,
0x1B, 0xFE, 0xFA, 0x2C,
0x79, 0x6C, 0x6E, 0x66, 0x94, 0xBB, 0x0A, 0xEB, 0xBA, 0xD9, 0x70, 0x61,
0xE9, 0x47, 0xB5, 0x82,
0xFC, 0x18, 0x3C, 0x66, 0x3A, 0x09, 0x2E, 0x1F, 0x61, 0x74, 0xCA, 0xCB,
0xF6, 0x7A, 0x52, 0x37,
0x1D, 0xAC, 0x8D, 0x63, 0x69, 0x84, 0x8E, 0xC7, 0x70, 0x59, 0xDD, 0x2D,
0x91, 0x1E, 0xF7, 0xB1,
0x56, 0xED, 0x7A, 0x06, 0x9D, 0x5B, 0x33, 0x15, 0xDD, 0x31, 0xD0, 0xE6,
0x16, 0x07, 0x9B, 0xA5,
0x94, 0x06, 0x7D, 0xC1, 0xE9, 0xD6, 0xC8, 0xAF, 0xB4, 0x1E, 0x2D, 0x88,
0x06, 0xA7, 0x63, 0xB8,
0xCF, 0xC8, 0xA2, 0x6E, 0x84, 0xB3, 0x8D, 0xE5, 0x47, 0xE6, 0x13, 0x63,
0x8E, 0xD1, 0x7F, 0xD4,
0x81, 0x44, 0x38, 0xBF
};
// LibTSforge/Crypto/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using [Link];
using [Link];
if (version != [Link])
{
if ()
{
throw new InvalidDataException("Failed to verify HMAC. Physical
store is corrupt.");
}
}
else
{
if ()
{
throw new InvalidDataException("Failed to verify checksum.
Physical store is corrupt.");
}
}
return psData;
}
public static byte[] EncryptPhysicalStore(byte[] data, bool production,
PSVersion version)
{
Dictionary<PSVersion, int> versionTable = new Dictionary<PSVersion,
int>
{
{[Link], 2},
{PSVersion.Win7, 5},
{PSVersion.Win8, 1},
{[Link], 2},
{[Link], 3}
};
byte[] decData = { };
decData =
[Link](hmacKey).Concat(hmacSig).Concat([Link](0)).Concat(dat
a).ToArray();
byte[] encData = [Link](decData, aesKey);
return [Link]();
}
}
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using System;
using [Link];
using Microsoft.Win32;
using PhysicalStore;
using SPP;
using TokenStore;
if ([Link](@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\Registration", "ProductId", null) != null)
{
[Link](@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\Registration", "ProductId", pkey.GetPid2());
[Link](@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\Registration", "DigitalProductId", pkey.GetPid3());
[Link](@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\Registration", "DigitalProductId4", pkey.GetPid4());
}
try
{
[Link](actId);
}
catch (ArgumentException)
{
[Link]([Link](actId));
}
ProductConfig config;
[Link](actId, out config);
if ([Link] == PKeyAlgorithm.PKEY2009)
{
uint status = [Link](pkey);
[Link]([Link]("Installing generated product key
{0} status {1:X}", pkey, status));
if ((int)status < 0)
{
throw new ApplicationException("Failed to install generated
product key.");
}
[Link](version);
WritePkey2005RegistryValues(version, pkey);
}
[Link]["pkeyId"] = pkeyId;
[Link]["pkeyIdList"] = pkeyId;
[Link](skuMetaName, "xml", [Link]());
string cachePath =
[Link](version).Replace("[Link]", @"cache\[Link]");
if ([Link](cachePath)) [Link](cachePath);
}
}
[Link](actId);
[Link]("Successfully deposited fake product key.");
}
}
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using [Link];
using [Link];
using PhysicalStore;
using SPP;
[Link](version);
[Link]("Successfully reset all grace and evaluation period
timers.");
}
}
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using [Link];
using [Link];
using PhysicalStore;
using SPP;
using System;
[Link](version);
[Link]("Writing TrustedStore data...");
using (IPhysicalStore store = [Link](version, production))
{
List<string> values = new List<string>
{
"msft:spp/timebased/AB",
"msft:spp/timebased/CD"
};
List<PSBlock> blocks = new List<PSBlock>();
foreach (string value in values)
{
[Link]([Link](value).ToList());
}
foreach (PSBlock block in blocks)
{
[Link]([Link], [Link]);
}
}
[Link]("Successfully removed the key change lock.");
}
}
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using System;
using [Link];
using PhysicalStore;
using SPP;
if (actId == [Link])
{
throw new NotSupportedException("No applicable activation IDs
found.");
}
}
if ([Link]([Link](actId)) !=
"Volume:CSVLK")
{
throw new NotSupportedException("Non-Volume:CSVLK product key
installed.");
}
byte[] cmidGuids = { };
byte[] reqCounts = { };
byte[] kmsChargeData = { };
if (version == [Link])
{
[Link](new byte[44]);
[Link](0, [Link]);
[Link](totalClients);
[Link](43200);
[Link](32);
[Link](20, [Link]);
[Link]((byte)currClients);
[Link](32, [Link]);
[Link]((byte)currClients);
[Link](0, [Link]);
for (int i = 0; i < currClients; i++)
{
[Link]([Link]().ToByteArray());
[Link](ldapTimestamp - (10 * (i + 1)));
}
kmsChargeData = [Link]();
}
else
{
for (int i = 0; i < currClients; i++)
{
[Link](ldapTimestamp - (10 * (i + 1)));
[Link]([Link]().ToByteArray());
}
cmidGuids = [Link]();
[Link](new byte[40]);
[Link](4, [Link]);
[Link]((byte)currClients);
[Link](24, [Link]);
[Link]((byte)currClients);
reqCounts = [Link]();
}
[Link](version);
kmsChargeData = [Link]();
}
[Link](key, countVal);
[Link](new PSBlock
{
Type = [Link],
Flags = (version == [Link]) ? (uint)0x400 : 0,
KeyAsStr = key,
ValueAsStr = countVal,
Data = kmsChargeData
});
[Link](version);
}
}
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using [Link];
using [Link];
using PhysicalStore;
using SPP;
if (version == [Link])
{
blocks = [Link]("740D70D8-6448-4b2f-9063-
4A7A463600C5").ToList();
}
else if (version == PSVersion.Win7)
{
blocks = [Link](0xA0000).ToList();
}
else
{
blocks = [Link]("__##USERSEP-RESERVED##__$$REARM-
COUNT$$").ToList();
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using PhysicalStore;
using SPP;
using [Link];
using System;
Guid appId;
if (actId == [Link])
{
appId = SLApi.WINDOWS_APP_ID;
actId = [Link](appId, true);
if (actId == [Link])
{
throw new Exception("No applicable activation IDs found.");
}
}
else
{
appId = [Link](actId);
}
[Link](version);
if (keyBlock == null)
{
throw new InvalidDataException("Failed to get product key data
for activation ID " + actId + ".");
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using [Link];
using PhysicalStore;
using SPP;
[Link](version);
}
// LibTSforge/Modifiers/[Link]
namespace [Link]
{
using System;
using PhysicalStore;
using SPP;
Guid appId;
if (actId == [Link])
{
appId = SLApi.WINDOWS_APP_ID;
actId = [Link](appId, true);
if (actId == [Link])
{
throw new Exception("No applicable activation IDs found.");
}
}
else
{
appId = [Link](actId);
}
[Link](version);
if (keyBlock == null)
{
throw new Exception("No product key found.");
}
[Link]("SppPkeyUniqueIdToken");
if (actId == [Link])
{
throw new NotSupportedException("No applicable activation IDs
found.");
}
}
else
{
appId = [Link](actId);
}
if ([Link]([Link](actId)) !=
"Volume:GVLK")
{
throw new NotSupportedException("Non-Volume:GVLK product key
installed.");
}
[Link](version);
ulong unknown = 0;
ulong time1;
ulong time2 = (ulong)[Link]();
ulong expiry = [Link];
if (version == [Link])
{
VistaTimer vistaTimer = new VistaTimer
{
Time = time2,
Expiry = [Link]
};
string vistaTimerName =
[Link]("msft:sl/timer/VLExpiration/VOLUME/{0}/{1}", appId, actId);
[Link](key, vistaTimerName);
[Link](key, [Link]());
[Link](new[]
{
new PSBlock
{
Type = [Link],
Flags = 0,
KeyAsStr = key,
ValueAsStr = vistaTimerName,
Data = [Link]()
},
new PSBlock
{
Type = [Link],
Flags = 0,
KeyAsStr = key,
ValueAsStr = [Link](),
Data = kmsData
}
});
}
else
{
byte[] hwidBlock = [Link];
byte[] kmsResp;
switch (version)
{
case PSVersion.Win7:
kmsResp = Constants.KMSv4Response;
break;
case PSVersion.Win8:
kmsResp = Constants.KMSv5Response;
break;
case [Link]:
case [Link]:
kmsResp = Constants.KMSv6Response;
break;
default:
throw new NotSupportedException("Unsupported
PSVersion.");
}
[Link](new[]
{
new CRCBlockModern
{
DataType = [Link],
Key = new byte[] { },
Value = kmsResp
},
new CRCBlockModern
{
DataType = [Link],
Key = new byte[] { },
ValueAsStr = "msft:rm/algorithm/hwid/4.0"
},
new CRCBlockModern
{
DataType = [Link],
KeyAsStr = "SppBindingLicenseData",
Value = hwidBlock
}
});
if (version == [Link])
{
[Link](new[]
{
new CRCBlockModern
{
DataType = [Link],
Key = new byte[] { },
ValueAsStr = "[Link]"
},
new CRCBlockModern
{
DataType = [Link],
Key = new byte[] { },
ValueAsStr = "6969"
}
});
}
byte[] kmsBindingData = [Link]();
string storeVal =
[Link]("msft:spp/kms/bind/2.0/store/{0}/{1}", appId, actId);
string timerVal =
[Link]("msft:spp/kms/bind/2.0/timer/{0}/{1}", appId, actId);
[Link](key, storeVal);
[Link](key, timerVal);
[Link](new[]
{
new PSBlock
{
Type = [Link],
Flags = (version == [Link]) ? (uint)0x400 : 0,
KeyAsStr = key,
ValueAsStr = storeVal,
Data = kmsBindingData
},
new PSBlock
{
Type = [Link],
Flags = (version == PSVersion.Win7) ? (uint)0 : 0x4,
KeyAsStr = key,
ValueAsStr = timerVal,
Data = [Link]()
}
});
}
}
[Link](version);
[Link](appId);
[Link]("Activated using KMS4k successfully.");
}
}
}
// LibTSforge/Activators/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using Crypto;
using PhysicalStore;
using SPP;
if (status != 0)
{
throw new InvalidOperationException("Failed to deposit fake CID.");
}
}
if (actId == [Link])
{
appId = SLApi.WINDOWS_APP_ID;
actId = [Link](appId, false);
if (actId == [Link])
{
throw new NotSupportedException("No applicable activation IDs
found.");
}
}
else
{
appId = [Link](actId);
}
if ()
{
throw new NotSupportedException("Phone license is unavailable for
this product.");
}
[Link](version);
if (version == [Link])
{
iidHash =
CryptoUtils.SHA256Hash([Link](instId)).Take(0x10).ToArray();
}
else if (version == PSVersion.Win7)
{
iidHash = CryptoUtils.SHA256Hash([Link](instId));
}
else
{
iidHash = CryptoUtils.SHA256Hash([Link](instId + '\
0' + [Link]));
}
if (keyBlock == null)
{
throw new InvalidDataException("Failed to get product key data
for activation ID " + actId + ".");
}
byte[] pkeyData;
if (version == [Link])
{
pkeyData = [Link]("PKeyBasicInfo").Value;
string uniqueId =
[Link]([Link](0x120).Take(0x80).ToArray());
string extPid =
[Link]([Link](0x1A0).Take(0x80).ToArray());
uint group;
[Link]([Link]('-')[1], out group);
if (group == 0)
{
throw new FormatException("Extended PID has invalid
format.");
}
ulong shortauth;
try
{
shortauth =
BitConverter.ToUInt64(Convert.FromBase64String([Link]('&')[1]), 0);
}
catch
{
throw new FormatException("Key Unique ID has invalid
format.");
}
[Link]("SppPkeyVirtual");
[Link](key, [Link](), [Link]());
[Link](key, hwidBlockName);
[Link](key, pkeyInfoName);
[Link](new[] {
new PSBlock
{
Type = [Link],
Flags = 0,
KeyAsStr = key,
ValueAsStr = hwidBlockName,
Data = tsHwidData
},
new PSBlock
{
Type = [Link],
Flags = 0,
KeyAsStr = key,
ValueAsStr = pkeyInfoName,
Data = tsPkeyInfoData
}
});
}
[Link](version);
[Link](appId);
[Link]("Activated using ZeroCID successfully.");
}
}
}
// LibTSforge/TokenStore/[Link]
namespace [Link]
{
using [Link];
using [Link];
return [Link]();
}
public TokenMeta()
{
}
}
}
// LibTSforge/TokenStore/[Link]
namespace [Link]
{
using System;
// LibTSforge/TokenStore/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using [Link];
using Crypto;
[Link](0x24, [Link]);
uint nextBlock;
if (populated)
{
[Link](contentOffset + 0x20,
[Link]);
uint dataLength = reader.ReadUInt32();
if (dataLength != contentLength)
{
throw new FormatException("Data length in tokens
content is inconsistent with entry.");
}
[Link](0x20);
contentData = [Link]((int)contentLength);
}
[Link](new TokenEntry
{
Name = [Link](0x82),
Extension = [Link](0x8),
Data = contentData,
Populated = populated
});
}
[Link](nextBlock, [Link]);
} while (nextBlock != 0);
}
[Link](curBlockOffset, [Link]);
[Link](curBlockOffset);
[Link](0);
[Link](curEntryOffset, [Link]);
[Link](curEntryOffset);
[Link]([Link] ? 1 : 0);
[Link]([Link] ? curContsOffset : 0);
[Link]([Link] ? [Link] : -1);
[Link]([Link] ? [Link] : -1);
writer.WriteFixedString16([Link], 0x82);
writer.WriteFixedString16([Link], 0x8);
curEntryOffset = (int)[Link];
if ([Link])
{
[Link](curContsOffset, [Link]);
[Link](CONTS_HEADER);
[Link]([Link]);
[Link](CryptoUtils.SHA256Hash([Link]));
[Link]([Link]);
[Link](CONTS_FOOTER);
curContsOffset = (int)[Link];
}
[Link](curEntryOffset, [Link]);
[Link](BLOCK_PAD_SIZE);
[Link](curBlockOffset, [Link]);
byte[] blockData = new byte[BLOCK_SIZE - 0x20];
curBlockOffset = curContsOffset;
curEntryOffset = curBlockOffset + 0x8;
curContsOffset = curBlockOffset + BLOCK_SIZE;
}
}
[Link](curBlockOffset);
}
Entries = [Link](delEntries).ToList();
}
return null;
}
if (entry == null)
{
meta = new TokenMeta
{
Name = name
};
}
else
{
meta = new TokenMeta([Link]);
}
return meta;
}
[Link](new TokenEntry
{
Populated = true,
Name = name,
Extension = ext,
Data = data
});
}
// LibTSforge/PhysicalStore/[Link]
namespace [Link]
{
using [Link];
// LibTSforge/PhysicalStore/[Link]
namespace [Link]
{
using System;
using [Link];
[Link]([Link]);
[Link](keyNameEnc);
[Link]([Link]);
[Link](4);
return [Link]();
}
[Link](4);
Data[[Link]].Add(new ModernBlock
{
Type = [Link],
Flags = [Link],
Unknown = [Link],
Value = [Link],
Data = [Link]
});
}
public void AddBlocks(IEnumerable<PSBlock> blocks)
{
foreach (PSBlock block in blocks)
{
AddBlock(block);
}
}
return null;
}
return null;
}
Data[key] = blocks;
}
if ([Link] == value)
{
[Link] = data;
blocks[i] = block;
break;
}
}
Data[key] = blocks;
}
Data[key] = blocks;
}
Data[key] = blocks;
}
return results;
}
return results;
}
}
}
// LibTSforge/PhysicalStore/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using Crypto;
return [Link]();
}
return null;
}
if ([Link] == value)
{
[Link] = data;
Blocks[i] = block;
break;
}
}
}
if ([Link] == value)
{
[Link] = data;
Blocks[i] = block;
break;
}
}
}
Deserialize([Link]([Link](),
production, [Link]));
[Link](0, [Link]);
}
[Link](0, [Link]);
[Link](0, [Link]);
[Link](data);
[Link](data);
[Link]();
[Link]();
}
}
[Link]([Link]);
[Link]([Link]);
[Link](0, [Link]);
[Link](0, [Link]);
[Link](encrData);
[Link](encrData);
[Link]();
[Link]();
}
return results;
}
}
}
// LibTSforge/PhysicalStore/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
using Crypto;
return [Link]();
}
return null;
}
return null;
}
Deserialize([Link]([Link](),
production, PSVersion.Win7));
[Link](0, [Link]);
}
[Link]([Link]);
[Link]([Link]);
[Link](0, [Link]);
[Link](0, [Link]);
[Link](data);
[Link](data);
[Link]();
[Link]();
}
}
[Link](0, [Link]);
[Link](0, [Link]);
[Link](encrData);
[Link](encrData);
[Link]();
[Link]();
}
return results;
}
return results;
}
}
}
// LibTSforge/PhysicalStore/[Link]
namespace [Link]
{
using System;
using [Link];
using [Link];
[Link](Key);
[Link](Value);
}
DataType = (CRCBlockType)type;
Key = key;
Value = value;
if (CRC() != crc)
{
throw new InvalidDataException("Invalid CRC in variable bag.");
}
}
[Link](Key);
[Link](8);
[Link](Value);
[Link](8);
}
public override void Decode(BinaryReader reader)
{
uint crc = reader.ReadUInt32();
uint type = reader.ReadUInt32();
uint lenName = reader.ReadUInt32();
uint lenVal = reader.ReadUInt32();
DataType = (CRCBlockType)type;
Key = key;
Value = value;
if (CRC() != crc)
{
throw new InvalidDataException("Invalid CRC in variable bag.");
}
}
if (Version == [Link])
{
block = new CRCBlockVista();
}
else
{
block = new CRCBlockModern();
}
[Link](reader);
[Link](block);
}
}
return [Link]();
}
return null;
}
if ([Link] == key)
{
[Link] = value;
Blocks[i] = block;
break;
}
}
}
$ctemp = "$env:SystemRoot\Temp\"
if (-Not (Test-Path -Path $ctemp)) { New-Item -Path $ctemp -ItemType Directory
> $null }
$env:TMP = $ctemp
$env:TEMP = $ctemp
$[Link] = $true
Add-Type -Language $lang -TypeDefinition $src -CompilerParameters $cp
}
function Get-WmiInfo {
param ([string]$tsactid, [string]$property)
function slGetSkuInfo($SkuId) {
$t = [AppDomain]::[Link](4,
1).DefineDynamicModule(2, $False).DefineType(0)
$[Link]('SLOpen', '[Link]', 22, 1, [Int32],
@([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
$[Link]('SLClose', '[Link]', 22, 1, [IntPtr], @([IntPtr]), 1,
3).SetImplementationFlags(128)
$[Link]('SLGetProductSkuInformation', '[Link]', 22, 1, [Int32],
@([IntPtr], [Guid].MakeByRefType(), [String], [UInt32].MakeByRefType(),
[UInt32].MakeByRefType(), [IntPtr].MakeByRefType()), 1,
3).SetImplementationFlags(128)
$w = $[Link]()
$hSLC = 0
try {
[void]$w::SLOpen([ref]$hSLC)
$c = 0; $b = 0
$r = $w::SLGetProductSkuInformation($hSLC, [ref][Guid]$SkuId,
"msft:sl/EUL/PHONE/PUBLIC", [ref]$null, [ref]$c, [ref]$b)
return ($r -eq 0)
}
finally {
[void]$w::SLClose($hSLC)
}
}
if (-not $env:resetstuff) {
foreach ($tsactid in $tsactids) {
try {
$activated = $null
$prodDes = Get-WmiInfo -tsactid $tsactid -property "Description"
$prodName = Get-WmiInfo -tsactid $tsactid -property "Name"
if ($prodName) {
$nameParts = $prodName -split ',', 2
$prodName = if ($[Link] -gt 1) { ($nameParts[1].Trim() -
split '[ ,]')[0] } else { $null }
}
if (-not $env:_vis -and -not $env:oldks) {
[[Link]]::InstallGenPKey($ver, $prod,
$tsactid)
}
if ($prodName -match 'Office' -and $prodDes -notmatch 'KMS' -and -not
(slGetSkuInfo($tsactid))) {
$licenseStatus = Get-WmiInfo -tsactid $tsactid -property
"LicenseStatus"
if ($licenseStatus -eq 1) {
Write-Host "[$prodName] is already permanently activated." -
ForegroundColor White -BackgroundColor DarkGreen
continue
}
}
if ($env:tsmethod -eq "StaticCID") {
[[Link]]::SecurityProtocol =
[[Link]]::Tls12
$attempts = @(
@(100055, 1000043, 1338662172562478),
@(1345, 1003020, 6311608238084405)
)
foreach ($params in $attempts) {
[[Link]]::SetParams($ver, $prod,
$tsactid, [[Link]]::PKEY2009, $params[0], $params[1],
$params[2])
$instId = [[Link]]::GetInstallationID($tsactid)
$confId = [[Link]]::CallWebService(1,
$instId, "31337-42069-123-456789-04-1337-2600.0000-2542001")
$result =
[[Link]]::DepositConfirmationID($tsactid, $instId, $confId)
if ($result -eq 0) { break }
}
[[Link]]::RestartSPP($ver)
}
elseif ($env:tsmethod -eq "KMS4k") {
[[Link].KMS4k]::Activate($ver, $prod, $tsactid)
}
else {
[[Link]]::Activate($ver, $prod, $tsactid)
}
if ($env:tsmethod -eq "KMS4k") {
$GracePeriodStatus = Get-WmiInfo -tsactid $tsactid -property
"GracePeriodRemaining"
if ($GracePeriodStatus -gt 259200) { $activated = 1 }
}
else {
$licenseStatus = Get-WmiInfo -tsactid $tsactid -property
"LicenseStatus"
if ($licenseStatus -eq 1) { $activated = 1 }
}
if ($activated) {
if ($prodDes -match 'KMS' -and $prodDes -notmatch 'CLIENT') {
[[Link]]::Charge($ver, $prod,
$tsactid)
Write-Host "[$prodName] CSVLK is permanently activated with
$env:tsmethod." -ForegroundColor White -BackgroundColor DarkGreen
Write-Host "[$prodName] CSVLK is charged with 25 clients for 30
days." -ForegroundColor White -BackgroundColor DarkGreen
}
else {
if ($env:tsmethod -eq "KMS4k") {
Write-Host "[$prodName] is activated till $
([DateTime]::[Link]($GracePeriodStatus).ToString('yyyy-MM-dd HH:mm:ss'))
with $env:tsmethod." -ForegroundColor White -BackgroundColor DarkGreen
}
else {
Write-Host "[$prodName] is permanently activated with
$env:tsmethod." -ForegroundColor White -BackgroundColor DarkGreen
}
}
}
else {
Write-Host "[$prodName] activation has failed." -ForegroundColor
White -BackgroundColor DarkRed
$errcode = 3
}
}
catch {
$errcode = 3
Write-Host "$($_.[Link])" -ForegroundColor Red -
BackgroundColor Black
Write-Host "[$prodName] activation has failed." -ForegroundColor White
-BackgroundColor DarkRed
}
}
}
if ($env:resetstuff) {
try {
if (-not $env:_vis)
{ [[Link]]::DeleteTamperFlags($ver, $prod) }
[[Link]]::RefreshLicenseStatus()
[[Link]]::Reset($ver, $prod)
[[Link]]::Reset($ver, $prod)
if (-not $env:_vis)
{ [[Link]]::Delete($ver, $prod) }
}
catch {
$errcode = 3
Write-Host "$($_.[Link])" -ForegroundColor Red -BackgroundColor
Black
}
}
Exit $errcode
:tsforge:
::=================================================================================
=======================================================
:wintsid:
$SysPath = "$env:SystemRoot\System32"
if (Test-Path "$env:SystemRoot\Sysnative\[Link]") {
$SysPath = "$env:SystemRoot\Sysnative"
}
function Windows-ActID {
param (
[string]$edition,
[string]$keytype
)
$filePatterns = @(
"$SysPath\spp\tokens\skus\$edition\$edition*.xrm-ms",
"$SysPath\spp\tokens\skus\Security-SPP-Component-SKU-$edition\*-$edition-
*.xrm-ms"
)
switch ($keytype) {
"zero" {
$licenseTypes = @('OEM_DM', 'OEM_COA_SLP', 'OEM_COA_NSLP', 'MAK',
'RETAIL')
}
"ks" {
$licenseTypes = @('KMSCLIENT')
}
"avma" {
$licenseTypes = @('VIRTUAL_MACHINE')
}
"kmshost" {
$licenseTypes = @('KMS_')
}
}
$orderedLicenses = @()
foreach ($type in $licenseTypes) {
$orderedLicenses += $softwareLicensingProducts | Where-Object
{ $_.Description -match $type } | Select-Object -ExpandProperty ID
}
$fileIds = @()
$muiLockedIds = @()
$kmsCountedIdCounts = @{}
$t = [AppDomain]::[Link](4,
1).DefineDynamicModule(2, $False).DefineType(0)
$methods = @(
@{name = 'SLOpen'; returnType = [Int32]; parameters =
@([IntPtr].MakeByRefType()) },
@{name = 'SLClose'; returnType = [Int32]; parameters = @([IntPtr]) },
@{name = 'SLGetProductSkuInformation'; returnType = [Int32]; parameters =
@([IntPtr], [Guid].MakeByRefType(), [String], [UInt32].MakeByRefType(),
[UInt32].MakeByRefType(), [IntPtr].MakeByRefType()) },
@{name = 'SLGetLicense'; returnType = [Int32]; parameters = @([IntPtr],
[Guid].MakeByRefType(), [UInt32].MakeByRefType(), [IntPtr].MakeByRefType()) }
)
$w = $[Link]()
$m = [[Link]]
$c = 0; $b = 0
[void]$w::SLGetLicense($hSLC, [ref][Guid]$FileId, [ref]$c, [ref]$b)
$blob = New-Object byte[] $c; $m::Copy($b, $blob, 0, $c)
$cont = [[Link]]::[Link]($blob)
$xml = [xml]$[Link]($[Link]('<r'))
if ($checkType -eq 'MUI') {
$[Link][0].grant | foreach {
$_.[Link] | where
{ $_.name -eq 'Kernel-MUI-Language-Allowed' } | foreach {
if ($_.InnerText -ne 'EMPTY') { $result = $true }
}
}
}
elseif ($checkType -eq 'KMS') {
$[Link][0].grant | foreach {
$_.[Link] | where
{ $_.name -eq 'Security-SPP-KmsCountedIdList' } | foreach {
$result = ($_.[Link](' ', '').Replace("`n", '') -
split ',').Count
}
}
}
return $result
}
$hSLC = 0; [void]$w::SLOpen([ref]$hSLC)
if ($[Link] -gt 0) {
$idWithMostIds = $[Link]() | Sort-Object Value -
Descending
$fileIds = $idWithMostIds | Select-Object -ExpandProperty Key
}
else {
if ($[Link] -eq 0) {
$fileIds = $orderedLicenses
}
[void]$w::SLClose($hSLC)
$pkeyconfig = "$SysPath\spp\tokens\pkeyconfig\[Link]-ms"
if ($keytype -eq 'kmshost') {
$csvlkPath = "$SysPath\spp\tokens\pkeyconfig\[Link]-ms"
if (Test-Path $csvlkPath) {
$pkeyconfig = $csvlkPath
}
}
$data = [xml][[Link]]::[Link]([Convert]::FromBase64String(([xml]
(get-content
$pkeyconfig)).[Link])
)
$betaIds = @()
$excludedIds = @()
$checkedIds = @()
$refGroupId = $[Link]
$publicKey = $[Link] |
Where-Object { $_.GroupId -eq $refGroupId -and $_.AlgorithmId -eq
'msft:rm/algorithm/pkey/2009' }
if ($publicKey) {
$keyRanges = $[Link] |
Where-Object { $_.RefActConfigId -eq "{$id}" }
foreach ($keyRange in $keyRanges) {
if ($[Link] -match 'WAU') {
$excludedIds += $id
break
}
}
}
}
}
$prefinalIds = @()
$finalIds = @()
if ($[Link] -eq 0) {
$finalIds = $prefinalIds
}
if ($[Link] -gt 0) {
$finalIds = $checkedIds + $finalIds
}
::=================================================================================
=======================================================
:offtsid:
function Office-ActID {
param (
[string]$pkeypath,
[string]$edition,
[string]$keytype
)
switch ($keytype) {
"zero" { $productKeyTypes = @("OEM:NONSLP","Volume:MAK","Retail") }
"ks" { $productKeyTypes = @("Volume:GVLK") }
}
$data = [xml][[Link]]::[Link]([Convert]::FromBase64String(([xml]
(Get-Content
$pkeypath)).[Link]))
$configurations = $[Link]
$filteredConfigs = @()
foreach ($type in $productKeyTypes) {
$filteredConfigs += $configurations | Where-Object {
$_.EditionId -eq $edition -and
$_.ProductKeyType -eq $type -and
$_.ProductDescription -notmatch 'demo|MSDN|PIN'
}
}
if ($[Link] -ne 0) {
$filteredConfigs = $filterPreview
}
::=================================================================================
=======================================================
:tsksdata
set f=
for %%# in (
:: Office 2013
15_AccessVolume_-AccessRetail-
15_AccessRuntimeRetail
15_ExcelVolume_-ExcelRetail-
15_GrooveVolume_-GrooveRetail-
15_InfoPathVolume_-InfoPathRetail-
15_LyncAcademicRetail
15_LyncEntryRetail
15_LyncVolume_-LyncRetail-
15_MondoRetail
15_MondoVolume_-O365BusinessRetail-O365HomePremRetail-O365ProPlusRetail-
O365SmallBusPremRetail-
15_OneNoteFreeRetail
15_OneNoteVolume_-OneNoteRetail-
15_OutlookVolume_-OutlookRetail-
15_PowerPointVolume_-PowerPointRetail-
15_ProjectProVolume_-ProjectProRetail-
15_ProjectStdVolume_-ProjectStdRetail-
15_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
15_PublisherVolume_-PublisherRetail-
15_SPDRetail
15_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-
HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-PersonalPipcRetail-
PersonalRetail-
15_VisioProVolume_-VisioProRetail-
15_VisioStdVolume_-VisioStdRetail-
15_WordVolume_-WordRetail-
:: Office 2016
16_AccessRuntimeRetail
16_AccessVolume_-AccessRetail-
16_ExcelVolume_-ExcelRetail-
16_MondoRetail
16_MondoVolume_-O365AppsBasicRetail-O365BusinessRetail-O365EduCloudRetail-
O365HomePremRetail-O365ProPlusRetail-O365SmallBusPremRetail-
16_OneNoteFreeRetail
16_OneNoteVolume_-OneNoteRetail-OneNote2021Retail-
16_OutlookVolume_-OutlookRetail-
16_PowerPointVolume_-PowerPointRetail-
16_ProjectProVolume_-ProjectProRetail-
16_ProjectProXVolume
16_ProjectStdVolume_-ProjectStdRetail-
16_ProjectStdXVolume
16_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
16_PublisherVolume_-PublisherRetail-
16_SkypeServiceBypassRetail
16_SkypeforBusinessEntryRetail
16_SkypeforBusinessVolume_-SkypeforBusinessRetail-
16_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-
HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-
HomeStudentVNextRetail-PersonalPipcRetail-PersonalRetail-
16_VisioProVolume_-VisioProRetail-
16_VisioProXVolume
16_VisioStdVolume_-VisioStdRetail-
16_VisioStdXVolume
16_WordVolume_-WordRetail-
:: Office 2019
16_AccessRuntime2019Retail
16_Access2019Volume_-Access2019Retail-
16_Excel2019Volume_-Excel2019Retail-
16_Outlook2019Volume_-Outlook2019Retail-
16_PowerPoint2019Volume_-PowerPoint2019Retail-
16_ProjectPro2019Volume_-ProjectPro2019Retail-
16_ProjectStd2019Volume_-ProjectStd2019Retail-
16_ProPlus2019Volume_-ProPlus2019Retail-Professional2019Retail-
16_Publisher2019Volume_-Publisher2019Retail-
16_SkypeforBusiness2019Volume_-SkypeforBusiness2019Retail-
16_SkypeforBusinessEntry2019Retail
16_Standard2019Volume_-Standard2019Retail-HomeBusiness2019Retail-
HomeStudentARM2019Retail-HomeStudentPlusARM2019Retail-HomeStudent2019Retail-
Personal2019Retail-
16_VisioPro2019Volume_-VisioPro2019Retail-
16_VisioStd2019Volume_-VisioStd2019Retail-
16_Word2019Volume_-Word2019Retail-
:: Office 2021
:: OneNote2021Volume KMS license is not available
16_AccessRuntime2021Retail
16_Access2021Volume_-Access2021Retail-
16_Excel2021Volume_-Excel2021Retail-
16_Outlook2021Volume_-Outlook2021Retail-
16_OneNoteFree2021Retail
16_PowerPoint2021Volume_-PowerPoint2021Retail-
16_ProjectPro2021Volume_-ProjectPro2021Retail-
16_ProjectStd2021Volume_-ProjectStd2021Retail-
16_ProPlus2021Volume_-ProPlus2021Retail-Professional2021Retail-
16_Publisher2021Volume_-Publisher2021Retail-
16_SkypeforBusiness2021Volume_-SkypeforBusiness2021Retail-
16_Standard2021Volume_-Standard2021Retail-HomeBusiness2021Retail-
HomeStudent2021Retail-Personal2021Retail-
16_VisioPro2021Volume_-VisioPro2021Retail-
16_VisioStd2021Volume_-VisioStd2021Retail-
16_Word2021Volume_-Word2021Retail-
:: Office 2024
16_Access2024Volume_-Access2024Retail-
16_Excel2024Volume_-Excel2024Retail-
16_Outlook2024Volume_-Outlook2024Retail-
16_PowerPoint2024Volume_-PowerPoint2024Retail-
16_ProjectPro2024Volume_-ProjectPro2024Retail-
16_ProjectStd2024Volume_-ProjectStd2024Retail-
16_ProPlus2024Volume_-ProPlus2024Retail-
16_SkypeforBusiness2024Volume
16_Standard2024Volume_-Home2024Retail-HomeBusiness2024Retail-
16_VisioPro2024Volume_-VisioPro2024Retail-
16_VisioStd2024Volume_-VisioStd2024Retail-
16_Word2024Volume_-Word2024Retail-
) do (
for /f "tokens=1-3 delims=_" %%A in ("%%#") do (
if %1==getinfo if "%oVer%"=="%%A" (
echo: %%C | find /i "-%2-" %nul% && (
set _License=%%B
set _altoffid=%%B
)
)
)
)
exit /b
::=================================================================================
=======================================================
:ts_getedition
set tsedition=
set _wtarget=
if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is
NULL) get LicenseFamily /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-
d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL').Get()).LicenseFamily
^| %% {echo ('LicenseFamily='+$_)}" %nul6%')"
%chkedi% do if not errorlevel 1 call set "_wtarget= !_wtarget! %%a "
for %%# in (
1:Ultimate
2:HomeBasic
3:HomePremium
4:Enterprise
5:HomeBasicN
6:Business
7:ServerStandard
8:ServerDatacenter
9:ServerSBSStandard
10:ServerEnterprise
11:Starter
12:ServerDatacenterCore
13:ServerStandardCore
14:ServerEnterpriseCore
15:ServerEnterpriseIA64
16:BusinessN
17:ServerWeb
18:ServerHPC
19:ServerHomeStandard
20:ServerStorageExpress
21:ServerStorageStandard
22:ServerStorageWorkgroup
23:ServerStorageEnterprise
24:ServerWinSB
25:ServerSBSPremium
26:HomePremiumN
27:EnterpriseN
28:UltimateN
29:ServerWebCore
30:ServerMediumBusinessManagement
31:ServerMediumBusinessSecurity
32:ServerMediumBusinessMessaging
33:ServerWinFoundation
34:ServerHomePremium
35:ServerWinSBV
36:ServerStandardV
37:ServerDatacenterV
38:ServerEnterpriseV
39:ServerDatacenterVCore
40:ServerStandardVCore
41:ServerEnterpriseVCore
42:ServerHyperCore
43:ServerStorageExpressCore
44:ServerStorageStandardCore
45:ServerStorageWorkgroupCore
46:ServerStorageEnterpriseCore
47:StarterN
48:Professional
49:ProfessionalN
50:ServerSolution
51:ServerForSBSolutions
52:ServerSolutionsPremium
53:ServerSolutionsPremiumCore
54:ServerSolutionEM
55:ServerForSBSolutionsEM
56:ServerEmbeddedSolution
57:ServerEmbeddedSolutionCore
58:ProfessionalEmbedded
59:ServerEssentialManagement
60:ServerEssentialAdditional
61:ServerEssentialManagementSvc
62:ServerEssentialAdditionalSvc
63:ServerSBSPremiumCore
64:ServerHPCV
65:Embedded
66:StarterE
67:HomeBasicE
68:HomePremiumE
69:ProfessionalE
70:EnterpriseE
71:UltimateE
72:EnterpriseEval
74:Prerelease
76:ServerMultiPointStandard
77:ServerMultiPointPremium
79:ServerStandardEval
80:ServerDatacenterEval
81:PrereleaseARM
82:PrereleaseN
84:EnterpriseNEval
85:EmbeddedAutomotive
86:EmbeddedIndustryA
87:ThinPC
88:EmbeddedA
89:EmbeddedIndustry
90:EmbeddedE
91:EmbeddedIndustryE
92:EmbeddedIndustryAE
93:ProfessionalPlus
95:ServerStorageWorkgroupEval
96:ServerStorageStandardEval
97:CoreARM
98:CoreN
99:CoreCountrySpecific
100:CoreSingleLanguage
101:Core
103:ProfessionalWMC
104:MobileCore
105:EmbeddedIndustryEval
106:EmbeddedIndustryEEval
107:EmbeddedEval
108:EmbeddedEEval
109:CoreSystemServer
110:ServerCloudStorage
111:CoreConnected
112:ProfessionalStudent
113:CoreConnectedN
114:ProfessionalStudentN
115:CoreConnectedSingleLanguage
116:CoreConnectedCountrySpecific
117:ConnectedCar
118:IndustryHandheld
119:PPIPRO
120:ServerARM64
121:Education
122:EducationN
123:IoTUAP
124:ServerHI
125:EnterpriseS
126:EnterpriseSN
127:ProfessionalS
128:ProfessionalSN
129:EnterpriseSEval
130:EnterpriseSNEval
131:IoTUAPCommercial
133:MobileEnterprise
134:AnalogOneCoreEnterprise
135:AnalogOneCore
136:Holographic
138:ProfessionalSingleLanguage
139:ProfessionalCountrySpecific
140:EnterpriseSubscription
141:EnterpriseSubscriptionN
143:ServerDatacenterNano
144:ServerStandardNano
145:ServerDatacenterACor
146:ServerStandardACor
147:ServerDatacenterCor
148:ServerStandardCor
149:UtilityVM
159:ServerDatacenterEvalCor
160:ServerStandardEvalCor
161:ProfessionalWorkstation
162:ProfessionalWorkstationN
163:ServerAzure
164:ProfessionalEducation
165:ProfessionalEducationN
168:ServerAzureCor
169:ServerAzureNano
171:EnterpriseG
172:EnterpriseGN
173:BusinessSubscription
174:BusinessSubscriptionN
175:ServerRdsh
178:Cloud
179:CloudN
180:HubOS
182:OneCoreUpdateOS
183:CloudE
184:Andromeda
185:IoTOS
186:CloudEN
187:IoTEdgeOS
188:IoTEnterprise
189:ModernPC
191:IoTEnterpriseS
192:SystemOS
193:NativeOS
194:GameCoreXbox
195:GameOS
196:DurangoHostOS
197:ScarlettHostOS
198:Keystone
199:CloudHost
200:CloudMOS
201:CloudCore
202:CloudEditionN
203:CloudEdition
204:WinVOS
205:IoTEnterpriseSK
206:IoTEnterpriseK
207:IoTEnterpriseSEval
208:AgentBridge
209:NanoHost
210:WNC
406:ServerAzureStackHCICor
407:ServerTurbine
408:ServerTurbineCor
4:ProEnterprise
6:ProStandard
10:ProSBS
16:ProStandardN
18:ServerComputeCluster
19:ServerHome
30:ServerMidmarketStandard
31:ServerMidmarketEdge
32:ServerMidmarketPremium
33:ServerSBSPrime
42:ServerHyper
64:ServerComputeClusterV
85:EmbeddedIapetus
86:EmbeddedTethys
88:EmbeddedDione
89:EmbeddedRhea
90:EmbeddedEnceladus
109:ServerNano
124:ServerCloudHostInfrastructure
133:MobileBusiness
134:HololensEnterprise
145:ServerDatacenterSCor
146:ServerStandardSCor
147:ServerDatacenterWSCor
148:ServerStandardWSCor
189:Lite
) do (
for /f "tokens=1-2 delims=:" %%A in ("%%#") do if "%osSKU%"=="%%A" if not defined
tsedition (
echo "%_wtarget%" | find /i " %%B " %nul% && set tsedition=%%B
)
)
exit /b
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:KMS38Activation
:: 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 "%%A"=="/KMS38" set _act=1
if /i "%%A"=="/KMS38-NoEditionChange" set _NoEditionChange=1
if /i "%%A"=="-el" set _elev=1
)
)
::=================================================================================
=======================================================
set _k38=
call :dk_setvar
set "specific_kms=SOFTWARE\Microsoft\Windows NT\CurrentVersion\
SoftwareProtectionPlatform\55c92734-d682-4d71-983e-d6ec3f16059f"
::=================================================================================
=======================================================
:k_menu
if %_unattended%==0 (
cls
if not defined terminal mode 76, 25
title KMS38 Activation %masver%
echo:
echo:
echo:
echo:
echo: ______________________________________________________
echo:
echo [1] KMS38 Activation
echo ____________________________________________
echo:
echo [2] Remove KMS38 Activation
echo:
echo [0] %_exitmsg%
echo: ______________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,0]"
choice /C:120 /N
set _el=!errorlevel!
if !_el!==3 exit /b
if !_el!==2 goto :k_uninstall
if !_el!==1 goto :k_menu2
goto :k_menu
)
::=================================================================================
=======================================================
:k_menu2
cls
if not defined terminal (
mode 110, 34
if exist "%SysPath%\spp\store_test\" mode 134, 34
)
title KMS38 Activation %masver%
echo:
echo Initializing...
call :dk_chkmal
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-
Server*CorEdition~*.mum" if not exist "%SysPath%\[Link]" set a_cor=1
if not exist %SysPath%\[Link] (set _fmiss=[Link])
if not exist %SysPath%\[Link] if not defined a_cor (set _fmiss=%_fmiss
%[Link])
if defined _fmiss (
%eline%
echo [%_fmiss%] file is missing, aborting...
echo:
if not defined results (
call :dk_color %Blue% "Go back to Main Menu, select Troubleshoot and run DISM
Restore and SFC Scan options."
call :dk_color %Blue% "After that, restart system and try activation again."
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
goto dk_done
)
::=================================================================================
=======================================================
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_ckeckwmic
call :dk_checksku
call :dk_product
call :dk_sppissue
::=================================================================================
=======================================================
call :dk_checkperm
if defined _perm (
cls
echo
___________________________________________________________________________________
________
echo:
call :dk_color2 %_White% " " %Green% "%winos% is already permanently
activated."
call :dk_color2 %_White% " " %Gray% "Activation is not required."
echo
___________________________________________________________________________________
________
if %_unattended%==1 goto dk_done
echo:
choice /C:10 /N /M "> [1] Activate Anyway [0] %_exitmsg% : "
if errorlevel 2 exit /b
)
cls
::=================================================================================
=======================================================
set _eval=
set _evalserv=
if defined _eval (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% |
find /i "Eval" %nul1% && (
%eline%
echo [%winos% ^| %winbuild%]
if defined _evalserv (
echo Server Evaluation cannot be activated. Convert it to full Server OS.
echo:
call :dk_color %Blue% "Go Back to main menu and use [Change Edition] option."
) else (
echo Evaluation editions cannot be activated outside of their evaluation period.
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset
evaluation period."
echo:
set fixes=%fixes% %mas%evaluation_editions
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%evaluation_editions"
)
goto dk_done
)
)
::=================================================================================
=======================================================
:: Check [Link] for the detection and activation of server cor and acor
editions
if defined a_cor (
if not exist "!_work!\[Link]" (
%eline%
echo [Link] doesn't exist in Server Cor/Acor [No GUI] versions.
echo The file is required for KMS38 activation.
echo Check the below page for instructions on how to activate it.
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas%kms38"
goto dk_done
)
)
if defined a_cor (
%psc% "if (-not (Get-AuthenticodeSignature -FilePath '!_work!\
[Link]').IsOSBinary) {Exit 3}" %nul%
if !errorlevel!==3 (
%eline%
echo Valid digital signature not found in [Link] file.
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto dk_done
)
)
::=================================================================================
=======================================================
set error=
cls
echo:
call :dk_showosinfo
::=================================================================================
=======================================================
call :dk_errorcheck
::=================================================================================
=======================================================
call :k_channel
:: Detect Key
set key=
set pkey=
set altkey=
set changekey=
set altedition=
set /a UBR=0
if %osSKU%==191 if defined altkey if defined altedition (
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b
if %winbuild% LSS 22598 if !UBR! LSS 2788 (
call :dk_color %Blue% "Windows must be updated to build 19044.2788 or higher for
IotEnterpriseS KMS38 activation."
)
)
if defined skunotfound (
call :dk_color %Red% "Required license files not found in %SysPath%\spp\tokens\
skus\"
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
if defined sppks (
call :dk_color %Red% "KMS38 activation is supported but failed to find the key."
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
::=================================================================================
=======================================================
:: Install key
echo:
if defined changekey (
call :dk_color %Blue% "[%altedition%] edition product key will be used to enable
KMS38 activation."
echo:
)
if defined winsub (
call :dk_color %Blue% "Windows Subscription edition [SKU ID-%slcSKU%] found. Script
will activate the base edition [SKU ID-%regSKU%]."
echo:
)
set _partial=
if not defined key (
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('wmic path %spp% where
"ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and PartialProductKey<>null
AND LicenseDependsOn is NULL" Get PartialProductKey /value %nul6%') do set
"_partial=%%#"
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
PartialProductKey FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-
d6ec3f16059f'' AND PartialProductKey IS NOT NULL AND LicenseDependsOn is
NULL').Get()).PartialProductKey | %% {echo ('PartialProductKey='+$_)}" %nul6%') do
set "_partial=%%#"
call echo Checking Installed Product Key [Partial Key - %%_partial%%]
[Volume:GVLK]
)
if defined key (
set generickey=1
call :dk_inskey "[%key%]"
)
::=================================================================================
=======================================================
set app=
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%a in ('"wmic path %spp% where
(ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and Description like '%
%KMSCLIENT%%' and PartialProductKey is not NULL AND LicenseDependsOn is NULL) get
ID /VALUE" %nul6%') do call set "app=%%a"
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%a in ('%psc% "(([WMISEARCHER]'SELECT
ID FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND
Description like ''%%KMSCLIENT%%'' AND PartialProductKey IS NOT NULL AND
LicenseDependsOn is NULL').Get()).ID | %% {echo ('ID='+$_)}" %nul6%') do call set
"app=%%a"
::=================================================================================
=======================================================
echo:
%nul% reg delete "HKLM\%specific_kms%" /f
%nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f
set k_error=
%nul% reg add "HKLM\%specific_kms%\%app%" /f /v KeyManagementServiceName /t
REG_SZ /d "[Link]" || set k_error=1
%nul% reg add "HKLM\%specific_kms%\%app%" /f /v KeyManagementServicePort /t
REG_SZ /d "1688" || set k_error=1
if not defined k_error (
echo Adding Specific KMS Host [LocalHost] [Successful]
) else (
call :dk_color %Red% "Adding Specific KMS Host [LocalHost] [Failed]"
)
::=================================================================================
=======================================================
if defined a_cor (
set "_clipup=%systemroot%\System32\[Link]"
pushd "!_work!\"
copy /y /b "[Link]" "!_clipup!" %nul%
popd
echo:
if exist "!_clipup!" (
echo Copying [Link] File to [%systemroot%\System32\] [Successful]
) else (
call :dk_color %Red% "Copying [Link] File to [%systemroot%\
System32\] [Failed] Aborting..."
goto :k_final
)
)
::=================================================================================
=======================================================
set "tdir=%ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket"
if not exist "%tdir%\" md "%tdir%\" %nul%
:: Generate ticket
set
"SessionIdStr=OSMajorVersion=5;OSMinorVersion=1;OSPlatformId=2;PP=0;GVLKExp=2038-
01-19T[Link]Z;DownlevelGenuineState=1;"
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':sign\:.*';.
([scriptblock]::Create($f[1]))"
:: Stop sppsvc
%_xmlexist% (
%psc% "Start-Job { Restart-Service ClipSVC } | Wait-Job -Timeout 20 | Out-Null"
%_xmlexist% timeout /t 2 %nul%
%_xmlexist% timeout /t 2 %nul%
%_xmlexist% (
set error=1
if exist "%tdir%\*.xml" del /f /q "%tdir%\*.xml" %nul%
call :dk_color %Gray% "Installing [Link] [Failed with ClipSVC
service restart, wait...]"
)
)
set rebuildinfo=
%_xmlexist% (
set error=1
set rebuildinfo=1
call :dk_color %Red% "Installing [Link] [Failed With clipup -
v -o]"
)
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\Install\Migration\*.xml" (
set error=1
set rebuildinfo=1
call :dk_color %Red% "Checking Ticket Migration [Failed]"
)
::=================================================================================
=========================================================
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 %spp% where ID='%app%' call ReArmsku %nul%
if %_wmic% EQU 0 %psc% "$null=([WMI]'%spp%=''%app%''').ReArmsku()" %nul%
if %errorlevel%==0 (
echo Applying SKU-ID Rearm [Successful]
) else (
call :dk_color %Red% "Applying SKU-ID Rearm [Failed]"
)
call :dk_refresh
echo:
call :k_checkexp
if defined _k38 (
call :k_actinfo
goto :k_final
)
::=================================================================================
=======================================================
:k_final
:: Remove the specific KMS host (LocalHost) added by the script if activation is
not completed
echo:
if not defined _k38 (
%nul% reg delete "HKLM\%specific_kms%" /f
%nul% reg delete "HKU\S-1-5-20\%specific_kms%" /f
%nul% reg query "HKLM\%specific_kms%" && (
call :dk_color %Red% "Removing the Added Specific KMS Host [Failed]"
) || (
echo Removing the Added Specific KMS Host [Successful]
)
)
:: [Link] does not exist in server cor and acor editions by default, it was
copied there with this script
if defined a_cor (
if exist "%_clipup%" (
call :dk_color %Red% "Deleting Copied [Link] File [Failed]"
) else (
echo Deleting Copied [Link] File [Successful]
)
)
if defined _k38 (
call :dk_reeval %nul%
)
goto :dk_done
::=================================================================================
=======================================================
:k_uninstall
cls
if not defined terminal mode 99, 28
title Remove KMS38 Activation %masver%
echo:
%nul% reg query "HKLM\%specific_kms%" && (
call :dk_color %Red% "Failed to remove specific KMS Host."
call :dk_color %Blue% "%_fixmsg%"
) || (
echo Successfully removed specific KMS Host.
)
echo:
echo KMS38 activation doesn't modify any Windows components and doesn't install any
new files.
echo:
call :dk_color %Gray% "If you want to reset the activation status,"
call :dk_color %Blue% "%_fixmsg%"
echo:
goto :dk_done
::=================================================================================
=======================================================
:k_actinfo
set xpr=
for /f "tokens=* delims=" %%# in ('%psc% "$([DateTime]::[Link](%gpr
%)).ToString('yyyy-MM-dd HH:mm:ss')" %nul6%') do set "xpr=%%#"
call :dk_color %Green% "%winos% is activated till !xpr!"
exit /b
:k_checkexp
set gpr=0
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('"wmic path %spp% where
(ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and Description like '%
%KMSCLIENT%%' and PartialProductKey is not NULL AND LicenseDependsOn is NULL) get
GracePeriodRemaining /VALUE" %nul6%') do set "gpr=%%#"
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
GracePeriodRemaining FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-
d6ec3f16059f'' AND Description like ''%%KMSCLIENT%%'' AND PartialProductKey IS NOT
NULL AND LicenseDependsOn is NULL').Get()).GracePeriodRemaining | %% {echo
('GracePeriodRemaining='+$_)}" %nul6%') do set "gpr=%%#"
if %gpr% GTR 259200 (set _k38=1) else (set _k38=)
exit /b
:k_channel
set _gvlk=
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('wmic path %spp% where
"ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and PartialProductKey IS NOT
NULL AND LicenseDependsOn is NULL and Description like '%%KMSCLIENT%%'" Get Name
/value %nul6%') do (echo %%# findstr /i "Windows" %nul1% && set _gvlk=1)
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
Name FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-d6ec3f16059f'' AND
PartialProductKey IS NOT NULL AND LicenseDependsOn is NULL and Description like ''%
%KMSCLIENT%%''').Get()).Name | %% {echo ('Name='+$_)}" %nul6%') do (echo %%#
findstr /i "Windows" %nul1% && set _gvlk=1)
exit /b
::=================================================================================
=======================================================
:k_pkey
call :dk_reflection
set pkey=
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkey=%%a)
exit /b
:: Get channel name for the key which was extracted from [Link]
:k_pkeychannel
set k=%1
set m=[[Link]]
set p=%SysPath%\spp\tokens\pkeyconfig\[Link]-ms
set pkeychannel=
for /f %%a in ('%psc% "%d1%"') do if not errorlevel 1 (set pkeychannel=%%a)
exit /b
:k_gvlk
::=================================================================================
=======================================================
:kms38data
set f=
for %%# in (
:: Windows 10/11
73111121-5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2Y%f
%T43___4_Enterprise
e272e3e2-732f-4c65-a8f0-484747d0d947_DPH2V-TTNVB-4X9Q3-TJR4H-KH%f
%JW4__27_EnterpriseN
2de67392-b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T8%f
%3GX__48_Professional
a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH37W-N47XK-V7XM9-C7227-GC%f
%QG9__49_ProfessionalN
7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KHY7-WNT83-DGQKR-F7HPR-84%f%4BM__98_CoreN
a9107544-f4a0-4053-a96a-1479abdef912_PVMJN-6DFY6-9CCP6-7BKTT-D3%f
%WVR__99_CoreCountrySpecific
cd918a57-a41b-4c82-8dce-1a538e221a83_7HNRX-D7KGG-3K4RQ-4WPJ4-YT%f
%DFH_100_CoreSingleLanguage
58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9XD-98N7V-6WMQ6-BX7FG-H8%f%Q99_101_Core
e0c42288-980c-4788-a014-c080d2e1926e_NW6C2-QMPVW-D7KKK-3GKT6-VC%f%FB2_121_Education
3c102355-d027-42c6-ad23-2e7ef8a02585_2WH4N-8QGBV-H22JP-CT43Q-MD%f
%WWJ_122_EducationN
32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7XTQ-FN8P6-TTKYV-9D4CC-J4%f
%62D_125_EnterpriseS_RS5,VB,Ge
2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCPHK-NFMTC-H88MJ-PFHPY-QJ%f
%4BJ_125_EnterpriseS_RS1
7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNMTR-4C88C-JK8YV-HQ7T2-76%f
%DF9_125_EnterpriseS_TH1
7103a333-b8c8-49cc-93ce-d37c09687f92_92NFX-8DJQP-P6BBQ-THF9C-7C%f
%G2H_126_EnterpriseSN_RS5,VB,Ge
9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFFDN-GRT3P-VKWWX-X7T3R-8B%f
%639_126_EnterpriseSN_RS1
87b838b7-41b6-4590-8318-5797951d8529_2F77B-TNFGY-69QQF-B8YKP-D6%f
%9TJ_126_EnterpriseSN_TH1
82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG8B-VKK3Q-CXVCJ-9G2XF-6Q%f
%84J_161_ProfessionalWorkstation
4b1571d3-bafb-4b40-8087-a961be2caf65_9FNHH-K3HBT-3W4TD-6383H-6X%f
%YWF_162_ProfessionalWorkstationN
3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP4R-GNPTD-KYYHQ-7B7DP-J4%f
%47Y_164_ProfessionalEducation
5300b18c-2e33-4dc2-8291-47ffcec746dd_YVWGF-BXNMC-HTQYQ-CPQ99-66%f
%QFC_165_ProfessionalEducationN
e0b2d383-d112-413f-8a80-97f373a5820c_YYVX9-NTFWV-6MDM3-9PT4T-4M%f
%68B_171_EnterpriseG
e38454fb-41a4-4f59-a5dc-25080e354730_44RPN-FTY23-9VTTB-MP9BX-T8%f
%4FV_172_EnterpriseGN
ec868e65-fadf-4759-b23e-93fe37f2cc29_CPWHC-NT2C7-VYW78-DHDB2-PG%f
%3GK_175_ServerRdsh_RS5
e4db50ea-bda1-4566-b047-0ca50abc6f07_7NBT4-WGBQX-MP4H7-QXFF8-YP%f
%3KX_175_ServerRdsh_RS3
0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBTWJ-3DR69-3C4V8-C26MC-GQ%f%9M6_183_CloudE
59eb965c-9150-42b7-a0ec-22151b9897c5_KBN8V-HFGQ4-MGXVD-347P6-PD%f
%QGT_191_IoTEnterpriseS_VB,NI
d30136fc-cb4b-416e-a23d-87207abc44a9_6XN7V-PCBDC-BDBRH-8DQY7-G6%f
%R44_202_CloudEditionN
ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D7F-N49CB-WQR8W-TBJ73-FM%f
%8RX_203_CloudEdition
:: Windows 2016/19/22/25 LTSC/SAC
7dc26449-db21-4e09-ba37-28f2958506a6_TVRH6-WHNXV-R9WG3-9XRFY-MY%f
%832___7_ServerStandard_Ge
9bd77860-9b31-4b7b-96ad-2564017315bf_VDYBN-27WPP-V4HQT-9VMD4-VM%f
%K7H___7_ServerStandard_FE
de32eafd-aaee-4662-9444-c1befb41bde2_N69G4-B89J2-4G8F4-WWYCC-J4%f
%64C___7_ServerStandard_RS5
8c1c5410-9f39-4805-8c9d-63a07706358f_WC2BQ-8NRM3-FDDYY-2BFGV-KH%f
%KQY___7_ServerStandard_RS1
c052f164-cdf6-409a-a0cb-853ba0f0f55a_D764K-2NDRG-47T6Q-P8T8W-YP%f
%6DF___8_ServerDatacenter_Ge
ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4NM-KYWYW-QJJR4-XV3QB-6V%f
%M33___8_ServerDatacenter_FE
34e1ae55-27f8-4950-8877-7a03be5fb181_WMDGN-G9PQG-XVVXX-R3X43-63%f
%DFG___8_ServerDatacenter_RS5
21c56779-b449-4d20-adfc-eece0e1ad74b_CB7KF-BWN84-R7R2Y-793K2-8X%f
%DDG___8_ServerDatacenter_RS1
034d3cbb-5d4b-4245-b3f8-f84571314078_WVDHN-86M7X-466P6-VHXV7-YY%f
%726__50_ServerSolution_RS5
2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCKRF-N37P4-C2D82-9YXRT-4M%f
%63B__50_ServerSolution_RS1
7b4433f4-b1e7-4788-895a-c45378d38253_QN4C6-GBJD2-FB422-GHWJK-GJ%f
%G2R_110_ServerCloudStorage
8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRFBW-QNDC4-6QBHG-CCK3B-2P%f
%R88_120_ServerARM64_RS5
43d9af6e-5e86-4be8-a797-d072a046896c_K9FYF-G6NCK-73M32-XMVPY-F9%f
%DRR_120_ServerARM64_RS4
39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFND9-D3Y9C-J3KKY-6RPVP-2D%f
%PYV_145_ServerDatacenterACor_FE
90c362e5-0da1-4bfd-b53b-b87d309ade43_6NMRW-2C8FM-D24W7-TQWMY-CW%f
%H2D_145_ServerDatacenterACor_RS5
e49c08e7-da82-42f8-bde2-b570fbcae76c_2HXDN-KRXHB-GPYC7-YCKFJ-7F%f
%VDG_145_ServerDatacenterACor_RS3
f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67KN8-4FYJW-2487Q-MQ2J7-4C%f
%4RG_146_ServerStandardACor_FE
73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2KJX-J94YW-TQVFB-DG9YT-72%f
%4CC_146_ServerStandardACor_RS5
61c5ef22-f14f-4553-a824-c4b31e84b100_PTXN8-JFHJM-4WC78-MPCBR-9W%f
%4KR_146_ServerStandardACor_RS3
45b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_FCNV3-279Q9-BQB46-FTKXX-9H%f
%PRH_168_ServerAzureCor_Ge
8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N379-GGTMK-23C6M-XVVTC-CK%f
%FRQ_168_ServerAzureCor_FE
a99cc1f0-7719-4306-9645-294102fbff95_FDNH6-VW9RW-BXPJ7-4XTYG-23%f
%9TB_168_ServerAzureCor_RS5
3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP34G-4NPPG-79JTQ-864T4-R3%f
%MQX_168_ServerAzureCor_RS1
c2e946d1-cfa2-4523-8c87-30bc696ee584_XGN3F-F394H-FD2MY-PP6FD-8M%f
%CRC_407_ServerTurbine_Ge
19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTBV8-9K7Q8-V27C6-M2BTV-KH%f
%MXV_407_ServerTurbine_RS5
) do (
for /f "tokens=1-5 delims=_" %%A in ("%%#") do if %osSKU%==%%C (
if %1==key if not defined key echo "!allapps!" | find /i "%%A" %nul1% && set key=%
%B
)
)
exit /b
::=================================================================================
=======================================================
:: Below code is used to get alternate edition name and key if current edition
doesn't support KMS38 activation
:kms38fallback
set notfoundaltactID=
if %_NoEditionChange%==1 exit /b
for %%# in (
188_IoTEnterprise__________________8ab9bdd1-1f67-4997-82d9-8878520837d9_73111121-
5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2Y%f%T43_Enterprise
206_IoTEnterpriseK_________________80083eae-7031-4394-9e88-4901973d56fe_73111121-
5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2Y%f%T43_Enterprise
191_IoTEnterpriseS-2021____________ed655016-a9e8-4434-95d9-4345352c2552_32d2fab3-
e4a8-42c2-923b-4bf4fd13e6ee_M7XTQ-FN8P6-TTKYV-9D4CC-J4%f%62D_EnterpriseS-2021
205_IoTEnterpriseSK________________d4f9b41f-205c-405e-8e08-3d16e88e02be_59eb965c-
9150-42b7-a0ec-22151b9897c5_KBN8V-HFGQ4-MGXVD-347P6-PD%f%QGT_IoTEnterpriseS
138_ProfessionalSingleLanguage_____a48938aa-62fa-4966-9d44-9f04da3f72f2_2de67392-
b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T8%f%3GX_Professional
139_ProfessionalCountrySpecific____f7af7d09-40e4-419c-a49b-eae366689ebd_2de67392-
b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T8%f%3GX_Professional
139_ProfessionalCountrySpecific-Zn_01eb852c-424d-4060-94b8-c10d799d7364_2de67392-
b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T8%f%3GX_Professional
) do (
for /f "tokens=1-6 delims=_" %%A in ("%%#") do if %osSKU%==%%A (
echo "!allapps!" | find /i "%%C" %nul1% && (
echo "!allapps!" | find /i "%%D" %nul1% && (
set altkey=%%E
set altedition=%%F
) || (
set altedition=%%F
set notfoundaltactID=1
)
)
)
)
exit /b
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:KMSActivation
:: To activate Windows with K-M-S activation, run the script with "/K-Windows"
parameter or change 0 to 1 in below line
set _actwin=0
:: To activate only Project/Visio with K-M-S activation, run the script with "/K-
ProjectVisio" parameter or change 0 to 1 in below line
set _actprojvis=0
:: To activate all Windows/Office with K-M-S activation, run the script with "/K-
WindowsOffice" parameter or change 0 to 1 in below line
set _actwinoff=0
:: To NOT auto-install renewal task with activation, run the script with "/K-
NoRenewalTask" parameter or change 0 to 1 in below line
set _norentsk=0
:: Advanced options:
:: Don't use renewal task option if you are going to use a specific server name
instead of public servers used in the script
:: To specify a server address for activation, run the script with "/K-Server-
YOURKMSSERVERNAME" parameter or add it in below line after = sign
set _server=
:: Script will run in unattended mode if parameters are used OR value is changed
in above lines FOR activation or uninstall.
::=================================================================================
=======================================================
cls
color 07
set KS=K%blank%MS
title Online %KS% 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 "%%A"=="-el" (set _elev=1)
if /i "%%A"=="/K-Windows" (set _actwin=1)
if /i "%%A"=="/K-Office" (set _actoff=1)
if /i "%%A"=="/K-ProjectVisio" (set _actprojvis=1)
if /i "%%A"=="/K-WindowsOffice" (set _actwinoff=1)
if /i "%%A"=="/K-NoEditionChange" (set _NoEditionChange=1)
if /i "%%A"=="/K-NoRenewalTask" (set _norentsk=1)
if /i "%%A"=="/K-Uninstall" (set _uni=1)
echo "%%A" | find /i "/K-Port-" >nul && (set "_port=%%A" & call set "_port=%
%_port:~8%%")
echo "%%A" | find /i "/K-Server-" >nul && (set "_server=%%A" & call set "_server=%
%_server:~10%%")
)
::=================================================================================
=======================================================
:ks_menu
if %_unattended%==0 (
cls
if not defined terminal mode 76, 30
title Online %KS% Activation %masver%
echo:
echo:
echo:
echo:
if exist "%ProgramFiles%\Activation-Renewal\Activation_task.cmd" (
find /i "Ver:2.7" "%ProgramFiles%\Activation-Renewal\Activation_task.cmd" %nul% ||
(
call :dk_color %_Yellow% " Old renewal task found, run activation to
update it."
)
)
echo ______________________________________________________________
echo:
echo [1] Activate - Windows
echo [2] Activate - Office [All]
echo [3] Activate - Office [Project/Visio]
echo [4] Activate - All
echo _______________________________________________
echo:
if %_norentsk%==0 (
echo [5] Renewal Task With Activation [Yes]
) else (
call :dk_color2 %_White% " [5] Renewal Task With Activation "
%_Yellow% "[No]"
)
if %_NoEditionChange%==0 (
echo [6] Change Edition If Needed [Yes]
) else (
call :dk_color2 %_White% " [6] Change Edition If Needed "
%_Yellow% "[No]"
)
echo [7] Uninstall Online %KS%
echo _______________________________________________
echo:
if defined _server (
echo [8] Set %KS% Server/Port [%_server%] [%_port%]
) else (
echo [8] Set %KS% Server/Port
)
echo [9] Download Office
echo [0] %_exitmsg%
echo ______________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,3,4,5,6,7,8,9,0]"
choice /C:1234567890 /N
set _el=!errorlevel!
if !_el!==10 exit /b
if !_el!==9 start %mas%genuine-installation-media & goto :ks_menu
if !_el!==8 goto :ks_ip
if !_el!==7 cls & call :ks_uninstall & cls & goto :ks_menu
if !_el!==6 (if %_NoEditionChange%==0 (set _NoEditionChange=1) else (set
_NoEditionChange=0)) & goto :ks_menu
if !_el!==5 (if %_norentsk%==0 (set _norentsk=1) else (set _norentsk=0)) &
goto :ks_menu
if !_el!==4 cls & setlocal & set "_actwin=1" & set "_actoff=1" & set
"_actprojvis=0" & call :ks_start & endlocal & cls & goto :ks_menu
if !_el!==3 cls & setlocal & set "_actwin=0" & set "_actoff=0" & set
"_actprojvis=1" & call :ks_start & endlocal & cls & goto :ks_menu
if !_el!==2 cls & setlocal & set "_actwin=0" & set "_actoff=1" & set
"_actprojvis=0" & call :ks_start & endlocal & cls & goto :ks_menu
if !_el!==1 cls & setlocal & set "_actwin=1" & set "_actoff=0" & set
"_actprojvis=0" & call :ks_start & endlocal & cls & goto :ks_menu
goto :ks_menu
)
::=================================================================================
=======================================================
:ks_start
cls
if not defined terminal (
mode 115, 32
if exist "%SysPath%\spp\store_test\" mode 135, 32
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=32;$[Link]=300;$[Link]=$W;
$[Link]=$B;}" %nul%
)
title Online %KS% Activation %masver%
echo:
echo Initializing...
call :dk_chkmal
::=================================================================================
=======================================================
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_ckeckwmic
call :dk_checksku
call :dk_product
call :dk_sppissue
::=================================================================================
=======================================================
set error=
cls
echo:
call :dk_showosinfo
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
if defined _int (
echo Checking Internet Connection [Connected%ping_f%]
) else (
set error=1
call :dk_color %Red% "Checking Internet Connection [Not Connected]"
call :dk_color %Blue% "Internet is required for Online %KS% Activation."
)
::=================================================================================
=======================================================
:: Software Protection
:: Windows Management Instrumentation
::=================================================================================
=======================================================
call :_taskclear-cache
call :_tasksetserv
:: Process Windows
:: Check if system is permanently activated or not
echo:
echo Processing Windows...
call :dk_checkperm
if defined _perm (
call :dk_color %Gray% "Checking OS Activation [Windows is already
permanently activated]"
goto :ks_office
)
set _eval=
set _evalserv=
if defined _eval (
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID %nul2% |
find /i "Eval" %nul1% && (
call :dk_color %Red% "Checking Evaluation Edition [Evaluation editions
cannot be activated outside of evaluation period.]"
if defined _evalserv (
call :dk_color %Blue% "Go back to main menu and use [Change Edition] option."
) else (
call :dk_color %Blue% "Use TSforge activation option from the main menu to reset
evaluation period."
set fixes=%fixes% %mas%evaluation_editions
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%evaluation_editions"
)
goto :ks_office
)
)
::=================================================================================
=======================================================
:: Check if GVLK is already installed or not
call :k_channel
:: Detect Key
set key=
set pkey=
set altkey=
set changekey=
set altedition=
set /a UBR=0
if %osSKU%==191 if defined altkey if defined altedition (
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v UBR %nul6%') do if not errorlevel 1 set /a UBR=%%b
if %winbuild% LSS 22598 if !UBR! LSS 2788 (
call :dk_color %Blue% "Windows must be updated to build 19044.2788 or higher for
IotEnterpriseS %KS% activation."
)
)
if defined skunotfound (
call :dk_color %Red% "Required license files not found."
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
if defined sppks (
call :dk_color %Red% "%KS% activation is supported but failed to find the %KS%
key."
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
::=================================================================================
=======================================================
:: Install key
if defined changekey (
call :dk_color %Blue% "[%altedition%] edition product key will be used to enable
%KS% activation."
echo:
)
if defined winsub (
call :dk_color %Blue% "Windows Subscription [SKU ID-%slcSKU%] found. Script will
activate base edition [SKU ID-%regSKU%]."
echo:
)
set _partial=
if not defined key (
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('wmic path %spp% where
"ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' and PartialProductKey<>null
AND LicenseDependsOn is NULL" Get PartialProductKey /value %nul6%') do set
"_partial=%%#"
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
PartialProductKey FROM %spp% WHERE ApplicationID=''55c92734-d682-4d71-983e-
d6ec3f16059f'' AND PartialProductKey IS NOT NULL AND LicenseDependsOn is
NULL').Get()).PartialProductKey | %% {echo ('PartialProductKey='+$_)}" %nul6%') do
set "_partial=%%#"
call echo Checking Installed Product Key [Partial Key - %%_partial%%]
[Volume:GVLK]
)
if defined key (
set generickey=1
call :dk_inskey "[%key%]"
)
::=================================================================================
=======================================================
:ks_office
call :oh_setspp
:: Check ohook install
set ohook=
for %%# in (15 16) do (
for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do (
if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1
)
)
if defined ohook (
echo:
call :dk_color %Gray% "Checking Ohook [Ohook activation is
already installed for Office]"
)
set o14c2r=
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
%nul% reg query %_68%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
%nul% reg query %_86%\14.0\CVH /f Click2run /k && set o14c2r=Office 2010
C2R
if not "%o14c2r%"=="" (
echo:
call :dk_color %Red% "Checking Unsupported Office Install [ %o14c2r%]"
)
::=================================================================================
=======================================================
call :oh_getpath
set o16uwp=
set o16uwp_path=
if "%o16uwp%%o16c2r%%o15c2r%%o16msi%%o15msi%%o14msi%"=="" (
set error=1
echo:
if not "%o14c2r%"=="" (
call :dk_color %Red% "Checking Supported Office Install [Not Found]"
) else (
call :dk_color %Red% "Checking Installed Office [Not Found]"
)
if defined ohub (
echo:
echo You only have the Office Dashboard app installed. You need to install the full
version of Office.
)
call :dk_color %Blue% "Download and install Office from below URL and try again."
set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
goto :ks_activate
)
set multioffice=
if not "%o16uwp%%o16c2r%%o15c2r%%o16msi%%o15msi%%o14msi%"=="1" set multioffice=1
if not "%o14c2r%"=="" set multioffice=1
if defined multioffice (
echo:
call :dk_color %Gray% "Checking Multiple Office Install [Found. Recommended
to install one version only]"
)
::=================================================================================
=======================================================
set oVer=16
set "_oLPath=%o16uwp_path%\Licenses16"
for /f "delims=" %%a in ('%psc% "(Get-AppxPackage -name '[Link]'
| Select-Object -ExpandProperty Dependencies) | Select-Object PackageFullName"
%nul6%') do (set "o16uwpapplist=!o16uwpapplist! %%a")
echo:
echo Processing Office... [UWP ^| %uwpinfo%]
call :ks_process
::=================================================================================
=======================================================
:ks_starto15c2r
call :ks_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=15
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o15c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o15c2r_reg%\Configuration")
if not defined _oArch for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v Platform" %nul6%') do (set "_oArch=%%b")
if not defined _version for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v version" %nul6%') do (set "_version=%%b")
if not defined _prids for /f "skip=2 tokens=2*" %%a in ('"reg query %o15c2r_reg%\
propertyBag /v ProductReleaseId" %nul6%') do (set "_prids=%o15c2r_reg%\
propertyBag /v ProductReleaseId" & set "_config=%o15c2r_reg%\propertyBag")
echo "%o15c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9)
for /f "tokens=%_tok% delims=\" %%a in ('reg query %o15c2r_reg%\ProductReleaseIDs\
Active %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set "_oLPath=%_oRoot%\Licenses"
set "_oIntegrator=%_oRoot%\integration\[Link]"
echo:
echo Processing Office... [C2R ^| %_version% ^| %_oArch%]
::=================================================================================
=======================================================
:ks_starto16c2r
call :ks_reset
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
set oVer=16
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg% /v InstallPath" %nul6%')
do (set "_oRoot=%%b\root")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
Platform" %nul6%') do (set "_oArch=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
VersionToReport" %nul6%') do (set "_version=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
AudienceData" %nul6%') do (set "_AudienceData=^| %%b ")
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
ProductReleaseIds" %nul6%') do (set "_prids=%o16c2r_reg%\Configuration /v
ProductReleaseIds" & set "_config=%o16c2r_reg%\Configuration")
echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8)
for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs"
/s /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do (
echo "!_oIds!" | find /i " %%a " %nul1% || (set "_oIds= !_oIds! %%a ")
)
set _oIds=%_oIds:.16=%
set _o16c2rIds=%_oIds%
set "_oLPath=%_oRoot%\Licenses16"
set "_oIntegrator=%_oRoot%\integration\[Link]"
echo:
echo Processing Office... [C2R ^| %_version% %_AudienceData%^|
%_oArch%]
::=================================================================================
=======================================================
:ks_startmsi
::=================================================================================
=======================================================
echo:
call :oh_clearblock
if "%o16msi%%o15msi%"=="" if not "%o16uwp%%o16c2r%%o15c2r%"=="" if "%keyerror
%"=="0" if %_NoEditionChange%==0 call :oh_uninstkey
call :oh_licrefresh
::=================================================================================
=======================================================
:ks_activate
set "slp=SoftwareLicensingProduct"
set "ospp=OfficeSoftwareProtectionProduct"
echo:
echo Activating Volume Products...
if %_actwin%==1 call :_taskgetids sppwid %slp% windows
if %_actoff%==1 call :_taskgetids sppoid %slp% office
if %_actoff%==1 call :_taskgetids osppid %ospp% office
call :_taskact
if not defined showfix if defined _tserror (call :dk_color %Blue% "%_fixmsg%" & set
showfix=1)
:: Don't create renewal task if Windows/Office volume IDs are not found, even if
script is set to create it by default
:: Don't create renewal task if only Windows volume ID is found and OEM BIOS error
is present on Windows 7, even if script is set to create it by default
set _deltask=
if not %_norentsk%==0 set _deltask=1
if not defined _deltask (
if %_actwin%==0 call :_taskgetids sppwid %slp% windows
if %_actoff%==0 call :_taskgetids sppoid %slp% office
if %_actoff%==0 call :_taskgetids osppid %ospp% office
)
if not defined sppwid if not defined sppoid if not defined osppid (set _deltask=1)
if defined oemerr if not defined sppoid if not defined osppid (set _deltask=1)
:: [Link]
multisession-faq
::=================================================================================
=======================================================
:ks_ip
cls
set _server=
echo:
echo Enter / Paste the %KS% Server address, or just press Enter to return:
echo:
set /p _server=
if not defined _server goto :ks_menu
set "_server=%_server: =%"
echo:
echo Enter / Paste the %KS% Port address, or just press Enter to use default:
echo:
set /p _port=
if not defined _port goto :ks_menu
set "_port=%_port: =%"
goto :ks_menu
::=================================================================================
=======================================================
:ks_reset
set key=
set _oRoot=
set _oArch=
set _oIds=
set _oLPath=
set _actid=
set _prod=
set _lic=
set _arr=
set _prids=
set _config=
set _version=
set _License=
set _oMSI=
exit /b
::=================================================================================
=======================================================
:ks_osppready
::=================================================================================
=======================================================
:oh_setspp
set isOspp=
if %winbuild% GEQ 9200 (
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
) else (
set isOspp=1
set spp=OfficeSoftwareProtectionProduct
set sps=OfficeSoftwareProtectionService
)
if "%1"=="14" (
set isOspp=1
set spp=OfficeSoftwareProtectionProduct
set sps=OfficeSoftwareProtectionService
)
exit /b
::=================================================================================
=======================================================
:ks_process
set skipprocess=
if %_NoEditionChange%==1 if not defined _oMSI (
set foundprod=
call :ksdata chkprod %%#
if not defined foundprod (
set skipprocess=1
call :dk_color %Gray% "Skipping Because NoEditionChange Mode [%%#]"
)
)
if not "!key!"=="" (
echo "!allapps!" | find /i "!_actid!" %nul1% || call :oh_installlic
set generickey=1
call :dk_inskey "[!key!] [!_prod!]"
) else (
if not defined _oMSI (
set error=1
call :dk_color %Red% "Checking Product In Script [Office %oVer%.0 !
_prod! not found in script]"
call :dk_color %Blue% "Make sure you are using Latest MAS script."
) else (
call :dk_color %Red% "Checking Product In Script [!_prod! MSI Retail
is not supported]"
call :dk_color %Blue% "Use Ohook option to activate it. To activate with %KS%, you
need to install Volume version of Office."
)
set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
)
)
)
exit /b
::=================================================================================
=======================================================
:ks_processmsi
call :ks_reset
set _oMSI=1
if "%1"=="14" (
call :dk_actids 59a52881-a989-479d-af46-f275c6370663
) else (
call :dk_actids 0ff1ce15-a989-479d-af46-f275c6370663
)
set oVer=%1
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\InstallRoot /v Path"
%nul6%') do (set "_oRoot=%%b")
for /f "skip=2 tokens=2*" %%a in ('"reg query %2\Common\ProductVersion /v
LastProduct" %nul6%') do (set "_version=%%b")
if "%_oRoot:~-1%"=="\" set "_oRoot=%_oRoot:~0,-1%"
call :msiofficedata %2
echo:
echo Processing Office... [MSI ^| %_version% ^| %_oArch%]
call :ks_process
exit /b
::=================================================================================
=======================================================
:ks_uninstall
cls
if not defined terminal mode 91, 30
title Online %KS% Complete Uninstall %masver%
set
"uline=____________________________________________________________________________
______________"
set "_C16R="
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\
ClickToRun /v InstallPath" 2^>nul') do if exist "%%b\root\Licenses16\ProPlus*.xrm-
ms" set "_C16R=1"
for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\
ClickToRun /v InstallPath /reg:32" 2^>nul') do if exist "%%b\root\Licenses16\
ProPlus*.xrm-ms" set "_C16R=1"
if %winbuild% GEQ 9200 if defined _C16R (
echo:
call :dk_color %Gray% "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 %uline%
)
echo:
set error_=
call :_taskclear-cache
call :ks_clearstuff
if defined error_ (
if "%error_%"=="1" (
echo %uline%
%eline%
echo Try Again / Restart the System
echo %uline%
)
) else (
echo %uline%
echo:
call :dk_color %Green% "Online %KS% has been successfully uninstalled."
echo:
call :dk_color %Gray% "If you want to reset the activation status,"
call :dk_color %Blue% "%_fixmsg%"
echo:
echo %uline%
)
goto :dk_done
:ks_clearstuff
If exist "%ProgramFiles%\Activation-Renewal\" (
echo Deleting [Folder] %ProgramFiles%\Activation-Renewal\
rmdir /s /q "%ProgramFiles%\Activation-Renewal\" %nul%
)
::=================================================================================
=======================================================
:_extracttask:
@echo off
::============================================================================
::
:: Homepage: mass()grave(dot)dev
:: Email: [Link]@[Link]
::
::============================================================================
if not "%~1"=="Task" (
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
)
setlocal EnableExtensions
setlocal DisableDelayedExpansion
set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
set "SysPath=%SystemRoot%\System32"
set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot
%\System32\WindowsPowerShell\v1.0\"
if exist "%SystemRoot%\Sysnative\[Link]" (
set "SysPath=%SystemRoot%\Sysnative"
set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;
%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%"
)
set "ComSpec=%SysPath%\[Link]"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\
WindowsPowerShell\v1.0\Modules"
::=================================================================================
=======================================================
set _tserror=
set winbuild=1
set "nul=>nul 2>&1"
for /f "tokens=2 delims=[]" %%G in ('ver') do for /f "tokens=2,3,4 delims=. " %%H
in ("%%~G") do set "winbuild=%%J"
set psc=[Link] -nop -c
set run_once=
set t_name=Renewal Task
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
tasks" /f Path /s | find /i "\Activation-Run_Once" >nul && (
set run_once=1
set t_name=Run Once Task
)
set _wmic=0
for %%# in ([Link]) do @if not "%%~$PATH:#"=="" (
cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" 2>nul |
find /i "computersystem" 1>nul && set _wmic=1
)
if %winbuild% LSS 9200 set _wmic=1
setlocal EnableDelayedExpansion
if exist "%ProgramFiles%\Activation-Renewal\" call :_taskstart>>"%ProgramFiles%\
Activation-Renewal\[Link]"
exit
::=================================================================================
=======================================================
:_taskstart
echo:
echo %date%, %time%
set /a loop=1
set /a max_loop=4
call :_tasksetserv
:_intrepeat
:: Check Internet connection. Works even if ICMP echo is disabled.
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
:_taskIntConnected
::=================================================================================
=======================================================
call :_taskclear-cache
set applist=
net start %_slser% /y %nul%
if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %slp%
where (ApplicationID='%_wApp%') get ID /VALUE" 2^>nul')"
if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT ID FROM %slp% WHERE ApplicationID=''%_wApp%''').Get()).ID
^| %% {echo ('ID='+$_)}" 2^>nul')"
%chkapp% do (if defined applist (call set "applist=!applist! %%a") else (call set
"applist=%%a"))
::=================================================================================
=======================================================
::=================================================================================
=======================================================
echo:
echo Renewing K-M-S activation for all installed Volume products
::=================================================================================
=======================================================
call :_taskact
:_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 ______________________________________________________________________
::=================================================================================
=======================================================
:_act
set prodname=
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('"wmic path !_path! where ID='!
_actid!' get LicenseFamily /VALUE" 2^>nul') do (call set "prodname=%%#")
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
LicenseFamily FROM !_path! WHERE ID=''!_actid!''').Get()).LicenseFamily | %% {echo
('LicenseFamily='+$_)}" 2^>nul') do (call set "prodname=%%#")
for /f "tokens=1 delims=-_" %%a in ("%prodname%") do set "prodname=%%a"
set _taskskip=
if "%_actprojvis%"=="1" (
echo: %prodname% | find /i "Office" %nul% && (
echo: %prodname% | findstr /i "Project Visio" %nul% || (set _taskskip=1& exit /b)
)
)
set errorcode=12345
set /a act_attempt=0
:_act2
if not "%act_ok%"=="1" (
if not defined _server call :_taskgetserv
call :_taskregserv
)
if %_wmic% EQU 1 wmic path !_path! where ID='!_actid!' call Activate %nul%
if %_wmic% EQU 0 %psc% "try {$null=(([WMISEARCHER]'SELECT ID FROM !_path! where
ID=''!_actid!''').Get()).Activate(); exit 0} catch { exit
$_.[Link] }"
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
if not defined _server goto _act2
)
exit /b
::=================================================================================
=======================================================
:_actinfo
set gpr=0
set gpr2=0
call :_taskgetgrace
set /a "gpr2=(%gpr%+1440-1)/1440"
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 :_taskchkEnterpriseG _actpass
if %gpr% EQU 259200 set _actpass=0
::=================================================================================
=======================================================
:_taskact
set gpr=0
set _kms38=0
if defined sppwid if %winbuild% GEQ 14393 (
set _path=%slp%
set _actid=%sppwid%
call :_taskgetgrace
)
:: Set specific K-M-S host to Local Host so that global K-M-S IP can not replace
KMS38 activation but can be used with Office and other Windows Editions.
if %_kms38% EQU 1 (
%nul% reg add "HKLM\%SPPk%\%_wApp%\%sppwid%" /f /v KeyManagementServiceName /t
REG_SZ /d "[Link]"
%nul% reg add "HKLM\%SPPk%\%_wApp%\%sppwid%" /f /v KeyManagementServicePort /t
REG_SZ /d "1688"
)
echo:
if defined sppwid (
set _path=%slp%
set _actid=%sppwid%
call :_act act_win
call :_actinfo act_win
) else (
if defined t_name echo Checking: Volume version of Windows is not installed
)
if defined sppoid (
set _path=%slp%
for %%# in (%sppoid%) do (
set _actid=%%#
call :_act
if not defined _taskskip call :_actinfo
)
)
if defined osppid (
set _path=%ospp%
for %%# in (%osppid%) do (
set _actid=%%#
call :_act
if not defined _taskskip call :_actinfo
)
)
exit /b
::=================================================================================
=======================================================
:_taskgetids
set %1=
if %_wmic% EQU 1 set "chkapp=for /f "tokens=2 delims==" %%a in ('"wmic path %2
where (Name like '%%%3%%' and Description like '%%KMSCLIENT%%' and
PartialProductKey is not NULL AND LicenseDependsOn is NULL) get ID /VALUE"
2^>nul')"
if %_wmic% EQU 0 set "chkapp=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT ID FROM %2 WHERE Name like ''%%%3%%'' and Description like
''%%KMSCLIENT%%'' and PartialProductKey is not NULL AND LicenseDependsOn is
NULL').Get()).ID ^| %% {echo ('ID='+$_)}" 2^>nul')"
%chkapp% do (if defined %1 (call set "%1=!%1! %%a") else (call set "%1=%%a"))
exit /b
:_taskgetgrace
set gpr=0
if %_wmic% EQU 1 for /f "tokens=2 delims==" %%# in ('"wmic path !_path! where ID='!
_actid!' get GracePeriodRemaining /VALUE" 2^>nul') do call set "gpr=%%#"
if %_wmic% EQU 0 for /f "tokens=2 delims==" %%# in ('%psc% "(([WMISEARCHER]'SELECT
GracePeriodRemaining FROM !_path! where ID=''!
_actid!''').Get()).GracePeriodRemaining | %% {echo ('GracePeriodRemaining='+$_)}"
2^>nul') do call set "gpr=%%#"
exit /b
:_taskchkEnterpriseG
::=================================================================================
=======================================================
:_taskclear-cache
set w=
for %%# in (SppE%w%[Link] [Link] [Link]) do (
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ima%w%ge File Execu%w
%tion Options\%%#" /f %nul%
)
set "OPPk=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
set "slp=SoftwareLicensingProduct"
set "ospp=OfficeSoftwareProtectionProduct"
set "_wApp=55c92734-d682-4d71-983e-d6ec3f16059f"
set "_oApp=0ff1ce15-a989-479d-af46-f275c6370663"
set "_oA14=59a52881-a989-479d-af46-f275c6370663"
exit /b
::=================================================================================
=======================================================
:_taskregserv
::=================================================================================
=======================================================
:_tasksetserv
set srvlist=
set -=
:_taskgetserv
:: Get IPv4 address of K-M-S server to use for the activation, works even if ICMP
echo is disabled.
:: Microsoft and Antivirus's may flag the issue if public K-M-S server host name
is directly used for the activation.
set /a server_num+=1
(for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %KMS_IP% 2^>nul') do set
"KMS_IP=%%a"
if "%KMS_IP%"=="!KMS_IP!" for /f "delims=[] tokens=2" %%# in ('pathping -4 -h 1 -n
-p 1 -q 1 -w 1 %KMS_IP% 2^>nul') do set "KMS_IP=%%#"
if not "%KMS_IP%"=="!KMS_IP!" exit /b
goto :_taskgetserv
)
::Ver:2.7
:_extracttask:
::=================================================================================
=======================================================
:ks_renewal
set error_=
set "_dest=%ProgramFiles%\Activation-Renewal"
set "key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\
tasks"
if defined error_ (
set error=1
call :dk_color %Red% "Failed to remove previous Renewal Task. Restart system / Try
again."
exit /b
)
set nil=
if %winbuild% LSS 7600 (set _vista=_vista)
if exist "%_temp%\.*" rmdir /s /q "%_temp%\" %nul%
md "%_temp%\" %nul%
call :ks_RenExport renewal%_vista% "%_temp%\[Link]" Unicode
if not defined _int (call :ks_RenExport run_once%_vista% "%_temp%\Run_Once.xml"
Unicode)
s%nil%cht%nil%asks /cre%nil%ate /tn "Activation-Renewal" /ru "SYS%nil%TEM" /xml
"%_temp%\[Link]" %nul%
if not defined _int (s%nil%cht%nil%asks /cre%nil%ate /tn "Activation-Run_Once" /ru
"SYS%nil%TEM" /xml "%_temp%\Run_Once.xml" %nul%)
if exist "%_temp%\.*" rmdir /s /q "%_temp%\" %nul%
call :ks_createInfo.txt
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -
split \":_extracttask\:.*`r`n\"; [[Link]]::WriteAllText('%_dest%\
Activation_task.cmd', '@::%randguid%' + [Environment]::NewLine + $f[1].Trim(),
[[Link]]::ASCII)"
::=================================================================================
=======================================================
if defined error_ (
schtasks /delete /tn Activation-Renewal /f %nul%
schtasks /delete /tn Activation-Run_Once /f %nul%
rmdir /s /q "%_dest%\" %nul%
set error=1
call :dk_color %Red% "Failed to install Renewal Task. Restart system / Try again."
exit /b
)
:: Extract the text from batch script without character and file encoding issue
:ks_RenExport
::=================================================================================
=======================================================
:ks_createInfo.txt
(
echo The use of this script is to renew your Windows/Office license using online
K-M-S.
echo:
echo If renewal/activation Scheduled tasks were created then following would
exist,
echo:
echo - Scheduled tasks
echo Activation-Renewal [Renewal / Weekly]
echo Activation-Run_Once [Activation Task - deletes itself once activated]
echo The scheduled tasks runs only if the system is connected to the Internet.
echo:
echo - Files
echo C:\Program Files\Activation-Renewal\Activation_task.cmd
echo C:\Program Files\Activation-Renewal\[Link]
echo C:\Program Files\Activation-Renewal\[Link]
echo
___________________________________________________________________________________
___________
echo:
echo This Script is a part of MAS project.
echo:
echo Homepage: mass%w%grave%w%.dev
echo Email: [Link]@[Link]
)>"%_dest%\[Link]"
exit /b
::=================================================================================
=======================================================
:renewal:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="[Link]
<RegistrationInfo>
<Source>Microsoft Corporation</Source>
<Date>1999-01-01T[Link].34375</Date>
<Author>WindowsAddict</Author>
<Version>1.0</Version>
<Description>Online K-M-S Activation-Renewal - Weekly Task</Description>
<URI>\Activation-Renewal</URI>
<SecurityDescriptor>D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;FRFX;;;LS)(A;;FRFW;;;S-1-5-
80-123231216-2592883651-3715271367-3753151631-4175906628)(A;;FR;;;S-1-5-4)</
SecurityDescriptor>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<StartBoundary>1999-01-01T[Link]</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByWeek>
<DaysOfWeek>
<Sunday />
</DaysOfWeek>
<WeeksInterval>1</WeeksInterval>
</ScheduleByWeek>
</CalendarTrigger>
</Triggers>
<Principals>
<Principal id="LocalSystem">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT2M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="LocalSystem">
<Exec>
<Command>%ProgramFiles%\Activation-Renewal\Activation_task.cmd</Command>
<Arguments>Task</Arguments>
</Exec>
</Actions>
</Task>
:renewal:
:run_once:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="[Link]
<RegistrationInfo>
<Source>Microsoft Corporation</Source>
<Date>1999-01-01T[Link].34375</Date>
<Author>WindowsAddict</Author>
<Version>1.0</Version>
<Description>Online K-M-S Activation Run Once - Run and Delete itself on first
Internet Contact</Description>
<URI>\Activation-Run_Once</URI>
<SecurityDescriptor>D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;FRFX;;;LS)(A;;FRFW;;;S-1-5-
80-123231216-2592883651-3715271367-3753151631-4175906628)(A;;FR;;;S-1-5-4)</
SecurityDescriptor>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="LocalSystem">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT2M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="LocalSystem">
<Exec>
<Command>%ProgramFiles%\Activation-Renewal\Activation_task.cmd</Command>
<Arguments>Task</Arguments>
</Exec>
</Actions>
</Task>
:run_once:
:renewal_vista:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="[Link]
<RegistrationInfo>
<Date>1999-01-01T[Link].34375</Date>
<Author>WindowsAddict</Author>
<Description>Online K-M-S Activation-Renewal - Weekly Task</Description>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<StartBoundary>1999-01-01T[Link].34375</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByWeek>
<DaysOfWeek>
<Sunday />
</DaysOfWeek>
<WeeksInterval>1</WeeksInterval>
</ScheduleByWeek>
</CalendarTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<IdleSettings>
<Duration>PT10M</Duration>
<WaitTimeout>PT1H</WaitTimeout>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
<NetworkSettings />
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT5M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>%ProgramFiles%\Activation-Renewal\Activation_task.cmd</Command>
<Arguments>Task</Arguments>
</Exec>
</Actions>
</Task>
:renewal_vista:
:run_once_vista:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="[Link]
<RegistrationInfo>
<Date>1999-01-01T[Link].34375</Date>
<Author>WindowsAddict</Author>
<Description>Online K-M-S Activation Run Once - Run and Delete itself on first
Internet Contact</Description>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<IdleSettings>
<Duration>PT10M</Duration>
<WaitTimeout>PT1H</WaitTimeout>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
<NetworkSettings />
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT5M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>%ProgramFiles%\Activation-Renewal\Activation_task.cmd</Command>
<Arguments>Task</Arguments>
</Exec>
</Actions>
</Task>
:run_once_vista:
::=================================================================================
=======================================================
:msiofficedata
for %%# in (
14_4d463c2c-0505-4626-8cdb-a4da82e2d8ed_0015_AccessR
14_745fb377-0a59-4ca9-b9a9-c359557a2c4e_001C_AccessRuntimeR
14_95ab3ec8-4106-4f9d-b632-03c019d1d23f_0015_AccessVL
14_4eaff0d0-c6cb-4187-94f3-c7656d49a0aa_0016_ExcelR_[HSExcelR]
14_71dc86ff-f056-40d0-8ffb-9592705c9b76_0016_ExcelVL
14_7004b7f0-6407-4f45-8eac-966e5f868bde_00BA_GrooveR
14_fdad0dfa-417d-4b4f-93e4-64ea8867b7fd_00BA_GrooveVL
14_7b7d1f17-fdcb-4820-9789-9bec6e377821_0013_HomeBusinessR_[HomeBusinessDemoR]
14_19316117-30a8-4773-8fd9-7f7231f4e060_011E_HomeBusinessSubR
14_09e2d37e-474b-4121-8626-58ad9be5776f_002F_HomeStudentR_[HomeStudentDemoR]
14_ef1da464-01c8-43a6-91af-e4e5713744f9_0044_InfoPathR
14_85e22450-b741-430c-a172-a37962c938af_0044_InfoPathVL
14_14f5946a-debc-4716-babc-7e2c240fec08_000F_MondoR
14_533b656a-4425-480b-8e30-1a2358898350_000F_MondoVL
14_c1ceda8b-c578-4d5d-a4aa-23626be4e234_003D_ProfessionalR_[OEM-
SingleImage]Exception
14_3f7aa693-9a7e-44fc-9309-bb3d8e604925_00A1_OneNoteR_[HSOneNoteR]
14_6860b31f-6a67-48b8-84b9-e312b3485c4b_00A1_OneNoteVL
14_fbf4ac36-31c8-4340-8666-79873129cf40_001A_OutlookR
14_a9aeabd8-63b8-4079-a28e-f531807fd6b8_001A_OutlookVL
14_acb51361-c0db-4895-9497-
1831c41f31a6_0033_PersonalR_[PersonalDemoR,PersonalPrepaidR]
14_133c8359-4e93-4241-8118-30bb18737ea0_0018_PowerPointR_[HSPowerPointR]
14_38252940-718c-4aa6-81a4-135398e53851_0018_PowerPointVL
14_8b559c37-0117-413e-921b-
b853aeb6e210_0014_ProfessionalR_[ProfessionalAcadR,ProfessionalDemoR]
14_725714d7-d58f-4d12-9fa8-35873c6f7215_003B_ProjectProR_[ProjectProMSDNR]
14_4d06f72e-fd50-4bc2-a24b-d448d7f17ef2_011F_ProjectProSubR
14_1cf57a59-c532-4e56-9a7d-ffa2fe94b474_003B_ProjectProVL
14_688f6589-2bd9-424e-a152-b13f36aa6de1_003A_ProjectStdR
14_11b39439-6b93-4642-9570-f2eb81be2238_003A_ProjectStdVL
14_71af7e84-93e6-4363-9b69-
699e04e74071_0011_ProPlusR_[ProPlusAcadR,ProPlusMSDNR,Sub4R]
14_e98ef0c0-71c4-42ce-8305-287d8721e26c_011D_ProPlusSubR
14_fdf3ecb9-b56f-43b2-a9b8-1b48b6bae1a7_0011_ProPlusVL_[ProPlusAcadVL]
14_98677603-a668-4fa4-9980-3f1f05f78f69_0019_PublisherR
14_3d014759-b128-4466-9018-e80f6320d9d0_0019_PublisherVL
14_dbe3aee0-5183-4ff7-8142-66050173cb01_008B_SmallBusBasicsR_[SmallBusBasicsMSDNR]
14_8090771e-d41a-4482-929e-de87f1f47e46_008B_SmallBusBasicsVL
14_b78df69e-0966-40b1-ae85-30a5134dedd0_0017_SPDR
14_d3422cfb-8d8b-4ead-99f9-eab0ccd990d7_0012_StandardR
14_1f76e346-e0be-49bc-9954-70ec53a4fcfe_0012_StandardVL_[StandardAcadVL]
14_2745e581-565a-4670-ae90-6bf7c57ffe43_0066_StarterR
14_66cad568-c2dc-459d-93ec-2f3cb967ee34_0057_VisioSIR_Prem[Pro,Std]Exception
14_36756cb8-8e69-4d11-9522-68899507cd6a_0057_VisioSIVL_Prem[Pro,Std]Exception
14_db3bbc9c-ce52-41d1-a46f-1a1d68059119_001B_WordR_[HSWordR]
14_98d4050e-9c98-49bf-9be1-85e12eb3ab13_001B_WordVL
:: Office 2013
15_ab4d047b-97cf-4126-a69f-34df08e2f254_0015_AccessRetail
15_259de5be-492b-44b3-9d78-9645f848f7b0_001C_AccessRuntimeRetail
15_4374022d-56b8-48c1-9bb7-d8f2fc726343_0015_AccessVolume
15_1b1d9bd5-12ea-4063-964c-16e7e87d6e08_0016_ExcelRetail
15_ac1ae7fd-b949-4e04-a330-849bc40638cf_0016_ExcelVolume
15_cfaf5356-49e3-48a8-ab3c-e729ab791250_00BA_GrooveRetail
15_4825ac28-ce41-45a7-9e6e-1fed74057601_00BA_GrooveVolume
15_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
15_cd256150-a898-441f-aac0-9f8f33390e45_0013_HomeBusinessRetail
15_1fdfb4e4-f9c9-41c4-b055-c80daf00697d_00CE_HomeStudentARMRetail
15_ebef9f05-5273-404a-9253-c5e252f50555_00DA_HomeStudentPlusARMRetail
15_98685d21-78bd-4c62-bc4f-653344a63035_002F_HomeStudentRetail
15_44984381-406e-4a35-b1c3-e54f499556e2_0044_InfoPathRetail
15_9e016989-4007-42a6-8051-64eb97110cf2_0044_InfoPathVolume
15_9103f3ce-1084-447a-827e-d6097f68c895_00EA_LyncAcademicRetail
15_ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_012D_LyncEntryRetail
15_fada6658-bfc6-4c4e-825a-59a89822cda8_012C_LyncRetail
15_e1264e10-afaf-4439-a98b-256df8bb156f_012C_LyncVolume
15_3169c8df-f659-4f95-9cc6-3115e6596e83_000F_MondoRetail
15_f33485a0-310b-4b72-9a0e-b1d605510dbd_000F_MondoVolume
15_3391e125-f6e4-4b1e-899c-a25e6092d40d_00A1_OneNoteFreeRetail
15_8b524bcc-67ea-4876-a509-45e46f6347e8_00A1_OneNoteRetail
15_b067e965-7521-455b-b9f7-c740204578a2_00A1_OneNoteVolume
15_12004b48-e6c8-4ffa-ad5a-ac8d4467765a_001A_OutlookRetail
15_8d577c50-ae5e-47fd-a240-24986f73d503_001A_OutlookVolume
15_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
15_17e9df2d-ed91-4382-904b-4fed6a12caf0_0033_PersonalRetail
15_31743b82-bfbc-44b6-aa12-85d42e644d5b_0018_PowerPointRetail
15_e40dcb44-1d5c-4085-8e8f-943f33c4f004_0018_PowerPointVolume
15_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
15_44bc70e2-fb83-4b09-9082-e5557e0c2ede_0014_ProfessionalRetail
15_f2435de4-5fc0-4e5b-ac97-34f515ec5ee7_003B_ProjectProRetail
15_ed34dc89-1c27-4ecd-8b2f-63d0f4cedc32_003B_ProjectProVolume
15_5517e6a2-739b-4822-946f-7f0f1c5934b1_003A_ProjectStdRetail
15_2b9e4a37-6230-4b42-bee2-e25ce86c8c7a_003A_ProjectStdVolume
15_064383fa-1538-491c-859b-0ecab169a0ab_0011_ProPlusRetail
15_2b88c4f2-ea8f-43cd-805e-4d41346e18a7_0011_ProPlusVolume
15_c3a0814a-70a4-471f-af37-2313a6331111_0019_PublisherRetail
15_38ea49f6-ad1d-43f1-9888-99a35d7c9409_0019_PublisherVolume
15_ba3e3833-6a7e-445a-89d0-7802a9a68588_0017_SPDRetail
15_32255c0a-16b4-4ce2-b388-8a4267e219eb_0012_StandardRetail
15_a24cca51-3d54-4c41-8a76-4031f5338cb2_0012_StandardVolume
15_15d12ad4-622d-4257-976c-5eb3282fb93d_0051_VisioProRetail
15_3e4294dd-a765-49bc-8dbd-cf8b62a4bd3d_0051_VisioProVolume
15_dae597ce-5823-4c77-9580-7268b93a4b23_0053_VisioStdRetail
15_44a1f6ff-0876-4edb-9169-dbb43101ee89_0053_VisioStdVolume
15_191509f2-6977-456f-ab30-cf0492b1e93a_001B_WordRetail
15_9cedef15-be37-4ff0-a08a-13a045540641_001B_WordVolume
:: Office 365 - 15.0 version
15_befee371-a2f5-4648-85db-a2c55fdf324c_00E9_O365BusinessRetail
15_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
15_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
15_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
:: Office 365 - 16.0 version
16_6337137e-7c07-4197-8986-bece6a76fc33_00E9_O365BusinessRetail
16_2f5c71b4-5b7a-4005-bb68-f9fac26f2ea3_00D6_O365EduCloudRetail
16_537ea5b5-7d50-4876-bd38-a53a77caca32_00D6_O365HomePremRetail
16_149dbce7-a48e-44db-8364-a53386cd4580_00D4_O365ProPlusRetail
16_bacd4614-5bef-4a5e-bafc-de4c788037a2_00D5_O365SmallBusPremRetail
:: Office 2016
16_bfa358b0-98f1-4125-842e-585fa13032e6_0015_AccessRetail
16_9d9faf9e-d345-4b49-afce-68cb0a539c7c_001C_AccessRuntimeRetail
16_3b2fa33f-cd5a-43a5-bd95-f49f3f546b0b_0015_AccessVolume
16_424d52ff-7ad2-4bc7-8ac6-748d767b455d_0016_ExcelRetail
16_685062a7-6024-42e7-8c5f-6bb9e63e697f_0016_ExcelVolume
16_c02fb62e-1cd5-4e18-ba25-e0480467ffaa_00E7_HomeBusinessPipcRetail
16_86834d00-7896-4a38-8fae-32f20b86fa2b_0013_HomeBusinessRetail
16_090896a0-ea98-48ac-b545-ba5da0eb0c9c_00CE_HomeStudentARMRetail
16_6bbe2077-01a4-4269-bf15-5bf4d8efc0b2_00DA_HomeStudentPlusARMRetail
16_c28acdb8-d8b3-4199-baa4-024d09e97c99_002F_HomeStudentRetail
16_e2127526-b60c-43e0-bed1-3c9dc3d5a468_002F_HomeStudentVNextRetail
16_b21367df-9545-4f02-9f24-240691da0e58_000F_MondoRetail
16_2cd0ea7e-749f-4288-a05e-567c573b2a6c_000F_MondoVolume
16_436366de-5579-4f24-96db-3893e4400030_00A3_OneNoteFreeRetail
16_83ac4dd9-1b93-40ed-aa55-ede25bb6af38_00A1_OneNoteRetail
16_23b672da-a456-4860-a8f3-e062a501d7e8_00A1_OneNoteVolume
16_5a670809-0983-4c2d-8aad-d3c2c5b7d5d1_001A_OutlookRetail
16_50059979-ac6f-4458-9e79-710bcb41721a_001A_OutlookVolume
16_5aab8561-1686-43f7-9ff5-2c861da58d17_00E6_PersonalPipcRetail
16_a9f645a1-0d6a-4978-926a-abcb363b72a6_0033_PersonalRetail
16_f32d1284-0792-49da-9ac6-deb2bc9c80b6_0018_PowerPointRetail
16_9b4060c9-a7f5-4a66-b732-faf248b7240f_0018_PowerPointVolume
16_4e26cac1-e15a-4467-9069-cb47b67fe191_00E8_ProfessionalPipcRetail
16_d64edc00-7453-4301-8428-197343fafb16_0014_ProfessionalRetail
16_0f42f316-00b1-48c5-ada4-2f52b5720ad0_003B_ProjectProRetail
16_82f502b5-b0b0-4349-bd2c-c560df85b248_003B_ProjectProVolume
16_16728639-a9ab-4994-b6d8-f81051e69833_003B_ProjectProXVolume
16_e9f0b3fc-962f-4944-ad06-05c10b6bcd5e_003A_ProjectStdRetail
16_82e6b314-2a62-4e51-9220-61358dd230e6_003A_ProjectStdVolume
16_431058f0-c059-44c5-b9e7-ed2dd46b6789_003A_ProjectStdXVolume
16_de52bd50-9564-4adc-8fcb-a345c17f84f9_0011_ProPlusRetail
16_c47456e3-265d-47b6-8ca0-c30abbd0ca36_0011_ProPlusVolume
16_6e0c1d99-c72e-4968-bcb7-ab79e03e201e_0019_PublisherRetail
16_fcc1757b-5d5f-486a-87cf-c4d6dedb6032_0019_PublisherVolume
16_971cd368-f2e1-49c1-aedd-330909ce18b6_012D_SkypeforBusinessEntryRetail
16_418d2b9f-b491-4d7f-84f1-49e27cc66597_012C_SkypeforBusinessRetail
16_03ca3b9a-0869-4749-8988-3cbc9d9f51bb_012C_SkypeforBusinessVolume
16_9103f3ce-1084-447a-827e-d6097f68c895_012C_SkypeServiceBypassRetail
16_4a31c291-3a12-4c64-b8ab-cd79212be45e_0012_StandardRetail
16_0ed94aac-2234-4309-ba29-74bdbb887083_0012_StandardVolume
16_2dfe2075-2d04-4e43-816a-eb60bbb77574_0051_VisioProRetail
16_295b2c03-4b1c-4221-b292-1411f468bd02_0051_VisioProVolume
16_0594dc12-8444-4912-936a-747ca742dbdb_0051_VisioProXVolume
16_c76dbcbc-d71b-4f45-b5b3-b7494cb4e23e_0053_VisioStdRetail
16_44151c2d-c398-471f-946f-7660542e3369_0053_VisioStdVolume
16_1d1c6879-39a3-47a5-9a6d-aceefa6a289d_0053_VisioStdXVolume
16_cacaa1bf-da53-4c3b-9700-11738ef1c2a5_001B_WordRetail
16_c3000759-551f-4f4a-bcac-a4b42cbf1de2_001B_WordVolume
) do (
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
if "%oVer%"=="%%A" (
reg query "%1\Registration\{%%B}" /v ProductCode %nul2% | find /i "-%%C-" %nul% &&
(
reg query "%1\Common\InstalledPackages" %nul2% | find /i "-%%C-" %nul% && (
if defined _oIds (set _oIds=!_oIds! %%D) else (set _oIds=%%D)
if /i 003D==%%C set SingleImage=1
)
)
)
)
)
exit /b
::=================================================================================
=======================================================
set f=
for %%# in (
:: Windows 10/11
73111121-5638-40f6-bc11-f1d7b0d64300_NPPR9-FWDCX-D2C8J-H872K-2Y%f
%T43___4_Enterprise
e272e3e2-732f-4c65-a8f0-484747d0d947_DPH2V-TTNVB-4X9Q3-TJR4H-KH%f
%JW4__27_EnterpriseN
2de67392-b7a7-462a-b1ca-108dd189f588_W269N-WFGWX-YVC9B-4J6C9-T8%f
%3GX__48_Professional
a80b5abf-76ad-428b-b05d-a47d2dffeebf_MH37W-N47XK-V7XM9-C7227-GC%f
%QG9__49_ProfessionalN
7b9e1751-a8da-4f75-9560-5fadfe3d8e38_3KHY7-WNT83-DGQKR-F7HPR-84%f%4BM__98_CoreN
a9107544-f4a0-4053-a96a-1479abdef912_PVMJN-6DFY6-9CCP6-7BKTT-D3%f
%WVR__99_CoreCountrySpecific
cd918a57-a41b-4c82-8dce-1a538e221a83_7HNRX-D7KGG-3K4RQ-4WPJ4-YT%f
%DFH_100_CoreSingleLanguage
58e97c99-f377-4ef1-81d5-4ad5522b5fd8_TX9XD-98N7V-6WMQ6-BX7FG-H8%f%Q99_101_Core
e0c42288-980c-4788-a014-c080d2e1926e_NW6C2-QMPVW-D7KKK-3GKT6-VC%f%FB2_121_Education
3c102355-d027-42c6-ad23-2e7ef8a02585_2WH4N-8QGBV-H22JP-CT43Q-MD%f
%WWJ_122_EducationN
32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee_M7XTQ-FN8P6-TTKYV-9D4CC-J4%f
%62D_125_EnterpriseS_RS5,VB,Ge
2d5a5a60-3040-48bf-beb0-fcd770c20ce0_DCPHK-NFMTC-H88MJ-PFHPY-QJ%f
%4BJ_125_EnterpriseS_RS1
7b51a46c-0c04-4e8f-9af4-8496cca90d5e_WNMTR-4C88C-JK8YV-HQ7T2-76%f
%DF9_125_EnterpriseS_TH1
7103a333-b8c8-49cc-93ce-d37c09687f92_92NFX-8DJQP-P6BBQ-THF9C-7C%f
%G2H_126_EnterpriseSN_RS5,VB,Ge
9f776d83-7156-45b2-8a5c-359b9c9f22a3_QFFDN-GRT3P-VKWWX-X7T3R-8B%f
%639_126_EnterpriseSN_RS1
87b838b7-41b6-4590-8318-5797951d8529_2F77B-TNFGY-69QQF-B8YKP-D6%f
%9TJ_126_EnterpriseSN_TH1
82bbc092-bc50-4e16-8e18-b74fc486aec3_NRG8B-VKK3Q-CXVCJ-9G2XF-6Q%f
%84J_161_ProfessionalWorkstation
4b1571d3-bafb-4b40-8087-a961be2caf65_9FNHH-K3HBT-3W4TD-6383H-6X%f
%YWF_162_ProfessionalWorkstationN
3f1afc82-f8ac-4f6c-8005-1d233e606eee_6TP4R-GNPTD-KYYHQ-7B7DP-J4%f
%47Y_164_ProfessionalEducation
5300b18c-2e33-4dc2-8291-47ffcec746dd_YVWGF-BXNMC-HTQYQ-CPQ99-66%f
%QFC_165_ProfessionalEducationN
e0b2d383-d112-413f-8a80-97f373a5820c_YYVX9-NTFWV-6MDM3-9PT4T-4M%f
%68B_171_EnterpriseG
e38454fb-41a4-4f59-a5dc-25080e354730_44RPN-FTY23-9VTTB-MP9BX-T8%f
%4FV_172_EnterpriseGN
ec868e65-fadf-4759-b23e-93fe37f2cc29_CPWHC-NT2C7-VYW78-DHDB2-PG%f
%3GK_175_ServerRdsh_RS5
e4db50ea-bda1-4566-b047-0ca50abc6f07_7NBT4-WGBQX-MP4H7-QXFF8-YP%f
%3KX_175_ServerRdsh_RS3
0df4f814-3f57-4b8b-9a9d-fddadcd69fac_NBTWJ-3DR69-3C4V8-C26MC-GQ%f%9M6_183_CloudE
59eb965c-9150-42b7-a0ec-22151b9897c5_KBN8V-HFGQ4-MGXVD-347P6-PD%f
%QGT_191_IoTEnterpriseS_VB,NI
d30136fc-cb4b-416e-a23d-87207abc44a9_6XN7V-PCBDC-BDBRH-8DQY7-G6%f
%R44_202_CloudEditionN
ca7df2e3-5ea0-47b8-9ac1-b1be4d8edd69_37D7F-N49CB-WQR8W-TBJ73-FM%f
%8RX_203_CloudEdition
:: Windows 2016/19/22/25 LTSC/SAC
7dc26449-db21-4e09-ba37-28f2958506a6_TVRH6-WHNXV-R9WG3-9XRFY-MY%f
%832___7_ServerStandard_Ge
9bd77860-9b31-4b7b-96ad-2564017315bf_VDYBN-27WPP-V4HQT-9VMD4-VM%f
%K7H___7_ServerStandard_FE
de32eafd-aaee-4662-9444-c1befb41bde2_N69G4-B89J2-4G8F4-WWYCC-J4%f
%64C___7_ServerStandard_RS5
8c1c5410-9f39-4805-8c9d-63a07706358f_WC2BQ-8NRM3-FDDYY-2BFGV-KH%f
%KQY___7_ServerStandard_RS1
c052f164-cdf6-409a-a0cb-853ba0f0f55a_D764K-2NDRG-47T6Q-P8T8W-YP%f
%6DF___8_ServerDatacenter_Ge
ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03_WX4NM-KYWYW-QJJR4-XV3QB-6V%f
%M33___8_ServerDatacenter_FE
34e1ae55-27f8-4950-8877-7a03be5fb181_WMDGN-G9PQG-XVVXX-R3X43-63%f
%DFG___8_ServerDatacenter_RS5
21c56779-b449-4d20-adfc-eece0e1ad74b_CB7KF-BWN84-R7R2Y-793K2-8X%f
%DDG___8_ServerDatacenter_RS1
034d3cbb-5d4b-4245-b3f8-f84571314078_WVDHN-86M7X-466P6-VHXV7-YY%f
%726__50_ServerSolution_RS5
2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283_JCKRF-N37P4-C2D82-9YXRT-4M%f
%63B__50_ServerSolution_RS1
7b4433f4-b1e7-4788-895a-c45378d38253_QN4C6-GBJD2-FB422-GHWJK-GJ%f
%G2R_110_ServerCloudStorage
8de8eb62-bbe0-40ac-ac17-f75595071ea3_GRFBW-QNDC4-6QBHG-CCK3B-2P%f
%R88_120_ServerARM64_RS5
43d9af6e-5e86-4be8-a797-d072a046896c_K9FYF-G6NCK-73M32-XMVPY-F9%f
%DRR_120_ServerARM64_RS4
39e69c41-42b4-4a0a-abad-8e3c10a797cc_QFND9-D3Y9C-J3KKY-6RPVP-2D%f
%PYV_145_ServerDatacenterACor_FE
90c362e5-0da1-4bfd-b53b-b87d309ade43_6NMRW-2C8FM-D24W7-TQWMY-CW%f
%H2D_145_ServerDatacenterACor_RS5
e49c08e7-da82-42f8-bde2-b570fbcae76c_2HXDN-KRXHB-GPYC7-YCKFJ-7F%f
%VDG_145_ServerDatacenterACor_RS3
f5e9429c-f50b-4b98-b15c-ef92eb5cff39_67KN8-4FYJW-2487Q-MQ2J7-4C%f
%4RG_146_ServerStandardACor_FE
73e3957c-fc0c-400d-9184-5f7b6f2eb409_N2KJX-J94YW-TQVFB-DG9YT-72%f
%4CC_146_ServerStandardACor_RS5
61c5ef22-f14f-4553-a824-c4b31e84b100_PTXN8-JFHJM-4WC78-MPCBR-9W%f
%4KR_146_ServerStandardACor_RS3
45b5aff2-60a0-42f2-bc4b-ec6e5f7b527e_FCNV3-279Q9-BQB46-FTKXX-9H%f
%PRH_168_ServerAzureCor_Ge
8c8f0ad3-9a43-4e05-b840-93b8d1475cbc_6N379-GGTMK-23C6M-XVVTC-CK%f
%FRQ_168_ServerAzureCor_FE
a99cc1f0-7719-4306-9645-294102fbff95_FDNH6-VW9RW-BXPJ7-4XTYG-23%f
%9TB_168_ServerAzureCor_RS5
3dbf341b-5f6c-4fa7-b936-699dce9e263f_VP34G-4NPPG-79JTQ-864T4-R3%f
%MQX_168_ServerAzureCor_RS1
c2e946d1-cfa2-4523-8c87-30bc696ee584_XGN3F-F394H-FD2MY-PP6FD-8M%f
%CRC_407_ServerTurbine_Ge
19b5e0fb-4431-46bc-bac1-2f1873e4ae73_NTBV8-9K7Q8-V27C6-M2BTV-KH%f
%MXV_407_ServerTurbine_RS5
:: Windows 8.1
81671aaf-79d1-4eb1-b004-8cbbe173afea_MHF9N-XY6XB-WVXMC-BTDCT-MK%f
%KG7___4_Enterprise
113e705c-fa49-48a4-beea-7dd879b46b14_TT4HM-HN7YT-62K67-RGRQJ-JF%f
%FXW__27_EnterpriseN
c06b6981-d7fd-4a35-b7b4-054742b7af67_GCRJD-8NW9H-F2CDX-CCM8D-9D%f
%6T9__48_Professional
7476d79f-8e48-49b4-ab63-4d0b813a16e4_HMCNV-VVBFX-7HMBH-CTY9B-B4%f
%FXY__49_ProfessionalN
f7e88590-dfc7-4c78-bccb-6f3865b99d1a_VHXM3-NR6FT-RY6RT-CK882-KW%f
%2CJ__86_EmbeddedIndustryA
0ab82d54-47f4-4acb-818c-cc5bf0ecb649_NMMPB-38DD4-R2823-62W8D-VX%f
%KJB__89_EmbeddedIndustry
cd4e2d9f-5059-4a50-a92d-05d5bb1267c7_FNFKF-PWTVT-9RC8H-32HB2-JB%f
%34X__91_EmbeddedIndustryE
ffee456a-cd87-4390-8e07-16146c672fd0_XYTND-K6QKT-K2MRH-66RTM-43%f%JKP__97_CoreARM
78558a64-dc19-43fe-a0d0-8075b2a370a3_7B9N3-D94CG-YTVHR-QBPX3-RJ%f%P64__98_CoreN
db78b74f-ef1c-4892-abfe-1e66b8231df6_NCTT7-2RGK8-WMHRF-RY7YQ-JT%f
%XG3__99_CoreCountrySpecific
c72c6a1d-f252-4e7e-bdd1-3fca342acb35_BB6NG-PQ82V-VRDPW-8XVD2-V8%f
%P66_100_CoreSingleLanguage
fe1c3238-432a-43a1-8e25-97e7d1ef10f3_M9Q9P-WNJJT-6PXPY-DWX8H-6X%f%WKK_101_Core
096ce63d-4fac-48a9-82a9-61ae9e800e5f_789NJ-TQK6T-6XTH8-J39CJ-J8%f
%D3P_103_ProfessionalWMC
e9942b32-2e55-4197-b0bd-5ff58cba8860_3PY8R-QHNP9-W7XQD-G6DPH-3J%f
%2C9_111_CoreConnected
c6ddecd6-2354-4c19-909b-306a3058484e_Q6HTR-N24GM-PMJFP-69CD8-2G%f
%XKR_113_CoreConnectedN
b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c_KF37N-VDV38-GRRTV-XH8X6-6F%f
%3BB_115_CoreConnectedSingleLanguage
ba998212-460a-44db-bfb5-71bf09d1c68b_R962J-37N87-9VVK2-WJ74P-XT%f
%MHR_116_CoreConnectedCountrySpecific
e58d87b5-8126-4580-80fb-861b22f79296_MX3RK-9HNGX-K3QKC-6PJ3F-W8%f
%D7B_112_ProfessionalStudent
cab491c7-a918-4f60-b502-dab75e334f40_TNFGH-2R6PB-8XM3K-QYHX2-J4%f
%296_114_ProfessionalStudentN
:: Windows Server 2012 R2
b3ca044e-a358-4d68-9883-aaa2941aca99_D2N9P-3P6X9-2R39C-7RTCD-MD%f
%VJX___7_ServerStandard
00091344-1ea4-4f37-b789-01750ba6988c_W3GGN-FT8W3-Y4M27-J84CP-Q3%f
%VJ9___8_ServerDatacenter
21db6ba4-9a7b-4a14-9e29-64a60c59301d_KNC87-3J2TX-XB4WP-VCPJV-M4%f
%FWM__50_ServerSolution
b743a2be-68d4-4dd3-af32-92425b7bb623_3NPTF-33KPT-GGBPR-YX76B-39%f
%KDD_110_ServerCloudStorage
:: Windows 8
458e1bec-837a-45f6-b9d5-925ed5d299de_32JNW-9KQ84-P47T8-D8GGY-CW%f
%CK7___4_Enterprise
e14997e7-800a-4cf7-ad10-de4b45b578db_JMNMF-RHW7P-DMY6X-RF3DR-X2%f
%BQT__27_EnterpriseN
a98bcd6d-5343-4603-8afe-5908e4611112_NG4HW-VH26C-733KW-K6F98-J8%f
%CK4__48_Professional
ebf245c1-29a8-4daf-9cb1-38dfc608a8c8_XCVCF-2NXM9-723PB-MHCB7-2R%f
%YQQ__49_ProfessionalN
10018baf-ce21-4060-80bd-47fe74ed4dab_RYXVT-BNQG7-VD29F-DBMRY-HT%f
%73M__89_EmbeddedIndustry
18db1848-12e0-4167-b9d7-da7fcda507db_NKB3R-R2F8T-3XCDP-7Q2KW-XW%f
%YQ2__91_EmbeddedIndustryE
af35d7b7-5035-4b63-8972-f0b747b9f4dc_DXHJF-N9KQX-MFPVR-GHGQK-Y7%f%RKV__97_CoreARM
197390a0-65f6-4a95-bdc4-55d58a3b0253_8N2M2-HWPGY-7PGT9-HGDD8-GV%f%GGY__98_CoreN
9d5584a2-2d85-419a-982c-a00888bb9ddf_4K36P-JN4VD-GDC6V-KDT89-DY%f
%FKP__99_CoreCountrySpecific
8860fcd4-a77b-4a20-9045-a150ff11d609_2WN2H-YGCQR-KFX6K-CD6TF-84%f
%YXQ_100_CoreSingleLanguage
c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60_BN3D2-R7TKB-3YPBD-8DRP2-27%f%GG4_101_Core
a00018a3-f20f-4632-bf7c-8daa5351c914_GNBB8-YVD74-QJHX6-27H4K-8Q%f
%HDG_103_ProfessionalWMC
:: Windows Server 2012
f0f5ec41-0d55-4732-af02-440a44a3cf0f_XC9B7-NBPP2-83J2H-RHMBY-92%f
%BT4___7_ServerStandard
d3643d60-0c42-412d-a7d6-52e6635327f6_48HP8-DN98B-MYWDG-T2DCC-8W%f
%83P___8_ServerDatacenter
8f365ba6-c1b9-4223-98fc-282a0756a3ed_HTDQM-NBMMG-KGYDT-2DTKT-J2%f
%MPV__50_ServerSolution
7d5486c7-e120-4771-b7f1-7b56c6d3170c_HM7DN-YVMH3-46JC3-XYTG7-CY%f
%QJJ__76_ServerMultiPointStandard
95fd1c83-7df5-494a-be8b-1300e1c9d1cd_XNH6W-2V9GX-RGJ4K-Y8X6F-QG%f
%J2G__77_ServerMultiPointPremium
:: Windows 7
ae2ee509-1b34-41c0-acb7-6d4650168915_33PXH-7Y6KF-2VJC9-XBBR8-HV%f
%THH___4_Enterprise
1cb6d605-11b3-4e14-bb30-da91c8e3983a_YDRBP-3D83W-TY26F-D46B2-XC%f
%KRJ__27_EnterpriseN
b92e9980-b9d5-4821-9c94-140f632f6312_FJ82H-XT6CR-J8D7P-XQJJ2-GP%f
%DD4__48_Professional
54a09a0d-d57b-4c10-8b69-a842d6590ad5_MRPKT-YTG23-K7D7T-X2JMM-QY%f
%7MG__49_ProfessionalN
db537896-376f-48ae-a492-53d0547773d0_YBYF6-BHCR3-JPKRB-CDW7B-F9%f
%BK4__65_Embedded_POSReady
aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395_73KQT-CD9G6-K7TQG-66MRP-CQ%f
%22C__65_Embedded_ThinPC
5a041529-fef8-4d07-b06f-b59b573b32d2_W82YF-2Q76Y-63HXB-FGJG9-GF%f
%7QX__69_ProfessionalE
46bbed08-9c7b-48fc-a614-95250573f4ea_C29WB-22CC8-VJ326-GHFJW-H9%f
%DH4__70_EnterpriseE
:: Windows Server 2008 R2
68531fb9-5511-4989-97be-d11a0f55633f_YC6KT-GKW9T-YTKYR-T4X34-R7%f
%VHC___7_ServerStandard
7482e61b-c589-4b7f-8ecc-46d455ac3b87_74YFP-3QFB3-KQT8W-PMXWJ-7M%f
%648___8_ServerDatacenter
620e2b3d-09e7-42fd-802a-17a13652fe7a_489J6-VHDMP-X63PK-3K798-CP%f
%X3Y__10_ServerEnterprise
7482e61b-c589-4b7f-8ecc-46d455ac3b87_74YFP-3QFB3-KQT8W-PMXWJ-7M%f
%648__12_ServerDatacenterCore
68531fb9-5511-4989-97be-d11a0f55633f_YC6KT-GKW9T-YTKYR-T4X34-R7%f
%VHC__13_ServerStandardCore
620e2b3d-09e7-42fd-802a-17a13652fe7a_489J6-VHDMP-X63PK-3K798-CP%f
%X3Y__14_ServerEnterpriseCore
8a26851c-1c7e-48d3-a687-fbca9b9ac16b_GT63C-RJFQ3-4GMB6-BRFB9-CB%f
%83V__15_ServerEnterpriseIA64
a78b8bd9-8017-4df5-b86a-09f756affa7c_6TPJF-RBVHG-WBW2R-86QPH-6R%f%TM4__17_ServerWeb
cda18cf3-c196-46ad-b289-60c072869994_TT8MH-CG224-D3D7Q-498W2-9Q%f%CTX__18_ServerHPC
a78b8bd9-8017-4df5-b86a-09f756affa7c_6TPJF-RBVHG-WBW2R-86QPH-6R%f
%TM4__29_ServerWebCore
f772515c-0e87-48d5-a676-e6962c3e1195_736RG-XDKJK-V34PF-BHK87-J6%f
%X3K__56_ServerEmbeddedSolution
:: Windows Vista
cfd8ff08-c0d7-452b-9f60-ef5c70c32094_VKK3X-68KWM-X2YGT-QR4M6-4B%f
%WMV___4_Enterprise
4f3d1606-3fea-4c01-be3c-8d671c401e3b_YFKBB-PQJJV-G996G-VWGXY-2V%f%3X8___6_Business
2c682dc2-8b68-4f63-a165-ae291d4cf138_HMBQG-8H2RH-C77VX-27R82-VM%f%QBT__16_BusinessN
d4f54950-26f2-4fb4-ba21-ffab16afcade_VTC42-BM838-43QHV-84HX6-XJ%f
%XKV__27_EnterpriseN
:: Windows Server 2008
ad2542d4-9154-4c6d-8a44-30f11ee96989_TM24T-X9RMF-VWXK6-X8JC9-BF%f
%GM2___7_ServerStandard
68b6e220-cf09-466b-92d3-45cd964b9509_7M67G-PC374-GR742-YH8V4-TC%f
%BY3___8_ServerDatacenter
c1af4d90-d1bc-44ca-85d4-003ba33db3b9_YQGMW-MPWTJ-34KDK-48M3W-X4%f
%Q6V__10_ServerEnterprise
01ef176b-3e0d-422a-b4f8-4ea880035e8f_4DWFP-JF3DJ-B7DTH-78FJB-PD%f
%RHK__15_ServerEnterpriseIA64
ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b_WYR28-R7TFJ-3X2YQ-YCY4H-M2%f%49D__17_ServerWeb
7afb1156-2c1d-40fc-b260-aab7442b62fe_RCTX3-KWVHP-BR6TB-RB6DM-6X%f
%7HP__18_ServerComputeCluster
2401e3d0-c50a-4b58-87b2-7e794b7d2607_W7VD6-7JFBR-RX26B-YKQ3Y-6F%f
%FFJ__36_ServerStandardV
fd09ef77-5647-4eff-809c-af2b64659a45_22XQ2-VRXRG-P8D42-K34TD-G3%f
%QQC__37_ServerDatacenterV
8198490a-add0-47b2-b3ba-316b12d647b4_39BXF-X8Q23-P2WWT-38T2F-G3%f
%FPG__38_ServerEnterpriseV
::=================================================================================
======================================================
:: Office 2010
8ce7e872-188c-4b98-9d90-f8f90b7aad02_V7Y44-9T38C-R2VJK-666HK-T7%f%DDX__14_AccessVL
cee5d470-6e3b-4fcc-8c2b-d17428568a9f_H62QG-HXVKF-PP4HP-66KMR-CW%f%9BM__14_ExcelVL
8947d0b8-c33b-43e1-8c56-9b674c052832_QYYW6-QP4CB-MBV6G-HYMCJ-4T%f%3J4__14_GrooveVL
ca6b6639-4ad6-40ae-a575-14dee07f6430_K96W8-67RPQ-62T9Y-J8FQJ-BT%f
%37T__14_InfoPathVL
09ed9640-f020-400a-acd8-d7d867dfd9c2_YBJTT-JG6MD-V9Q7P-DBKXJ-38%f%W9R__14_MondoVL
ab586f5c-5256-4632-962f-fefd8b49e6f4_Q4Y4M-RHWJM-PY37F-MTKWH-D3%f%XHX__14_OneNoteVL
ecb7c192-73ab-4ded-acf4-2399b095d0cc_7YDC2-CWM8M-RRTJC-8MDVC-X3%f%DWQ__14_OutlookVL
45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a_RC8FX-88JRY-3PF7C-X8P67-P4%f
%VTT__14_PowerPointVL
df133ff7-bf14-4f95-afe3-7b48e7e331ef_YGX6F-PGV49-PGW3J-9BTGG-VH%f
%KC6__14_ProjectProVL
5dc7bf61-5ec9-4996-9ccb-df806a2d0efe_4HP3K-88W3F-W2K3D-6677X-F9%f
%PGB__14_ProjectStdVL
6f327760-8c5c-417c-9b61-836a98287e0c_VYBBJ-TRJPB-QFQRF-QFT4D-H3%f%GVB__14_ProPlusVL
b50c4f75-599b-43e8-8dcd-1081a7967241_BFK7F-9MYHM-V68C7-DRQ66-83%f
%YTP__14_PublisherVL
ea509e87-07a1-4a45-9edc-eba5a39f36af_D6QFG-VBYP2-XQHM7-J97RH-VV%f
%RCK__14_SmallBusBasicsVL
9da2a678-fb6b-4e67-ab84-60dd6a9c819a_V7QKV-4XVVR-XYV4D-F7DFM-8R%f
%6BM__14_StandardVL
92236105-bb67-494f-94c7-7f7a607929bd_D9DWC-HPYVV-JGF4P-BTWQB-WX%f%8BJ__14_VisioSIVL
2d0882e7-a4e7-423b-8ccc-70d91e0158b1_HVHB3-C6FV7-KQX9W-YQG79-CR%f%Y7T__14_WordVL
:: Office 2013
6ee7622c-18d8-4005-9fb7-92db644a279b_NG2JY-H4JBT-HQXYP-78QH9-4J%f
%M2D__15_AccessVolume_-AccessRetail-
259de5be-492b-44b3-9d78-9645f848f7b0_X3XNB-HJB7K-66THH-8DWQ3-XH%f
%GJP__15_AccessRuntimeRetail_[Bypass]
f7461d52-7c2b-43b2-8744-ea958e0bd09a_VGPNG-Y7HQW-9RHP7-TKPV3-BG%f
%7GB__15_ExcelVolume_-ExcelRetail-
fb4875ec-0c6b-450f-b82b-ab57d8d1677f_H7R7V-WPNXQ-WCYYC-76BGV-VT%f
%7GH__15_GrooveVolume_-GrooveRetail-
a30b8040-d68a-423f-b0b5-9ce292ea5a8f_DKT8B-N7VXH-D963P-Q4PHY-F8%f
%894__15_InfoPathVolume_-InfoPathRetail-
9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f
%CMY__15_LyncAcademicRetail_[PrepidBypass]
ff693bf4-0276-4ddb-bb42-74ef1a0c9f4d_N42BF-CBY9F-W2C7R-X397X-DY%f
%FQW__15_LyncEntryRetail_[PrepidBypass]
1b9f11e3-c85c-4e1b-bb29-879ad2c909e3_2MG3G-3BNTT-3MFW9-KDQW3-TC%f
%K7R__15_LyncVolume_-LyncRetail-
1dc00701-03af-4680-b2af-007ffc758a1f_CWH2Y-NPYJW-3C7HD-BJQWB-G2%f
%8JJ__15_MondoRetail
dc981c6b-fc8e-420f-aa43-f8f33e5c0923_42QTK-RN8M7-J3C4G-BBGYM-88%f
%CYV__15_MondoVolume_-O365BusinessRetail-O365HomePremRetail-O365ProPlusRetail-
O365SmallBusPremRetail-
3391e125-f6e4-4b1e-899c-a25e6092d40d_4TGWV-6N9P6-G2H8Y-2HWKB-B4%f
%FF4__15_OneNoteFreeRetail_[Bypass]
efe1f3e6-aea2-4144-a208-32aa872b6545_TGN6P-8MMBC-37P2F-XHXXK-P3%f
%4VW__15_OneNoteVolume_-OneNoteRetail-
771c3afa-50c5-443f-b151-ff2546d863a0_QPN8Q-BJBTJ-334K3-93TGY-2P%f
%MBT__15_OutlookVolume_-OutlookRetail-
8c762649-97d1-4953-ad27-b7e2c25b972e_4NT99-8RJFH-Q2VDH-KYG2C-4R%f
%D4F__15_PowerPointVolume_-PowerPointRetail-
4a5d124a-e620-44ba-b6ff-658961b33b9a_FN8TT-7WMH6-2D4X9-M337T-23%f
%42K__15_ProjectProVolume_-ProjectProRetail-
427a28d1-d17c-4abf-b717-32c780ba6f07_6NTH3-CW976-3G3Y2-JK3TX-8Q%f
%HTT__15_ProjectStdVolume_-ProjectStdRetail-
b322da9c-a2e2-4058-9e4e-f59a6970bd69_YC7DK-G2NP3-2QQC3-J6H88-GV%f
%GXT__15_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
00c79ff1-6850-443d-bf61-71cde0de305f_PN2WF-29XG2-T9HJ7-JQPJR-FC%f
%XK4__15_PublisherVolume_-PublisherRetail-
ba3e3833-6a7e-445a-89d0-7802a9a68588_3NY6J-WHT3F-47BDV-JHF36-23%f
%43W__15_SPDRetail_[PrepidBypass]
b13afb38-cd79-4ae5-9f7f-eed058d750ca_KBKQT-2NMXY-JJWGP-M62JB-92%f
%CD4__15_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-
HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-PersonalPipcRetail-
PersonalRetail-
e13ac10e-75d0-4aff-a0cd-764982cf541c_C2FG9-N6J68-H8BTJ-BW3QX-RM%f
%3B3__15_VisioProVolume_-VisioProRetail-
ac4efaf0-f81f-4f61-bdf7-ea32b02ab117_J484Y-4NKBF-W2HMG-DBMJC-PG%f
%WR7__15_VisioStdVolume_-VisioStdRetail-
d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3_6Q7VD-NX8JD-WJ2VH-88V73-4G%f
%BJ7__15_WordVolume_-WordRetail-
:: Office 2016
9d9faf9e-d345-4b49-afce-68cb0a539c7c_RNB7V-P48F4-3FYY6-2P3R3-63%f
%BQV__16_AccessRuntimeRetail_[PrepidBypass]
67c0fc0c-deba-401b-bf8b-9c8ad8395804_GNH9Y-D2J4T-FJHGG-QRVH7-QP%f
%FDW__16_AccessVolume_-AccessRetail-
c3e65d36-141f-4d2f-a303-a842ee756a29_9C2PK-NWTVB-JMPW8-BFT28-7F%f
%TBF__16_ExcelVolume_-ExcelRetail-
e914ea6e-a5fa-4439-a394-a9bb3293ca09_DMTCJ-KNRKX-26982-JYCKT-P7%f
%KB6__16_MondoRetail
9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce_HFTND-W9MK4-8B7MJ-B6C4G-XQ%f
%BR2__16_MondoVolume_-O365AppsBasicRetail-O365BusinessRetail-O365EduCloudRetail-
O365HomePremRetail-O365ProPlusRetail-O365SmallBusPremRetail-
436366de-5579-4f24-96db-3893e4400030_XYNTG-R96FY-369HX-YFPHY-F9%f
%CPM__16_OneNoteFreeRetail_[Bypass]
d8cace59-33d2-4ac7-9b1b-9b72339c51c8_DR92N-9HTF2-97XKM-XW2WJ-XW%f
%3J6__16_OneNoteVolume_-OneNoteRetail-OneNote2021Retail-
ec9d9265-9d1e-4ed0-838a-cdc20f2551a1_R69KK-NTPKF-7M3Q4-QYBHW-6M%f
%T9B__16_OutlookVolume_-OutlookRetail-
d70b1bba-b893-4544-96e2-b7a318091c33_J7MQP-HNJ4Y-WJ7YM-PFYGF-BY%f
%6C6__16_PowerPointVolume_-PowerPointRetail-
4f414197-0fc2-4c01-b68a-86cbb9ac254c_YG9NW-3K39V-2T3HJ-93F3Q-G8%f
%3KT__16_ProjectProVolume_-ProjectProRetail-
829b8110-0e6f-4349-bca4-42803577788d_WGT24-HCNMF-FQ7XH-6M8K7-DR%f
%TW9__16_ProjectProXVolume
da7ddabc-3fbe-4447-9e01-6ab7440b4cd4_GNFHQ-F6YQM-KQDGJ-327XX-KQ%f
%BVC__16_ProjectStdVolume_-ProjectStdRetail-
cbbaca45-556a-4416-ad03-bda598eaa7c8_D8NRQ-JTYM3-7J2DX-646CT-68%f
%36M__16_ProjectStdXVolume
d450596f-894d-49e0-966a-fd39ed4c4c64_XQNVK-8JYDB-WJ9W3-YJ8YR-WF%f
%G99__16_ProPlusVolume_-ProPlusRetail-ProfessionalPipcRetail-ProfessionalRetail-
041a06cb-c5b8-4772-809f-416d03d16654_F47MM-N3XJP-TQXJ9-BP99D-8K%f
%837__16_PublisherVolume_-PublisherRetail-
9103f3ce-1084-447a-827e-d6097f68c895_6MDN4-WF3FV-4WH3Q-W699V-RG%f
%CMY__16_SkypeServiceBypassRetail_[PrepidBypass]
971cd368-f2e1-49c1-aedd-330909ce18b6_4N4D8-3J7Y3-YYW7C-73HD2-V8%f
%RHY__16_SkypeforBusinessEntryRetail_[PrepidBypass]
83e04ee1-fa8d-436d-8994-d31a862cab77_869NQ-FJ69K-466HW-QYCP2-DD%f
%BV6__16_SkypeforBusinessVolume_-SkypeforBusinessRetail-
dedfa23d-6ed1-45a6-85dc-63cae0546de6_JNRGM-WHDWX-FJJG3-K47QV-DR%f
%TFM__16_StandardVolume_-StandardRetail-HomeBusinessPipcRetail-HomeBusinessRetail-
HomeStudentARMRetail-HomeStudentPlusARMRetail-HomeStudentRetail-
HomeStudentVNextRetail-PersonalPipcRetail-PersonalRetail-
6bf301c1-b94a-43e9-ba31-d494598c47fb_PD3PC-RHNGV-FXJ29-8JK7D-RJ%f
%RJK__16_VisioProVolume_-VisioProRetail-
b234abe3-0857-4f9c-b05a-4dc314f85557_69WXN-MBYV6-22PQG-3WGHK-RM%f
%6XC__16_VisioProXVolume
aa2a7821-1827-4c2c-8f1d-4513a34dda97_7WHWN-4T7MP-G96JF-G33KR-W8%f
%GF4__16_VisioStdVolume_-VisioStdRetail-
361fe620-64f4-41b5-ba77-84f8e079b1f7_NY48V-PPYYH-3F4PX-XJRKJ-W4%f
%423__16_VisioStdXVolume
bb11badf-d8aa-470e-9311-20eaf80fe5cc_WXY84-JN2Q9-RBCCQ-3Q3J3-3P%f
%FJ6__16_WordVolume_-WordRetail-
:: Office 2019
22e6b96c-1011-4cd5-8b35-3c8fb6366b86_FGQNJ-JWJCG-7Q8MG-RMRGJ-9T%f
%QVF__16_AccessRuntime2019Retail_[PrepidBypass]
9e9bceeb-e736-4f26-88de-763f87dcc485_9N9PT-27V4Y-VJ2PD-YXFMF-YT%f
%FQT__16_Access2019Volume_-Access2019Retail-
237854e9-79fc-4497-a0c1-a70969691c6b_TMJWT-YYNMB-3BKTF-644FC-RV%f
%XBD__16_Excel2019Volume_-Excel2019Retail-
c8f8a301-19f5-4132-96ce-2de9d4adbd33_7HD7K-N4PVK-BHBCQ-YWQRW-XW%f
%4VK__16_Outlook2019Volume_-Outlook2019Retail-
3131fd61-5e4f-4308-8d6d-62be1987c92c_RRNCX-C64HY-W2MM7-MCH9G-TJ%f
%HMQ__16_PowerPoint2019Volume_-PowerPoint2019Retail-
2ca2bf3f-949e-446a-82c7-e25a15ec78c4_B4NPR-3FKK7-T2MBV-FRQ4W-PK%f
%D2B__16_ProjectPro2019Volume_-ProjectPro2019Retail-
1777f0e3-7392-4198-97ea-8ae4de6f6381_C4F7P-NCP8C-6CQPT-MQHV9-JX%f
%D2M__16_ProjectStd2019Volume_-ProjectStd2019Retail-
85dd8b5f-eaa4-4af3-a628-cce9e77c9a03_NMMKJ-6RK4F-KMJVX-8D9MJ-6M%f
%WKP__16_ProPlus2019Volume_-ProPlus2019Retail-Professional2019Retail-
9d3e4cca-e172-46f1-a2f4-1d2107051444_G2KWX-3NW6P-PY93R-JXK2T-C9%f
%Y9V__16_Publisher2019Volume_-Publisher2019Retail-
734c6c6e-b0ba-4298-a891-671772b2bd1b_NCJ33-JHBBY-HTK98-MYCV8-HM%f
%KHJ__16_SkypeforBusiness2019Volume_-SkypeforBusiness2019Retail-
f88cfdec-94ce-4463-a969-037be92bc0e7_N9722-BV9H6-WTJTT-FPB93-97%f
%8MK__16_SkypeforBusinessEntry2019Retail_[PrepidBypass]
6912a74b-a5fb-401a-bfdb-2e3ab46f4b02_6NWWJ-YQWMR-QKGCB-6TMB3-9D%f
%9HK__16_Standard2019Volume_-Standard2019Retail-HomeBusiness2019Retail-
HomeStudentARM2019Retail-HomeStudentPlusARM2019Retail-HomeStudent2019Retail-
Personal2019Retail-
5b5cf08f-b81a-431d-b080-3450d8620565_9BGNQ-K37YR-RQHF2-38RQ3-7V%f
%CBB__16_VisioPro2019Volume_-VisioPro2019Retail-
e06d7df3-aad0-419d-8dfb-0ac37e2bdf39_7TQNQ-K3YQQ-3PFH7-CCPPM-X4%f
%VQ2__16_VisioStd2019Volume_-VisioStd2019Retail-
059834fe-a8ea-4bff-b67b-4d006b5447d3_PBX3G-NWMT6-Q7XBW-PYJGG-WX%f
%D33__16_Word2019Volume_-Word2019Retail-
:: Office 2021
:: OneNote2021Volume KMS license is not available
844c36cb-851c-49e7-9079-12e62a049e2a_MNX9D-PB834-VCGY2-K2RW2-2D%f
%P3D__16_AccessRuntime2021Retail_[Bypass]
1fe429d8-3fa7-4a39-b6f0-03dded42fe14_WM8YG-YNGDD-4JHDC-PG3F4-FC%f
%4T4__16_Access2021Volume_-Access2021Retail-
ea71effc-69f1-4925-9991-2f5e319bbc24_NWG3X-87C9K-TC7YY-BC2G7-G6%f
%RVC__16_Excel2021Volume_-Excel2021Retail-
a5799e4c-f83c-4c6e-9516-dfe9b696150b_C9FM6-3N72F-HFJXB-TM3V9-T8%f
%6R9__16_Outlook2021Volume_-Outlook2021Retail-
778ccb9a-2f6a-44e5-853c-eb22b7609643_CNM3W-V94GB-QJQHH-BDQ3J-33%f
%Y8H__16_OneNoteFree2021Retail_[Bypass]
6e166cc3-495d-438a-89e7-d7c9e6fd4dea_TY7XF-NFRBR-KJ44C-G83KF-GX%f
%27K__16_PowerPoint2021Volume_-PowerPoint2021Retail-
76881159-155c-43e0-9db7-2d70a9a3a4ca_FTNWT-C6WBT-8HMGF-K9PRX-QV%f
%9H8__16_ProjectPro2021Volume_-ProjectPro2021Retail-
6dd72704-f752-4b71-94c7-11cec6bfc355_J2JDC-NJCYY-9RGQ4-YXWMH-T3%f
%D4T__16_ProjectStd2021Volume_-ProjectStd2021Retail-
fbdb3e18-a8ef-4fb3-9183-dffd60bd0984_FXYTK-NJJ8C-GB6DW-3DYQT-6F%f
%7TH__16_ProPlus2021Volume_-ProPlus2021Retail-Professional2021Retail-
aa66521f-2370-4ad8-a2bb-c095e3e4338f_2MW9D-N4BXM-9VBPG-Q7W6M-KF%f
%BGQ__16_Publisher2021Volume_-Publisher2021Retail-
1f32a9af-1274-48bd-ba1e-1ab7508a23e8_HWCXN-K3WBT-WJBKY-R8BD9-XK%f
%29P__16_SkypeforBusiness2021Volume_-SkypeforBusiness2021Retail-
080a45c5-9f9f-49eb-b4b0-c3c610a5ebd3_KDX7X-BNVR8-TXXGX-4Q7Y8-78%f
%VT3__16_Standard2021Volume_-Standard2021Retail-HomeBusiness2021Retail-
HomeStudent2021Retail-Personal2021Retail-
fb61ac9a-1688-45d2-8f6b-0674dbffa33c_KNH8D-FGHT4-T8RK3-CTDYJ-K2%f
%HT4__16_VisioPro2021Volume_-VisioPro2021Retail-
72fce797-1884-48dd-a860-b2f6a5efd3ca_MJVNY-BYWPY-CWV6J-2RKRT-4M%f
%8QG__16_VisioStd2021Volume_-VisioStd2021Retail-
abe28aea-625a-43b1-8e30-225eb8fbd9e5_TN8H9-M34D3-Y64V9-TR72V-X7%f
%9KV__16_Word2021Volume_-Word2021Retail-
:: Office 2024
fceda083-1203-402a-8ec4-3d7ed9f3648c_2TDPW-NDQ7G-FMG99-DXQ7M-TX%f
%3T2__16_ProPlus2024Volume-Preview
aaea0dc8-78e1-4343-9f25-b69b83dd1bce_D9GTG-NP7DV-T6JP3-B6B62-JB%f
%89R__16_ProjectPro2024Volume-Preview
4ab4d849-aabc-43fb-87ee-3aed02518891_YW66X-NH62M-G6YFP-B7KCT-WX%f
%GKQ__16_VisioPro2024Volume-Preview
72e9faa7-ead1-4f3d-9f6e-3abc090a81d7_82FTR-NCHR7-W3944-MGRHM-JM%f
%CWD__16_Access2024Volume_-Access2024Retail-
cbbba2c3-0ff5-4558-846a-043ef9d78559_F4DYN-89BP2-WQTWJ-GR8YC-CK%f
%GJG__16_Excel2024Volume_-Excel2024Retail-
bef3152a-8a04-40f2-a065-340c3f23516d_D2F8D-N3Q3B-J28PV-X27HD-RJ%f
%WB9__16_Outlook2024Volume_-Outlook2024Retail-
b63626a4-5f05-4ced-9639-31ba730a127e_CW94N-K6GJH-9CTXY-MG2VC-FY%f
%CWP__16_PowerPoint2024Volume_-PowerPoint2024Retail-
f510af75-8ab7-4426-a236-1bfb95c34ff8_FQQ23-N4YCY-73HQ3-FM9WC-76%f
%HF4__16_ProjectPro2024Volume_-ProjectPro2024Retail-
9f144f27-2ac5-40b9-899d-898c2b8b4f81_PD3TT-NTHQQ-VC7CY-MFXK3-G8%f
%7F8__16_ProjectStd2024Volume_-ProjectStd2024Retail-
8d368fc1-9470-4be2-8d66-90e836cbb051_XJ2XN-FW8RK-P4HMP-DKDBV-GC%f
%VGB__16_ProPlus2024Volume_-ProPlus2024Retail-
0002290a-2091-4324-9e53-3cfe28884cde_4NKHF-9HBQF-Q3B6C-7YV34-F6%f
%4P3__16_SkypeforBusiness2024Volume
bbac904f-6a7e-418a-bb4b-24c85da06187_V28N4-JG22K-W66P8-VTMGK-H6%f
%HGR__16_Standard2024Volume_-Home2024Retail-HomeBusiness2024Retail-
fa187091-8246-47b1-964f-80a0b1e5d69a_B7TN8-FJ8V3-7QYCP-HQPMV-YY%f
%89G__16_VisioPro2024Volume_-VisioPro2024Retail-
923fa470-aa71-4b8b-b35c-36b79bf9f44b_JMMVY-XFNQC-KK4HK-9H7R3-WQ%f
%QTV__16_VisioStd2024Volume_-VisioStd2024Retail-
d0eded01-0881-4b37-9738-190400095098_MQ84N-7VYDM-FXV7C-6K7CC-VF%f
%W9J__16_Word2024Volume_-Word2024Retail-
) do (
for /f "tokens=1-5 delims=_" %%A in ("%%#") do (
)
)
exit /b
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:check_actstatus
cls
if not defined terminal (
mode 100, 36
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=35;$[Link]=300;$[Link]=$W;
$[Link]=$B;}" %nul%
)
:sppmgr:
param (
[Parameter()]
[switch]
$All,
[Parameter()]
[switch]
$Dlv,
[Parameter()]
[switch]
$IID,
[Parameter()]
[switch]
$Pass
)
function CONOUT($strObj)
{
Out-Host -Input $strObj
}
function ExitScript($ExitCode = 0)
{
Exit $ExitCode
}
if (-Not $PSVersionTable) {
"==== ERROR ====`r`n"
"Windows PowerShell 1.0 is not supported by this script."
ExitScript 1
}
if ($[Link].value__ -NE 0) {
"==== ERROR ====`r`n"
"Windows PowerShell is not running in Full Language Mode."
ExitScript 1
}
$winbuild = 1
try {
$winbuild =
[[Link]]::GetVersionInfo("$env:SystemRoot\System32\
[Link]").FileBuildPart
} catch {
$winbuild = [int]([wmi]'Win32_OperatingSystem=@').BuildNumber
}
if ($winbuild -EQ 1) {
"==== ERROR ====`r`n"
"Could not detect Windows build."
ExitScript 1
}
if ($[Link])
{
$isAll = {CONOUT "`r"}
$noAll = {$null}
}
else
{
$isAll = {$null}
$noAll = {CONOUT "`r"}
}
$Dlv = $[Link]
$IID = $[Link] -Or $[Link]
$Admin = ([[Link]]
[[Link]]::GetCurrent()).IsInRole([[Link]
ndowsBuiltInRole]::Administrator)
$line2 = "============================================================"
$line3 = "____________________________________________________________"
function echoWindows
{
CONOUT "$line2"
CONOUT "=== Windows Status ==="
CONOUT "$line2"
& $noAll
}
function echoOffice
{
if ($doMSG -EQ 0) {
return
}
& $isAll
CONOUT "$line2"
CONOUT "=== Office Status ==="
CONOUT "$line2"
& $noAll
$script:doMSG = 0
}
function CheckOhook
{
$ohook = 0
$paths = "${env:ProgramFiles}", "${env:ProgramW6432}", "$
{env:ProgramFiles(x86)}"
15, 16 | foreach `
{
$A = $_; $paths | foreach `
{
if (Test-Path "$($_)$('\Microsoft Office\Office')$($A)$('\
sppc*dll')") {$ohook = 1}
}
}
if ($ohook -EQ 0) {
return
}
& $isAll
CONOUT "$line2"
CONOUT "=== Office Ohook Status ==="
CONOUT "$line2"
$[Link]('Yellow', 'Black', "`r`nOhook for permanent Office
activation is installed.`r`nYou can ignore the below mentioned Office activation
status.")
& $noAll
}
#region SSSS
function BoolToWStr($bVal) {
("TRUE", "FALSE")[!$bVal]
}
$Marshal = [[Link]]
$Module =
[AppDomain]::[Link](($LaName+"_Assembly"),
'Run').DefineDynamicModule(($LaName+"_Module"), $False)
$Class = $[Link](($LaName+"_Methods"), 'Public, Abstract, Sealed,
BeforeFieldInit', [Object], 0)
if ($DllSubscription) {
$[Link]('ClipGetSubscriptionStatus', '[Link]',
22, 1, [Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
$Struct = $[Link]('SubStatus', 'NestedPublic,
SequentialLayout, Sealed, BeforeFieldInit', [ValueType], 0)
[void]$[Link]('dwEnabled', [UInt32], 'Public')
[void]$[Link]('dwSku', [UInt32], 6)
[void]$[Link]('dwState', [UInt32], 6)
$SubStatus = $[Link]()
}
$Win32 = $[Link]()
}
function SlGetInfoIID($SkuId)
{
$bData = 0
if ($Win32::SLGenerateOfflineInstallationId(
$hSLC,
[ref][Guid]$SkuId,
[ref]$bData
))
{
return $null
}
else
{
return $Marshal::PtrToStringUni($bData)
}
}
$hrRet = $Win32::SLGetPKeyInformation(
$hSLC,
[ref][Guid]$PkeyId,
$Value,
[ref]$tData,
[ref]$cData,
[ref]$bData
)
$hrRet = $Win32::SLGetProductSkuInformation(
$hSLC,
[ref][Guid]$SkuId,
$Value,
[ref]$tData,
[ref]$cData,
[ref]$bData
)
$hrRet = $Win32::SLGetApplicationInformation(
$hSLC,
[ref][Guid]$AppId,
$Value,
[ref]$tData,
[ref]$cData,
[ref]$bData
)
function SlGetInfoService($Value)
{
$tData = 0
$cData = 0
$bData = 0
$hrRet = $Win32::SLGetServiceInformation(
$hSLC,
$Value,
[ref]$tData,
[ref]$cData,
[ref]$bData
)
$cStatus = 0
$pStatus = 0
$hrRet = $Win32::SLGetLicensingStatusInformation(
$hSLC,
[ref][Guid]$AppId,
[ref][Guid]$SkuId,
0,
[ref]$cStatus,
[ref]$pStatus
)
if ($dwStatus -EQ 3)
{
$dwStatus = 5
}
if ($dwStatus -EQ 2)
{
if ($hrReason -EQ 0x4004F00D)
{
$dwStatus = 3
}
elseif ($hrReason -EQ 0x4004F065)
{
$dwStatus = 4
}
elseif ($hrReason -EQ 0x4004FC06)
{
$dwStatus = 6
}
}
return
}
function SlGetInfoSLID($AppId)
{
$cReturnIds = 0
$pReturnIds = 0
$hrRet = $Win32::SLGetSLIDList(
$hSLC,
0,
[ref][Guid]$AppId,
1,
[ref]$cReturnIds,
[ref]$pReturnIds
)
$a1List = @()
$a2List = @()
$a3List = @()
$a4List = @()
function DetectSubscription {
try
{
$objSvc = New-Object PSObject
$wmiSvc = [wmisearcher]"SELECT SubscriptionType, SubscriptionStatus,
SubscriptionEdition, SubscriptionExpiry FROM SoftwareLicensingService"
$[Link] = $false
$[Link]() | select -Expand Properties -EA 0 | foreach { $objSvc |
Add-Member 8 $_.Name $_.Value }
$[Link]()
}
catch
{
return
}
if ($[Link] -EQ 1) {
$SubMsgType = "Device based"
} else {
$SubMsgType = "User based"
}
$SubMsgExpiry = "Unknown"
if ($[Link]) {
if ($[Link]("unspecified") -EQ $false)
{$SubMsgExpiry = $[Link]}
}
$SubMsgEdition = "Unknown"
if ($[Link]) {
if ($[Link]("UNKNOWN") -EQ $false)
{$SubMsgEdition = $[Link]}
}
function DetectAdbaClient
{
$propADBA | foreach { set $_ (SlGetInfoSku $licID $_) }
CONOUT "`nAD Activation client information:"
CONOUT " Object Name: $ADActivationObjectName"
CONOUT " Domain Name: $ADActivationObjectDN"
CONOUT " CSVLK Extended PID: $ADActivationCsvlkPID"
CONOUT " CSVLK Activation ID: $ADActivationCsvlkSkuID"
}
function DetectAvmClient
{
$propAVMA | foreach { set $_ (SlGetInfoSku $licID $_) }
CONOUT "`nAutomatic VM Activation client information:"
if (-Not [String]::IsNullOrEmpty($InheritedActivationId)) {
CONOUT " Guest IAID: $InheritedActivationId"
} else {
CONOUT " Guest IAID: Not Available"
}
if (-Not [String]::IsNullOrEmpty($InheritedActivationHostMachineName)) {
CONOUT " Host machine name: $InheritedActivationHostMachineName"
} else {
CONOUT " Host machine name: Not Available"
}
if (-Not [String]::IsNullOrEmpty($InheritedActivationHostDigitalPid2)) {
CONOUT " Host Digital PID2: $InheritedActivationHostDigitalPid2"
} else {
CONOUT " Host Digital PID2: Not Available"
}
if ($InheritedActivationActivationTime) {
$IAAT =
[DateTime]::FromFileTime($InheritedActivationActivationTime).ToString('yyyy-MM-dd
hh:mm:ss tt')
CONOUT " Activation time: $IAAT"
} else {
CONOUT " Activation time: Not Available"
}
}
function DetectKmsHost
{
$IsKeyManagementService = SlGetInfoSvcApp $strApp 'IsKeyManagementService'
if (-Not $IsKeyManagementService) {
return
}
if ($SLApp)
{
$propKMSServer | foreach { set $_ (SlGetInfoApp $strApp $_) }
}
else
{
$propKMSServer | foreach { set $_ (SlGetInfoService $_) }
}
$KMSRequests = $KeyManagementServiceTotalRequests
$NoRequests = ($null -EQ $KMSRequests) -Or ($KMSRequests -EQ -1) -Or
($KMSRequests -EQ 4294967295)
function DetectKmsClient
{
if ($win8)
{
$VLType = strGetRegistry ($SPKeyPath + '\' + $strApp + '\' + $licID)
"VLActivationType"
if ($null -EQ $VLType) {$VLType = strGetRegistry ($SPKeyPath + '\' +
$strApp) "VLActivationType"}
if ($null -EQ $VLType) {$VLType = strGetRegistry ($SPKeyPath)
"VLActivationType"}
if ($null -EQ $VLType -Or $VLType -GT 3) {$VLType = 0}
}
if ($null -NE $VLType) {CONOUT "Configured Activation Type: $
($VLActTypes[$VLType])"}
CONOUT "`r"
if ($LicenseStatus -NE 1) {
CONOUT "Please activate the product in order to update KMS client
information values."
return
}
if ($Vista) {
$propKMSVista | foreach { set $_ (SlGetInfoService $_) }
$KeyManagementServicePort = strGetRegistry $SLKeyPath
"KeyManagementServicePort"
$DiscoveredKeyManagementServiceName = strGetRegistry $NSKeyPath
"DiscoveredKeyManagementServiceName"
$DiscoveredKeyManagementServicePort = strGetRegistry $NSKeyPath
"DiscoveredKeyManagementServicePort"
}
if ([String]::IsNullOrEmpty($KeyManagementServiceName)) {
$KmsReg = $null
} else {
if (-Not $KeyManagementServicePort) {$KeyManagementServicePort = 1688}
$KmsReg = "Registered KMS machine name: ${KeyManagementServiceName}:$
{KeyManagementServicePort}"
}
if ([String]::IsNullOrEmpty($DiscoveredKeyManagementServiceName)) {
$KmsDns = "DNS auto-discovery: KMS name not available"
if ($Vista -And -Not $Admin) {$KmsDns = "DNS auto-discovery: Run the
script as administrator to retrieve info"}
} else {
if (-Not $DiscoveredKeyManagementServicePort)
{$DiscoveredKeyManagementServicePort = 1688}
$KmsDns = "KMS machine name from DNS: $
{DiscoveredKeyManagementServiceName}:${DiscoveredKeyManagementServicePort}"
}
$pkid = $[Link]
$isPPK = $null -NE $pkid
$licPHN = "empty"
if ($Dlv -Or $[Link]) {
$licPHN = SlGetInfoSku $licID "msft:sl/EUL/PHONE/PUBLIC"
}
$gprDay = [Math]::Round($gprMnt/1440)
$_xpr = ""
$inGrace = $false
if ($gprMnt -GT 0) {
$_xpr = [DateTime]::[Link]($gprMnt).ToString('yyyy-MM-dd
hh:mm:ss tt')
$inGrace = $true
}
$LicenseMsg = "Time remaining: $gprMnt minute(s) ($gprDay day(s))"
if ($LicenseStatus -EQ 0) {
$LicenseInf = "Unlicensed"
$LicenseMsg = $null
}
if ($LicenseStatus -EQ 1) {
$LicenseInf = "Licensed"
if ($gprMnt -EQ 0) {
$LicenseMsg = $null
$ExpireMsg = "The $prmnt is permanently activated."
} else {
$LicenseMsg = "$actTag activation expiration: $gprMnt minute(s)
($gprDay day(s))"
if ($inGrace) {$ExpireMsg = "$actTag activation will expire
$_xpr"}
}
}
if ($LicenseStatus -EQ 2) {
$LicenseInf = "Initial grace period"
if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
if ($LicenseStatus -EQ 3) {
$LicenseInf = "Additional grace period (KMS license expired or hardware
out of tolerance)"
if ($inGrace) {$ExpireMsg = "Additional grace period ends $_xpr"}
}
if ($LicenseStatus -EQ 4) {
$LicenseInf = "Non-genuine grace period"
if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
if ($LicenseStatus -EQ 5 -And -Not $NT5) {
$LicenseReason = '0x{0:X}' -f $LicReason
$LicenseInf = "Notification"
$LicenseMsg = "Notification Reason: $LicenseReason"
if ($LicenseReason -EQ "0xC004F00F") {if ($null -NE $cKmsClient)
{$LicenseMsg = $LicenseMsg + " (KMS license expired)."} else {$LicenseMsg =
$LicenseMsg + " (hardware out of tolerance)."}}
if ($LicenseReason -EQ "0xC004F200") {$LicenseMsg = $LicenseMsg + "
(non-genuine)."}
if ($LicenseReason -EQ "0xC004F009" -Or $LicenseReason -EQ
"0xC004F064") {$LicenseMsg = $LicenseMsg + " (grace time expired)."}
}
if ($LicenseStatus -GT 5 -Or ($LicenseStatus -GT 4 -And $NT5)) {
$LicenseInf = "Unknown"
$LicenseMsg = $null
}
if ($LicenseStatus -EQ 6 -And -Not $Vista -And -Not $NT5) {
$LicenseInf = "Extended grace period"
if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
if ($isPPK) {
$propPkey | foreach { set $_ (SlGetInfoPKey $pkid $_) }
}
if ($Dlv) {
if ($win8)
{
$RemainingSkuReArmCount = SlGetInfoSku $licID
'RemainingRearmCount'
$RemainingAppReArmCount = SlGetInfoApp $strApp
'RemainingRearmCount'
}
else
{
if (($winID -And $NT7) -Or $strSLP -EQ $oslp)
{
$RemainingSLReArmCount = SlGetInfoApp $strApp
'RemainingRearmCount'
}
else
{
$RemainingSLReArmCount = SlGetInfoService 'RearmCount'
}
}
if ($null -EQ $TrustedTime)
{
$TrustedTime = SlGetInfoSvcApp $strApp 'TrustedTime'
}
}
& $isAll
CONOUT "Name: $Name"
CONOUT "Description: $Description"
CONOUT "Activation ID: $licID"
if ($null -NE $DigitalPID) {CONOUT "Extended PID: $DigitalPID"}
if ($null -NE $DigitalPID2 -And $Dlv) {CONOUT "Product ID: $DigitalPID2"}
if ($null -NE $OfflineInstallationId -And $IID) {CONOUT "Installation ID:
$OfflineInstallationId"}
if ($null -NE $Channel) {CONOUT "Product Key Channel: $Channel"}
if ($null -NE $PartialProductKey) {CONOUT "Partial Product Key:
$PartialProductKey"}
CONOUT "License Status: $LicenseInf"
if ($null -NE $LicenseMsg) {CONOUT "$LicenseMsg"}
if ($LicenseStatus -NE 0 -And $EvaluationEndDate) {
$EED = [DateTime]::FromFileTimeUtc($EvaluationEndDate).ToString('yyyy-
MM-dd hh:mm:ss tt')
CONOUT "Evaluation End Date: $EED UTC"
}
if ($LicenseStatus -NE 1 -And $licPHN -NE "empty") {
$gPHN = [String]::IsNullOrEmpty($licPHN) -NE $true
CONOUT "Phone activatable: $($[Link]())"
}
if ($Dlv) {
if ($null -NE $RemainingSLReArmCount) {
CONOUT "Remaining $reapp rearm count: $RemainingSLReArmCount"
}
if ($null -NE $RemainingSkuReArmCount) {
CONOUT "Remaining $reapp rearm count: $RemainingAppReArmCount"
CONOUT "Remaining SKU rearm count: $RemainingSkuReArmCount"
}
if ($LicenseStatus -NE 0 -And $TrustedTime) {
$TTD = [DateTime]::FromFileTime($TrustedTime).ToString('yyyy-MM-
dd hh:mm:ss tt')
CONOUT "Trusted time: $TTD"
}
}
if (!$isPPK) {
return
}
$chkSLS = ($null -NE $cKmsClient -Or $null -NE $cKmsServer -Or $chkSub)
if (!$chkSLS) {
if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
return
}
if ($chkSub) {
DetectSubscription
}
#region vNextDiag
if ($[Link] -Lt 3)
{
function ConvertFrom-Json
{
[CmdletBinding()]
Param(
[Parameter(ValueFromPipeline=$true)][Object]$item
)
[void]
[[Link]]::LoadWithPartialName("[Link]")
$psjs = New-Object [Link]
Return ,$[Link]($item)
}
function ConvertTo-Json
{
[CmdletBinding()]
Param(
[Parameter(ValueFromPipeline=$true)][Object]$item
)
[void]
[[Link]]::LoadWithPartialName("[Link]")
$psjs = New-Object [Link]
Return $[Link]($item)
}
}
function PrintModePerPridFromRegistry
{
$vNextRegkey = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\
LicensingNext"
$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty 'property' -ErrorAction SilentlyContinue | Where-
Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like
"*volume"}
If ($null -Eq $vNextPrids)
{
CONOUT "`nNo registry keys found."
Return
}
CONOUT "`r"
$vNextPrids | ForEach `
{
$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_
Switch ($mode)
{
2 { $mode = "vNext"; Break }
3 { $mode = "Device"; Break }
Default { $mode = "Legacy"; Break }
}
CONOUT "$_ = $mode"
}
}
function PrintSharedComputerLicensing
{
$scaRegKey = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration"
$scaValue = Get-ItemProperty -Path $scaRegKey -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction
SilentlyContinue
$scaRegKey2 = "HKLM:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing"
$scaValue2 = Get-ItemProperty -Path $scaRegKey2 -ErrorAction SilentlyContinue
| Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction
SilentlyContinue
$scaPolicyKey = "HKLM:\SOFTWARE\Policies\Microsoft\Office\16.0\Common\
Licensing"
$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction
SilentlyContinue | Select-Object -ExpandProperty "SharedComputerLicensing" -
ErrorAction SilentlyContinue
If ($null -Eq $scaValue -And $null -Eq $scaValue2 -And $null -Eq
$scaPolicyValue)
{
CONOUT "`nNo registry keys found."
Return
}
$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue
If ($scaModeValue -Eq 0)
{
$scaMode = "Disabled"
}
If ($scaModeValue -Eq 1)
{
$scaMode = "Enabled"
}
CONOUT "`nStatus: $scaMode"
CONOUT "`r"
$tokenFiles = $null
$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing"
If (Test-Path $tokenPath)
{
$tokenFiles = Get-ChildItem -Path $tokenPath -Filter "*authString*" -
Recurse | Where-Object { !$_.PSIsContainer }
}
If ($null -Eq $tokenFiles -Or $[Link] -Eq 0)
{
CONOUT "No tokens found."
Return
}
$tokenFiles | ForEach `
{
$tokenParts = (Get-Content -Encoding Unicode -Path
$_.FullName).Split('_')
$output = New-Object PSObject
$output | Add-Member 8 'ACID' $tokenParts[0];
$output | Add-Member 8 'User' $tokenParts[3];
$output | Add-Member 8 'NotBefore' $tokenParts[4];
$output | Add-Member 8 'NotAfter' $tokenParts[5];
Write-Output $output
}
}
function PrintLicensesInformation
{
Param(
[ValidateSet("NUL", "Device")]
[String]$mode
)
If ($mode -Eq "NUL")
{
$licensePath = "${env:LOCALAPPDATA}\Microsoft\Office\Licenses"
}
ElseIf ($mode -Eq "Device")
{
$licensePath = "${env:PROGRAMDATA}\Microsoft\Office\Licenses"
}
$licenseFiles = $null
If (Test-Path $licensePath)
{
$licenseFiles = Get-ChildItem -Path $licensePath -Recurse | Where-
Object { !$_.PSIsContainer }
}
If ($null -Eq $licenseFiles -Or $[Link] -Eq 0)
{
CONOUT "`nNo licenses found."
Return
}
$licenseFiles | ForEach `
{
$license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-
Json).License
$decodedLicense =
[[Link]]::[Link]([[Link]]::FromBase64String($license)
) | ConvertFrom-Json
$licenseType = $[Link]
If ($null -Ne $[Link])
{
$expiry = [[Link]]::Parse($[Link],
$null, 'AdjustToUniversal')
}
Else
{
$expiry = New-Object [Link]
}
$licenseState = "Grace"
If ((Get-Date) -Gt (Get-Date $[Link]))
{
$licenseState = "RFM"
}
ElseIf ((Get-Date) -Lt (Get-Date $expiry))
{
$licenseState = "Licensed"
}
$output = New-Object PSObject
$output | Add-Member 8 'File' $_.PSChildName;
$output | Add-Member 8 'Version' $_.[Link];
$output | Add-Member 8 'Type' "User|${licenseType}";
$output | Add-Member 8 'Product' $[Link];
$output | Add-Member 8 'Acid' $[Link];
If ($mode -Eq "Device") { $output | Add-Member 8 'DeviceId'
$[Link]; }
$output | Add-Member 8 'LicenseState' $licenseState;
$output | Add-Member 8 'EntitlementStatus' $[Link];
$output | Add-Member 8 'EntitlementExpiration' ("N/A",
$[Link])[!($null -eq $[Link])];
$output | Add-Member 8 'ReasonCode' ("N/A", $[Link])
[!($null -eq $[Link])];
$output | Add-Member 8 'NotBefore' $[Link];
$output | Add-Member 8 'NotAfter' $[Link];
$output | Add-Member 8 'NextRenewal'
$[Link];
$output | Add-Member 8 'TenantId' ("N/A",
$[Link])[!($null -eq $[Link])];
#$[Link] | foreach { $ht = @{} } { $ht[$_.Name] =
$_.Value } { $output = $ht | ConvertTo-Json }
Write-Output $output
}
}
function vNextDiagRun
{
$fNUL = ([[Link]]::Exists("${env:LOCALAPPDATA}\Microsoft\Office\
Licenses")) -and ([[Link]]::GetFiles("${env:LOCALAPPDATA}\Microsoft\Office\
Licenses", "*", 1).Length -GT 0)
$fDev = ([[Link]]::Exists("${env:PROGRAMDATA}\Microsoft\Office\
Licenses")) -and ([[Link]]::GetFiles("${env:PROGRAMDATA}\Microsoft\Office\
Licenses", "*", 1).Length -GT 0)
$rPID = $null -NE (GP "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\
LicensingNext" -EA 0 | select -Expand 'property' -EA 0 | where -Filter
{$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"})
$rSCA = $null -NE (GP "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\
Configuration" -EA 0 | select -Expand "SharedComputerLicensing" -EA 0)
$rSCL = $null -NE (GP "HKLM:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing"
-EA 0 | select -Expand "SharedComputerLicensing" -EA 0)
if (($fNUL -Or $fDev -Or $rPID -Or $rSCA -Or $rSCL) -EQ $false) {
Return
}
& $isAll
CONOUT "$line2"
CONOUT "=== Office vNext Status ==="
CONOUT "$line2"
CONOUT "`n========== Mode per ProductReleaseId =========="
PrintModePerPridFromRegistry
CONOUT "`n========== Shared Computer Licensing =========="
PrintSharedComputerLicensing
CONOUT "`n========== vNext licenses ==========="
PrintLicensesInformation -Mode "NUL"
CONOUT "`n========== Device licenses =========="
PrintLicensesInformation -Mode "Device"
CONOUT "$line3"
CONOUT "`r"
}
#endregion
#region clic
<#
;;; Source: [Link]
;;; Powershell port: abbodi1406
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#>
function InitializeDigitalLicenseCheck {
$CAB = [[Link]]
$[Link]($CAB::new([[Link]
te].GetConstructor(@()), @()))
$[Link]($CAB::new([[Link]].G
etConstructor(@([String])), @('F2DCB80D-0670-44BC-9002-CD18688730AF')))
$[Link]($CAB::new([[Link]
ribute].GetConstructor(@([Int16])), @([Int16]1)))
$IEUM = $[Link]()
}
function PrintStateData {
$pwszStateData = 0
$cbSize = 0
if ($Win32::SLGetWindowsInformation(
"Security-SPP-Action-StateData",
[ref]$null,
[ref]$cbSize,
[ref]$pwszStateData
)) {
return $FALSE
}
[string[]]$pwszStateString = $Marshal::PtrToStringUni($pwszStateData) -
replace ";", "`n "
CONOUT (" $pwszStateString")
$Marshal::FreeHGlobal($pwszStateData)
return $TRUE
}
function PrintLastActivationHResult {
$pdwLastHResult = 0
$cbSize = 0
if ($Win32::SLGetWindowsInformation(
"Security-SPP-LastWindowsActivationHResult",
[ref]$null,
[ref]$cbSize,
[ref]$pdwLastHResult
)) {
return $FALSE
}
$Marshal::FreeHGlobal($pdwLastHResult)
return $TRUE
}
function PrintLastActivationTime {
$pqwLastTime = 0
$cbSize = 0
if ($Win32::SLGetWindowsInformation(
"Security-SPP-LastWindowsActivationTime",
[ref]$null,
[ref]$cbSize,
[ref]$pqwLastTime
)) {
return $FALSE
}
$actTime = $Marshal::ReadInt64($pqwLastTime)
if ($actTime -ne 0) {
CONOUT (" LastActivationTime={0}" -f
[DateTime]::FromFileTimeUtc($actTime).ToString("yyyy/MM/dd:HH:mm:ss"))
}
$Marshal::FreeHGlobal($pqwLastTime)
return $TRUE
}
function PrintIsWindowsGenuine {
$dwGenuine = 0
if ($Win32::SLIsWindowsGenuineLocal([ref]$dwGenuine)) {
return $FALSE
}
if ($dwGenuine -lt 5) {
CONOUT (" IsWindowsGenuine={0}" -f $ppwszGenuineStates[$dwGenuine])
} else {
CONOUT (" IsWindowsGenuine={0}" -f $dwGenuine)
}
return $TRUE
}
function PrintDigitalLicenseStatus {
try {
. InitializeDigitalLicenseCheck
$ComObj = New-Object -Com
[Link]
} catch {
return $FALSE
}
$parameters = 1, $null
if ([[Link]].GetMethod("AcquireModernLicenseForWindows").Invoke($ComObj,
$parameters)) {
return $FALSE
}
$dwReturnCode = $parameters[1]
[bool]$bDigitalLicense = $FALSE
return $TRUE
}
function PrintSubscriptionStatus {
$dwSupported = 0
if ($Win32::SLGetWindowsInformationDWORD($pwszPolicy, [ref]$dwSupported)) {
return $FALSE
}
$pStatus = $Marshal::AllocHGlobal($Marshal::SizeOf([Type]$SubStatus))
if ($Win32::ClipGetSubscriptionStatus([ref]$pStatus)) {
return $FALSE
}
$sStatus = [Activator]::CreateInstance($SubStatus)
$sStatus = $Marshal::PtrToStructure($pStatus, [Type]$SubStatus)
$Marshal::FreeHGlobal($pStatus)
if ($[Link] -eq 0) {
return $TRUE
}
return $TRUE
}
function ClicRun
{
& $isAll
CONOUT "Client Licensing Check information:"
$null = PrintStateData
$null = PrintLastActivationHResult
$null = PrintLastActivationTime
$null = PrintIsWindowsGenuine
if ($DllDigital) {
$null = PrintDigitalLicenseStatus
}
if ($DllSubscription) {
$null = PrintSubscriptionStatus
}
CONOUT "$line3"
& $noAll
}
#endregion
#region clc
function clcGetExpireKrn
{
$tData = 0
$cData = 0
$bData = 0
$hrRet = $Win32::SLGetWindowsInformation(
"Kernel-ExpirationDate",
[ref]$tData,
[ref]$cData,
[ref]$bData
)
$year = $Marshal::ReadInt16($bData, 0)
if ($year -EQ 0 -Or $year -EQ 1601)
{
$rData = $null
}
else
{
$rData = '{0}/{1}/{2}:{3}:{4}:{5}' -f $year,
$Marshal::ReadInt16($bData, 2), $Marshal::ReadInt16($bData, 4),
$Marshal::ReadInt16($bData, 6), $Marshal::ReadInt16($bData, 8),
$Marshal::ReadInt16($bData, 10)
}
#$Marshal::FreeHGlobal($bData)
return $rData
}
function clcGetExpireSys
{
$kuser = $Marshal::ReadInt64((New-Object IntPtr(0x7FFE02C8)))
if ($kuser -EQ 0)
{
return $null
}
$rData = [DateTime]::FromFileTimeUtc($kuser).ToString('yyyy/MM/dd:HH:mm:ss')
return $rData
}
function clcGetLicensingState($dwState)
{
if ($dwState -EQ 5) {
$dwState = 3
} elseif ($dwState -EQ 3 -Or $dwState -EQ 4 -Or $dwState -EQ 6) {
$dwState = 2
} elseif ($dwState -GT 6) {
$dwState = 4
}
function clcGetGenuineState($AppId)
{
$dwGenuine = 0
if ($NT7) {
$hrRet = $Win32::SLIsWindowsGenuineLocal([ref]$dwGenuine)
} else {
$hrRet = $Win32::SLIsGenuineLocal([ref][Guid]$AppId, [ref]$dwGenuine,
0)
}
if ($hrRet)
{
$dwGenuine = 4
}
if ($dwGenuine -LT 5) {
$rData = '{0}' -f $ppwszGenuineStates[$dwGenuine]
} else {
$rData = $dwGenuine
}
return $rData
}
function ClcRun
{
$prs = $script:primary[0]
if ($null -EQ $prs) {
return
}
& $isAll
CONOUT "Client Licensing Check information:"
CONOUT "$line3"
& $noAll
}
#endregion
$SysPath = "$env:SystemRoot\System32"
if (Test-Path "$env:SystemRoot\Sysnative\[Link]") {
$SysPath = "$env:SystemRoot\Sysnative"
}
$wslp = "SoftwareLicensingProduct"
$wsls = "SoftwareLicensingService"
$oslp = "OfficeSoftwareProtectionProduct"
$osls = "OfficeSoftwareProtectionService"
$winApp = "55c92734-d682-4d71-983e-d6ec3f16059f"
$o14App = "59a52881-a989-479d-af46-f275c6370663"
$o15App = "0ff1ce15-a989-479d-af46-f275c6370663"
$isSub = ($winbuild -GE 26000) -And (Select-String -Path "$SysPath\wbem\[Link]"
-Encoding unicode -Pattern "SubscriptionType")
$DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\
[Link]")
$DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\[Link]")
$VLActTypes = @("All", "AD", "KMS", "Token")
$OPKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
OfficeSoftwareProtectionPlatform"
$SPKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
SoftwareProtectionPlatform"
$SLKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
$NSKeyPath = "HKEY_USERS\S-1-5-20\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL"
$propPrd = 'Name', 'Description', 'TrustedTime', 'VLActivationType'
$propPkey = 'PartialProductKey', 'Channel', 'DigitalPID', 'DigitalPID2'
$propKMSServer = 'KeyManagementServiceCurrentCount',
'KeyManagementServiceTotalRequests', 'KeyManagementServiceFailedRequests',
'KeyManagementServiceUnlicensedRequests', 'KeyManagementServiceLicensedRequests',
'KeyManagementServiceOOBGraceRequests', 'KeyManagementServiceOOTGraceRequests',
'KeyManagementServiceNonGenuineGraceRequests',
'KeyManagementServiceNotificationRequests'
$propKMSClient = 'CustomerPID', 'KeyManagementServiceName',
'KeyManagementServicePort', 'DiscoveredKeyManagementServiceName',
'DiscoveredKeyManagementServicePort', 'DiscoveredKeyManagementServiceIpAddress',
'VLActivationInterval', 'VLRenewalInterval', 'KeyManagementServiceLookupDomain'
$propKMSVista = 'CustomerPID', 'KeyManagementServiceName', 'VLActivationInterval',
'VLRenewalInterval'
$propADBA = 'ADActivationObjectName', 'ADActivationObjectDN',
'ADActivationCsvlkPID', 'ADActivationCsvlkSkuID'
$propAVMA = 'InheritedActivationId', 'InheritedActivationHostMachineName',
'InheritedActivationHostDigitalPid2', 'InheritedActivationActivationTime'
$primary = @()
$ppwszGenuineStates = @(
"SL_GEN_STATE_IS_GENUINE",
"SL_GEN_STATE_INVALID_LICENSE",
"SL_GEN_STATE_TAMPERED",
"SL_GEN_STATE_OFFLINE",
"SL_GEN_STATE_LAST"
)
$ppwszLicensingStates = @(
"SL_LICENSING_STATUS_UNLICENSED",
"SL_LICENSING_STATUS_LICENSED",
"SL_LICENSING_STATUS_IN_GRACE_PERIOD",
"SL_LICENSING_STATUS_NOTIFICATION",
"SL_LICENSING_STATUS_LAST"
)
$offsvc = "osppsvc"
if ($NT7 -Or -Not $NT6) {$winsvc = "sppsvc"} else {$winsvc = "slsvc"}
if (Test-Path "$SysPath\[Link]") {
$SLdll = '[Link]'
} elseif (Test-Path "$SysPath\[Link]") {
$SLdll = '[Link]'
} else {
$WsppHook = 0
}
if ($OsppHook -NE 0) {
$OLdll = (strGetRegistry $OPKeyPath "Path") + '[Link]'
if (!(Test-Path "$OLdll")) {$OsppHook = 0}
}
if ($WsppHook -NE 0) {
if ($NT6 -And -Not $NT7 -And -Not $Admin) {
if ($null -EQ [[Link]]::GetProcessesByName("$winsvc")
[0].ProcessName) {$WsppHook = 0; CONOUT "`nError: failed to start $winsvc
Service.`n"}
} else {
try {sasv $winsvc -EA 1} catch {$WsppHook = 0; CONOUT "`nError: failed
to start $winsvc Service.`n"}
}
}
if ($WsppHook -NE 0) {
. InitializePInvoke $SLdll $false
$hSLC = 0
[void]$Win32::SLOpen([ref]$hSLC)
if ($[Link] -GT 0)
{
echoWindows
ParseList $wslp $winApp $cW1nd0ws
}
elseif ($NT6)
{
echoWindows
CONOUT "Error: product key not found.`n"
}
if ($NT8) {
ClicRun
}
$doMSG = 1
if ($[Link] -GT 0)
{
CheckOhook
echoOffice
ParseList $wslp $o15App $c0ff1ce15
}
if ($[Link] -GT 0)
{
echoOffice
ParseList $wslp $o14App $c0ff1ce14
}
if ($hSLC) {
[void]$Win32::SLClose($hSLC)
}
if ($OsppHook -NE 0) {
try {sasv $offsvc -EA 1} catch {$OsppHook = 0; CONOUT "`nError: failed to
start $offsvc Service.`n"}
}
if ($OsppHook -NE 0) {
. InitializePInvoke "$OLdll" $true
$hSLC = 0
[void]$Win32::SLOpen([ref]$hSLC)
if ($[Link] -GT 0)
{
echoOffice
ParseList $oslp $o15App $ospp15
}
if ($[Link] -GT 0)
{
echoOffice
ParseList $oslp $o14App $ospp14
}
if ($hSLC) {
[void]$Win32::SLClose($hSLC)
}
if ($NT7) {
vNextDiagRun
}
ExitScript 0
:sppmgr:
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:troubleshoot
set
"line=_____________________________________________________________________________
____________________"
:at_menu
cls
title Troubleshoot %masver%
if not defined terminal mode 77, 30
echo:
echo:
echo:
echo:
echo: _______________________________________________________________
echo:
call :dk_color2 %_White% " [1] " %_Green% "Help"
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 :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard :"
choice /C:1234560 /N
set _erl=%errorlevel%
if %_erl%==7 exit /b
if %_erl%==6 start %mas%fix-wpa-registry &goto at_menu
if %_erl%==5 goto:retokens
if %_erl%==4 goto:fixwmi
if %_erl%==3 goto:sfcscan
if %_erl%==2 goto:dism_rest
if %_erl%==1 (start %selfgit% & start %github% & start %mas%troubleshoot & goto
at_menu)
goto :at_menu
::=================================================================================
=======================================================
:dism_rest
cls
if not defined terminal mode 98, 30
title Dism /English /Online /Cleanup-Image /RestoreHealth
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
echo:
if defined _int (
echo Checking Internet Connection [Connected]
) else (
call :dk_color2 %_White% " " %Red% "Checking Internet Connection [Not
connected]"
)
echo %line%
echo:
echo DISM uses Windows Update to provide replacement files required to fix
corruption.
echo This will take 5-15 minutes or more..
echo %line%
echo:
echo Notes:
echo:
call :dk_color2 %_White% " - " %Gray% "Make sure the internet is connected."
call :dk_color2 %_White% " - " %Gray% "Make sure that Windows update is
properly working."
echo:
echo %line%
echo:
choice /C:09 /N /M "> [9] Continue [0] Go back : "
if %errorlevel%==1 goto at_menu
cls
if not defined terminal mode 110, 30
echo:
echo Applying the command...
echo dism /english /online /cleanup-image /restorehealth
dism /english /online /cleanup-image /restorehealth
timeout /t 5 %nul1%
copy /y /b "%SystemRoot%\logs\cbs\[Link]" "%SystemRoot%\logs\cbs\cbs_%_time%.log"
%nul%
copy /y /b "%SystemRoot%\logs\DISM\[Link]" "%SystemRoot%\logs\DISM\dism_%_time
%.log" %nul%
echo:
call :dk_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on your
desktop."
goto :at_back
::=================================================================================
=======================================================
:sfcscan
cls
if not defined terminal mode 98, 30
title sfc /scannow
echo:
echo %line%
echo:
echo SFC will repair missing or corrupted system files.
echo It is recommended you run the DISM option first before this one.
echo This will take 10-15 minutes or more..
echo:
echo If SFC could not fix something, then run the command again to see if it
may be able
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 "> [9] Continue [0] Go back : "
if %errorlevel%==1 goto at_menu
cls
for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%
%a
echo:
echo Applying the command...
echo sfc /scannow
sfc /scannow
timeout /t 5 %nul1%
copy /y /b "%SystemRoot%\logs\cbs\[Link]" "%SystemRoot%\logs\cbs\cbs_%_time%.log"
%nul%
echo:
call :dk_color %Gray% "The CBS log was copied to the AT_Logs folder on your
Desktop."
goto :at_back
::=================================================================================
=======================================================
:retokens
cls
if not defined terminal (
mode 125, 32
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=31;$[Link]=200;$[Link]=$W;
$[Link]=$B;}" %nul%
)
title Fix Licensing ^(ClipSVC ^+ SPP ^+ OSPP^)
echo:
echo %line%
echo:
echo Notes:
echo:
echo - This option helps in troubleshooting activation issues.
echo:
echo - This option will:
echo - Deactivate Windows and Office, you may need to reactivate.
echo If Windows is activated with motherboard / OEM / Digital license
echo then Windows will activate itself again.
echo:
echo - Clear ClipSVC, SPP and OSPP licenses.
echo - Fix permissions of SPP tokens folder and registries.
echo - Trigger the repair option for Office.
echo:
call :dk_color2 %_White% " - " %Blue% "Apply this option only when it is
necessary."
echo:
echo %line%
echo:
choice /C:09 /N /M "> [9] Continue [0] Go back : "
if %errorlevel%==1 goto at_menu
::=================================================================================
=======================================================
:: Rebuild ClipSVC Licences
cls
:cleanlicensing
echo:
echo %line%
echo:
call :dk_color %Blue% "Rebuilding ClipSVC Licenses..."
echo:
echo:
echo Applying the command to clean ClipSVC Licenses...
echo rundll32 [Link],ClipCleanUpState
rundll32 [Link],ClipCleanUpState
:: 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.
echo:
echo Deleting a Volatile ^& Protected Registry Key...
echo [%RegKey%]
reg query "%RegKey%" %nul% && (
call :dk_color %Red% "[Failed]"
echo Reboot your machine using the restart option, that will delete this registry
key automatically.
) || (
echo [Successful]
)
:: Clear HWID token related registry to fix activation incase there is any
corruption
echo:
echo Deleting IdentityCRL Registry Key...
echo [%_ident%]
reg delete "%_ident%" /f %nul%
reg query "%_ident%" %nul% && (
call :dk_color %Red% "[Failed]"
) || (
echo [Successful]
)
echo:
if %winbuild% GTR 10240 (
echo Deleting folder %ProgramData%\Microsoft\Windows\ClipSVC\
rmdir /s /q "C:\ProgramData\Microsoft\Windows\ClipSvc" %nul%
if exist "%ProgramData%\Microsoft\Windows\ClipSVC\" (
call :dk_color %Red% "[Failed]"
) else (
echo [Successful]
)
echo:
echo Rebuilding the %ProgramData%\Microsoft\Windows\ClipSVC\ folder...
%psc% Start-Service ClipSVC %nul%
timeout /t 3 %nul%
if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" timeout /t 5 %nul%
if not exist "%ProgramData%\Microsoft\Windows\ClipSVC\" (
call :dk_color %Red% "[Failed]"
) else (
echo [Successful]
)
)
echo:
echo Restarting wlidsvc ^& LicenseManager services...
for %%# in (wlidsvc LicenseManager) do (%psc% "Start-Job { Restart-Service %%# } |
Wait-Job -Timeout 20 | Out-Null")
::=================================================================================
=======================================================
echo:
echo %line%
echo:
call :dk_color %Blue% "Rebuilding SPP licensing tokens..."
echo:
set tokenstore=
set badregistry=
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\SoftwareProtectionPlatform" /v TokenStore %nul6%') do call set
"tokenstore=%%b"
if %winbuild% GEQ 9200 if /i not "%tokenstore%"=="%SysPath%\spp\store" if /i not
"%tokenstore%"=="%SysPath%\spp\store\2.0" if /i not "%tokenstore%"=="%SysPath%\spp\
store_test\2.0" (
set badregistry=1
echo:
call :dk_color %Red% "Correct path not found in TokenStore Registry [%tokenstore%]"
)
echo:
echo Stopping %_slser% service...
%psc% Stop-Service %_slser% -force %nul%
set w=
set _sppint=
for %%# in (SppEx%w%[Link] %_slexe%) do (reg query "HKLM\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Ima%w%ge File Execu%w%tion Options\%%#" %nul% && (set
_sppint=1))
if defined _sppint (
echo:
echo Removing SPP IFEO registry keys...
for %%# in (SppE%w%[Link] %_slexe%) do (reg delete "HKLM\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Ima%w%ge File Execu%w%tion Options\%%#" /f %nul%)
)
echo:
call :scandat delete
call :scandat check
if defined token (
echo:
call :dk_color %Red% "Failed to delete .dat files."
echo:
)
if defined _vis (
%psc% Start-Service %_slser% %nul%
)
echo:
echo Reinstalling system licenses...
%psc% "$sls = Get-WmiObject SoftwareLicensingService;
$f=[[Link]]::ReadAllText('!_batp!') -split ':xrm\:.*';.
([scriptblock]::Create($f[1])); ReinstallLicenses" %nul%
if %errorlevel% NEQ 0 %psc% "$sls = Get-WmiObject SoftwareLicensingService;
$f=[[Link]]::ReadAllText('!_batp!') -split ':xrm\:.*';.
([scriptblock]::Create($f[1])); ReinstallLicenses" %nul%
if %errorlevel% EQU 0 (
echo [Successful]
) else (
call :dk_color %Red% "[Failed]"
)
echo:
if not defined token (
call :dk_color %Red% "Failed to rebuild [Link] file."
) else (
echo [Link] file was rebuilt successfully.
)
::=================================================================================
=======================================================
echo:
echo %line%
echo:
call :dk_color %Blue% "Rebuilding OSPP licensing tokens..."
echo:
sc qc osppsvc %nul% || (
echo OSPP-based Office is not installed.
echo Skipping rebuilding OSPP tokens...
goto :repairoffice
)
echo:
echo Stopping osppsvc service...
%psc% Stop-Service osppsvc -force %nul%
echo:
call :scandatospp delete
call :scandatospp check
if defined token (
echo:
call :dk_color %Red% "Failed to delete .dat files."
echo:
)
echo:
echo Starting osppsvc service to generate [Link]...
%psc% Start-Service osppsvc %nul%
call :scandatospp check
if not defined token (
%psc% Stop-Service osppsvc -force %nul%
%psc% Start-Service osppsvc %nul%
timeout /t 3 %nul%
)
echo:
if not defined token (
call :dk_color %Red% "Failed to rebuild [Link] file."
) else (
echo [Link] file was rebuilt successfully.
)
::=================================================================================
=======================================================
:repairoffice
echo:
echo %line%
echo:
call :dk_color %Blue% "Repairing Office licenses..."
echo:
reg query %_68%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_68=Office 14.0 C2R
x86/x64" & set "c2r14repair68=")
reg query %_86%\14.0\CVH /f Click2run /k %nul% && (set "c2r14_86=Office 14.0 C2R
x86" & set "c2r14repair86=")
set uwp16=
if %winbuild% GEQ 10240 (
%psc% "Get-AppxPackage -name "[Link]"" | find /i "Office" %nul1%
&& set uwp16=Office 16.0 UWP
)
set /a counter=0
echo Checking installed Office versions...
echo:
for %%# in (
"%msi14_68%"
"%msi14_86%"
"%msi15_68%"
"%msi15_86%"
"%msi16_68%"
"%msi16_86%"
"%c2r14_68%"
"%c2r14_86%"
"%c2r15_68%"
"%c2r15_86%"
"%c2r16_68%"
"%c2r16_86%"
"%uwp16%"
) 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 is recommended to only install one version of Office.
echo ________________________________________________________________
echo:
)
if %counter% EQU 0 (
echo:
echo Office ^(2010 and later^) is not installed.
goto :repairend
echo:
) else (
echo:
call :dk_color %_Yellow% "A new window will appear, in that window you need to
select [Quick Repair] option."
if defined terminal (
call :dk_color %_Yellow% "Press [0] to continue..."
choice /c 0 /n
) else (
call :dk_color %_Yellow% "Press any key to continue..."
pause %nul1%
)
)
if defined uwp16 (
echo:
echo Skipping repair for Office 16.0 UWP...
echo:
)
set c2r14=
if defined c2r14_68 set c2r14=1
if defined c2r14_86 set c2r14=1
if defined c2r14 (
echo:
echo Skipping repair for Office 14.0 C2R...
echo:
)
:repairend
echo:
echo %line%
echo:
echo:
call :dk_color %Green% "Finished"
goto :at_back
:getc2rrepair
:getrepairsetup
::=================================================================================
=======================================================
:fixwmi
cls
if not defined terminal mode 98, 34
title Fix WMI
:: [Link]
corruption-or-not/ba-p/375484
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
%eline%
echo Rebuilding WMI is not recommended on Windows Server, aborting...
goto :at_back
)
echo:
echo Checking WMI
call :checkwmi
if defined error (
%psc% Stop-Service Winmgmt -force %nul%
winmgmt /salvagerepository %nul%
call :checkwmi
)
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:
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 "STOPPED" %nul% && (
echo [Successful]
) || (
call :dk_color %Red% "[Failed]"
echo:
call :dk_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 [2] Revert Back Changes :"
if !errorlevel!==1 (sc config Winmgmt start= auto %nul%&goto :at_back)
echo:
echo Restarting...
shutdown -t 5 -r
exit
)
echo:
echo Deleting WMI repository
rmdir /s /q "%SysPath%\wbem\repository\" %nul%
if exist "%SysPath%\wbem\repository\" (
call :dk_color %Red% "[Failed]"
) else (
echo [Successful]
)
echo:
echo Enabling Winmgmt service
sc config Winmgmt start= auto %nul%
if %errorlevel% EQU 0 (
echo [Successful]
) else (
call :dk_color %Red% "[Failed]"
)
call :checkwmi
if not defined error (
echo:
echo Checking WMI
call :dk_color %Green% "[Working]"
goto :at_back
)
echo:
echo Registering .dll's and Compiling .mof's, .mfl's
call :registerobj %nul%
echo:
echo Checking WMI
call :checkwmi
if defined error (
call :dk_color %Red% "[Not Responding]"
echo:
echo Run [Dism RestoreHealth] and [SFC Scannow] options and make sure there are no
errors.
) else (
call :dk_color %Green% "[Working]"
)
goto :at_back
:registerobj
:: [Link]
winmgmt /salvagerepository
winmgmt /resetrepository
exit /b
:checkwmi
:: [Link]
set error=
%psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property
CreationClassName" %nul2% | find /i "computersystem" %nul1%
if %errorlevel% NEQ 0 (set error=1& exit /b)
winmgmt /verifyrepository %nul%
if %errorlevel% NEQ 0 (set error=1& exit /b)
::=================================================================================
=======================================================
:at_back
echo:
echo %line%
echo:
if defined terminal (
call :dk_color %_Yellow% "Press [0] key to %_exitmsg%..."
choice /c 0 /n
) else (
call :dk_color %_Yellow% "Press any key to %_exitmsg%..."
pause %nul1%
)
goto :at_menu
::=================================================================================
=======================================================
:compresslog
:: [Link]
set "ddf="%SystemRoot%\Temp\%Random%%Random%%Random%%Random%""
%nul% del /q /f %ddf%
echo/.New Cabinet>%ddf%
echo/.set Cabinet=ON>>%ddf%
echo/.set CabinetFileCountThreshold=0;>>%ddf%
echo/.set Compress=ON>>%ddf%
echo/.set CompressionType=LZX>>%ddf%
echo/.set CompressionLevel=7;>>%ddf%
echo/.set CompressionMemory=21;>>%ddf%
echo/.set FolderFileCountThreshold=0;>>%ddf%
echo/.set FolderSizeThreshold=0;>>%ddf%
echo/.set GenerateInf=OFF>>%ddf%
echo/.set InfFileName=nul>>%ddf%
echo/.set MaxCabinetSize=0;>>%ddf%
echo/.set MaxDiskFileCount=0;>>%ddf%
echo/.set MaxDiskSize=0;>>%ddf%
echo/.set MaxErrors=1;>>%ddf%
echo/.set RptFileName=nul>>%ddf%
echo/.set UniqueFiles=ON>>%ddf%
for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%SystemRoot%\logs\%1"') do (
echo/"%%~fD" /inf=no;>>%ddf%
)
makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate="!desktop!\%2_%_time
%.cab"
del /q /f %ddf%
exit /b
::=================================================================================
=======================================================
:checkperms
:: This code checks if SPP has permission access to tokens folder and required
registry keys. Incorrect permissions are often set by gaming spoofers.
set permerror=
if not exist "%tokenstore%\" set "permerror=Error Found In Token Folder"
for %%# in (
"%tokenstore%+FullControl"
"HKLM:\SYSTEM\WPA+QueryValues, EnumerateSubKeys, WriteKey"
"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
SoftwareProtectionPlatform+SetValue"
) do for /f "tokens=1,2 delims=+" %%A in (%%#) do if not defined permerror (
%psc% "$acl = (Get-Acl '%%A' | fl | Out-String); if (-not ($acl -match 'NT
SERVICE\\sppsvc Allow %%B') -or ($acl -match 'NT SERVICE\\sppsvc Deny')) {Exit 2}"
%nul%
if !errorlevel!==2 (
if "%%A"=="%tokenstore%" (
set "permerror=Error Found In Token Folder"
) else (
set "permerror=Error Found In SPP Registries"
)
)
)
REM [Link]
issue-when-start-office-application
::=================================================================================
=======================================================
:fixsppperms:
# Fix perms for Token Folder
# [Link]
function Take-Permissions {
param($rootKey, $key, [[Link]]$sid = 'S-
1-5-32-545', $recurse = $true)
function Take-KeyPermissions {
param($rootKey, $key, $sid, $recurse, $recurseLevel = 0)
### Step 2 - get ownerships of key - it works only for current key
$regKey = [[Link]]::$[Link]($key,
'ReadWriteSubTree', 'TakeOwnership')
$acl = New-Object [Link]
$[Link]($sid)
$[Link]($acl)
### Step 4 - only for top-level key, change permissions for current key and
propagate it for subkeys
# to enable propagations for subkeys, it needs to execute Steps 2-3 for
each subkey (Step 5)
if ($recurseLevel -eq 0) {
$regKey = $[Link]('', 'ReadWriteSubTree',
'ChangePermissions')
$rule = New-Object
[Link]($sid, 'FullControl',
'ContainerInherit', 'None', 'Allow')
$[Link]($rule)
$[Link]($acl)
}
::=================================================================================
=======================================================
:scandat
set token=
for %%# in (
%SysPath%\spp\store_test\2.0\
%SysPath%\spp\store\
%SysPath%\spp\store\2.0\
%Systemdrive%\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\
SoftwareProtectionPlatform\
%Systemdrive%\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\
SoftwareLicensing\
) do (
if %1==check (
if exist %%#[Link] set token=%%#[Link]
)
if %1==delete (
if exist %%# (
%nul% dir /a-d /s "%%#*.dat" && (
attrib -r -s -h "%%#*.dat" /S
del /S /F /Q "%%#*.dat"
)
)
)
)
exit /b
:scandatospp
set token=
for %%# in (
%ProgramData%\Microsoft\OfficeSoftwareProtectionPlatform\
) do (
if %1==check (
if exist %%#[Link] set token=%%#[Link]
)
if %1==delete (
if exist %%# (
%nul% dir /a-d /s "%%#*.dat" && (
attrib -r -s -h "%%#*.dat" /S
del /S /F /Q "%%#*.dat"
)
)
)
)
exit /b
::=================================================================================
=======================================================
:regownstart
:regown:
$AssemblyBuilder = [AppDomain]::[Link](4, 1)
$ModuleBuilder = $[Link](2, $False)
$TypeBuilder = $[Link](0)
$acl = $[Link]()
$[Link]($Admin)
$[Link]($acl)
$rule = New-Object
[Link]($Admin,"FullControl","Allow")
$[Link]($rule)
$[Link]($acl)
:regown:
::=================================================================================
=======================================================
:: This option is not used in KMS38 anymore, it's here only to remove previous
versions protection.
:regdel:
param (
[switch]$protect
)
if($protect) {
$ruleArgs = @("$Admin", "Delete, SetValue", "ContainerInherit", "None", "Deny")
} else {
$ruleArgs = @("$Admin", "FullControl", "Allow")
}
$rule = [[Link]]::[Link]($ruleArgs)
$[Link]($rule)
$[Link]($acl)
:regdel:
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:change_winedition
:: To stage current edition while changing edition with CBS Upgrade Method, change
0 to 1 in below line
set _stg=0
set "line=echo
___________________________________________________________________________________
________"
cls
if not defined terminal mode 98, 30
title Change Windows Edition %masver%
echo:
echo Initializing...
echo:
for %%# in (
[Link]
[Link]
) do (
if not exist %SysPath%\%%# (
%eline%
echo [%SysPath%\%%#] file is missing, aborting...
echo:
call :dk_color %Blue% "Go back to Main Menu, select Troubleshoot and run DISM
Restore and SFC Scan options."
call :dk_color %Blue% "After that, restart system and try activation again."
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto dk_done
)
)
::=================================================================================
=======================================================
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_reflection
call :dk_ckeckwmic
call :dk_sppissue
::=================================================================================
=======================================================
::=================================================================================
=======================================================
set osedition=
set dismnotworking=
if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is
NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-
d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS
NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')"
if not defined osedition %chkedi% do if not errorlevel 1 (call set "osedition=%%a")
set branch=
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion" /v BuildBranch %nul6%') do set "branch=%%b"
::=================================================================================
=======================================================
set _target=
set _dtarget=
set _ptarget=
set _ntarget=
set _wtarget=
if %winbuild% GEQ 10240 for /f "tokens=4" %%a in ('dism /online /english /Get-
TargetEditions ^| findstr /i /c:"Target Edition : "') do (if defined _dtarget (set
"_dtarget= !_dtarget! %%a ") else (set "_dtarget= %%a "))
if %winbuild% LSS 10240 for /f "tokens=4" %%a in ('%psc%
"$f=[[Link]]::ReadAllText('!_batp!') -split ':cbsxml\:.*';.
([scriptblock]::Create($f[1])) -GetTargetEditions;" ^| findstr /i /c:"Target
Edition : "') do (if defined _ptarget (set "_ptarget= !_ptarget! %%a ") else (set
"_ptarget= %%a "))
::=================================================================================
=======================================================
if defined _target (
for %%# in (%_target%) do (
echo %%# | findstr /i "CountrySpecific CloudEdition" %nul% || (set "_ntarget=!
_ntarget! %%#")
)
)
::=================================================================================
=======================================================
:cedmenu2
cls
if not defined terminal mode 98, 30
set inpt=
set counter=0
set verified=0
set targetedition=
%line%
echo:
call :dk_color %Gray% "You can change the edition [%osedition%] [%fullbuild%] to
one of the following."
%showeditionerror%
if defined dismnotworking (
call :dk_color %_Yellow% "Note - [Link] is not working."
if /i "%osedition:~0,4%"=="Core" call :dk_color %_Yellow% " - You will see more
edition options to choose once its changed to Pro."
)
%line%
echo:
%line%
echo:
echo [0] %_exitmsg%
echo:
call :dk_color %_Green% "Enter an option number using your keyboard and press Enter
to confirm:"
set /p inpt=
if "%inpt%"=="" goto cedmenu2
if "%inpt%"=="0" exit /b
for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1)
set targetedition=!targetedition%inpt%!
if %verified%==0 goto cedmenu2
::=================================================================================
=======================================================
cls
if not defined terminal mode con cols=105 lines=32
if /i "%targetedition%"=="ServerRdsh" (
echo:
call :dk_color %Red% "==== Note ===="
echo:
echo Once the edition is changed to "%targetedition%",
echo the system may not be able to properly change edition later.
echo:
echo [1] Continue Anyway
echo [0] Go Back
echo:
call :dk_color %_Green% "Choose a menu option using your keyboard [1,0] :"
choice /C:10 /N
if !errorlevel!==2 goto cedmenu2
if !errorlevel!==1 rem
)
cls
set key=
set _chan=
set _dismapi=0
::=================================================================================
=======================================================
:: Changing from Core to Non-Core & Changing editions in Windows build older than
17134 requires "changepk /productkey" or DISM Api method and restart
:: In other cases, editions can be changed instantly with "slmgr /ipk"
if %_dismapi%==1 (
if not defined terminal mode con cols=105 lines=40
call :ced_rebootflag
if defined rebootreq goto dk_done
)
cls
%line%
echo:
%showeditionerror%
if defined dismnotworking call :dk_color %_Yellow% "[Link] is not working."
echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]...
echo:
if %_dismapi%==1 (
call :dk_color %Green% "Notes -"
echo:
echo - Save your work before continuing, the system will auto-restart.
echo:
echo - You will need to activate with HWID option once the edition is changed.
%line%
echo:
choice /C:21 /N /M "[1] Continue [2] %_exitmsg% : "
if !errorlevel!==1 exit /b
)
::=================================================================================
=======================================================
if %_dismapi%==0 (
echo Installing %_chan% key [%key%]
echo:
if %_wmic% EQU 1 wmic path %sps% where __CLASS='%sps%' call InstallProductKey
ProductKey="%key%" %nul%
if %_wmic% EQU 0 %psc% "try { $null=(([WMISEARCHER]'SELECT Version FROM %sps
%').Get()).InstallProductKey('%key%'); exit 0 } catch { exit
$_.[Link] }" %nul%
set keyerror=!errorlevel!
cmd /c exit /b !keyerror!
if !keyerror! NEQ 0 set "keyerror=[0x!=ExitCode!]"
if !keyerror! EQU 0 (
call :dk_refresh
call :dk_color %Green% "[Successful]"
echo:
call :dk_color %Gray% "Reboot is required to fully change the edition."
) else (
call :dk_color %Red% "[Unsuccessful] [Error Code: !keyerror!]"
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
)
if %_dismapi%==1 (
echo:
echo Applying the DISM API method with %_chan% key %key%. Please wait...
echo:
call :ced_prep
if defined preperror goto dk_done
goto dk_done
::=================================================================================
=======================================================
:cbsmethod
cls
if not defined terminal (
mode con cols=105 lines=32
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=31;$[Link]=200;$[Link]=$W;
$[Link]=$B;}" %nul%
)
call :ced_rebootflag
if defined rebootreq goto dk_done
echo:
%showeditionerror%
if defined dismnotworking call :dk_color %_Yellow% "Note - [Link] is not
working."
echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]...
echo:
call :dk_color %Blue% "Important - Save your work before continuing, the system
will auto-restart."
echo:
choice /C:01 /N /M "[1] Continue [0] %_exitmsg% : "
if %errorlevel%==1 exit /b
echo:
echo Initializing...
echo:
call :ced_prep
if defined preperror goto dk_done
goto dk_done
::=================================================================================
=======================================================
:ced_change_server
cls
if not defined terminal (
mode con cols=105 lines=32
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=31;$[Link]=200;$[Link]=$W;
$[Link]=$B;}" %nul%
)
set key=
set _chan=
set "keyflow=Volume:GVLK Retail Volume:MAK OEM:NONSLP OEM:DM PGS:TB Retail:TB:Eval"
call :ced_targetSKU %targetedition%
if defined targetSKU call :ced_windowskey
if defined key if defined pkeychannel set _chan=%pkeychannel%
if not defined key call :changeeditiondata
call :ced_rebootflag
if defined rebootreq goto dk_done
cls
echo:
%showeditionerror%
if defined dismnotworking call :dk_color %_Yellow% "Note - [Link] is not
working."
echo Changing the current edition [%osedition%] %fullbuild% to [%targetedition%]...
echo:
call :ced_prep
if defined preperror goto dk_done
call :ced_postprep
%line%
goto dk_done
::=================================================================================
=======================================================
:ced_prep
set _time=
set preperror=
::=================================================================================
=======================================================
:ced_postprep
timeout /t 5 %nul1%
copy /y /b "%SystemRoot%\logs\cbs\[Link]" "%SystemRoot%\logs\cbs\cbs_%_time%.log"
%nul%
copy /y /b "%SystemRoot%\logs\DISM\[Link]" "%SystemRoot%\logs\DISM\dism_%_time
%.log" %nul%
echo:
if %winbuild% GEQ 9200 %psc% "if ((Get-WindowsOptionalFeature -Online -FeatureName
NetFx3).State -eq 'Enabled') {Write-Host 'Checking .NET Framework 3.5 Status -
Enabled'}"
echo Log files are copied to the ChangeEdition_Logs folder on your desktop.
echo:
call :dk_color %Blue% "In case there are errors, you should restart the system
before trying again."
echo:
set fixes=%fixes% %mas%change_edition_issues
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%change_edition_issues"
exit /b
::=================================================================================
=======================================================
:ced_edilist
if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is
NULL) get LicenseFamily /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-
d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL').Get()).LicenseFamily
^| %% {echo ('LicenseFamily='+$_)}" %nul6%')"
%chkedi% do call set "_wtarget= !_wtarget! %%a "
exit /b
::=================================================================================
=======================================================
:ced_rebootflag
set rebootreq=
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based
Servicing\RebootPending" %nul% && set rebootreq=1
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto
Update\RebootRequired" %nul% && set rebootreq=1
if defined rebootreq (
%eline%
echo Pending reboot flags found.
echo:
echo Make sure Windows is fully updated, restart the system and try again.
)
exit /b
::=================================================================================
=======================================================
:ced_windowskey
::=================================================================================
=======================================================
:ced_targetSKU
set k=%1
set targetSKU=
for %%# in ([Link]) do @if "%%~$PATH:#"=="" exit /b
call :dk_reflection
::=================================================================================
=======================================================
:: [Link]
:cbsxml:[
param (
[Parameter()]
[String]$SetEdition,
[Parameter()]
[Switch]$GetTargetEditions,
[Parameter()]
[Switch]$StageCurrent
)
function Get-AssemblyIdentity {
param (
[String]$PackageName
)
$PackageName = [String]$PackageName
$packageData = ($PackageName -split '~')
function Get-SxsName {
param (
[String]$PackageName
)
return $[Link]()
}
function Find-EditionXmlInSxs {
param (
[String]$Edition
)
if($[Link] -eq 0) {
continue
}
$package = $packages[-1].Name
$testPath = $winSxs + "\$package\" + $Edition + '[Link]'
return $null
}
function Find-EditionXml {
param (
[String]$Edition
)
function Write-UpgradeCandidates {
param (
[HashTable]$InstallCandidates
)
$editionCount = 0
Write-Host 'Editions that can be upgraded to:'
foreach($candidate in $[Link]) {
Write-Host "Target Edition : $candidate"
$editionCount++
}
if($editionCount -eq 0) {
Write-Host '(no editions are available)'
}
}
function Write-UpgradeXml {
param (
[Array]$RemovalCandidates,
[Array]$InstallCandidates,
[Boolean]$Stage
)
$removeAction = 'remove'
if($Stage) {
$removeAction = 'stage'
}
foreach($package in $InstallCandidates) {
Write-Output '<package action="install">'
Write-Output (Get-AssemblyIdentity -PackageName $package)
Write-Output '</package>'
}
foreach($package in $RemovalCandidates) {
Write-Output "<package action=`"$removeAction`">"
Write-Output (Get-AssemblyIdentity -PackageName $package)
Write-Output '</package>'
}
Write-Output '</servicing>'
Write-Output '</unattend>'
}
function Write-Usage {
Get-Help $script:[Link] -detailed
}
$version = '1.0'
$getTargetsParam = $[Link]
$stageCurrentParam = $[Link]
$removalCandidates = @();
$installCandidates = @{};
if((($state -eq 0x50) -or ($state -eq 0x70)) -and ($false -eq
($removalCandidates -contains $packageName))) {
$removalCandidates = $removalCandidates + @($packageName)
}
}
if($getTargetsParam) {
Write-UpgradeCandidates -InstallCandidates $installCandidates
Exit
}
Restart-Computer
:cbsxml:]
::=================================================================================
=======================================================
:dismapi:[
param (
[Parameter()]
[String]$TargetEdition,
[Parameter()]
[String]$Key
)
$AssemblyBuilder = [AppDomain]::[Link](4, 1)
$ModuleBuilder = $[Link](2, $False)
$TB = $[Link](0)
[void]$Dism::DismInitialize(2, 0, 0)
$Session = 0
[void]$Dism::DismOpenSession('DISM_{53BFAE52-B167-4E2F-A258-0A37B57FF845}', 0, 0,
[ref]$Session)
if (!$Dism::_DismSetEdition($Session, "$TargetEdition", "$Key", 0, 0, 0)) {
Restart-Computer
}
:dismapi:]
::=================================================================================
=======================================================
:: For Windows 10/11 editions, HWID key is listed where ever possible, in Server
versions, KMS key is listed where ever possible.
:: For Windows, generic keys are mentioned till 22000 and for Server, generic keys
are mentioned till 17763, later ones are extracted from the [Link]
:changeeditiondata
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
if %winbuild% GTR 17763 exit /b
) else (
if %winbuild% GEQ 22000 exit /b
)
if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-
Server*CorEdition~*.mum" (set Cor=Cor) else (set Cor=)
set w=
for %%# in (
XGVPP-NMH47-7TTHJ-W3FW7-8HV%w%2C__OEM:NONSLP_Enterprise
D6RD9-D4N8T-RT9QX-YW6YT-FCW%w%WJ______Retail_Starter
3V6Q6-NQXCX-V8YXR-9QCYV-QPF%w%CT__Volume:MAK_EnterpriseN
3NFXW-2T27M-2BDW6-4GHRV-68X%w%RX______Retail_StarterN
VK7JG-NPHTM-C97JM-9MPGT-3V6%w%6T______Retail_Professional
2B87N-8KFHP-DKV6R-Y2C8J-PKC%w%KT______Retail_ProfessionalN
4CPRK-NM3K3-X6XXQ-RXX86-WXC%w%HW______Retail_CoreN
N2434-X9D7W-8PF6X-8DV9T-8TY%w%MD______Retail_CoreCountrySpecific
BT79Q-G7N6G-PGBYW-4YWX6-6F4%w%BT______Retail_CoreSingleLanguage
YTMG3-N6DKC-DKB77-7M9GH-8HV%w%X7______Retail_Core
XKCNC-J26Q9-KFHD2-FKTHY-KD7%w%2Y__OEM:NONSLP_PPIPro
YNMGQ-8RYV3-4PGQ3-C8XTP-7CF%w%BY______Retail_Education
84NGF-MHBT6-FXBX8-QWJK7-DRR%w%8H______Retail_EducationN
KCNVH-YKWX8-GJJB9-H9FDT-6F7%w%W2__Volume:MAK_EnterpriseS_VB
43TBQ-NH92J-XKTM7-KT3KK-P39%w%PB__OEM:NONSLP_EnterpriseS_RS5
NK96Y-D9CD8-W44CQ-R8YTK-DYJ%w%WX__OEM:NONSLP_EnterpriseS_RS1
FWN7H-PF93Q-4GGP8-M8RF3-MDW%w%WW__OEM:NONSLP_EnterpriseS_TH
RQFNW-9TPM3-JQ73T-QV4VQ-DV9%w%PT__Volume:MAK_EnterpriseSN_VB
M33WV-NHY3C-R7FPM-BQGPT-239%w%PG__Volume:MAK_EnterpriseSN_RS5
2DBW3-N2PJG-MVHW3-G7TDK-9HK%w%R4__Volume:MAK_EnterpriseSN_RS1
NTX6B-BRYC2-K6786-F6MVQ-M7V%w%2X__Volume:MAK_EnterpriseSN_TH
G3KNM-CHG6T-R36X3-9QDG6-8M8%w%K9______Retail_ProfessionalSingleLanguage
HNGCC-Y38KG-QVK8D-WMWRK-X86%w%VK______Retail_ProfessionalCountrySpecific
DXG7C-N36C4-C4HTG-X4T3X-2YV%w%77______Retail_ProfessionalWorkstation
WYPNQ-8C467-V2W6J-TX4WX-WT2%w%RQ______Retail_ProfessionalWorkstationN
8PTT6-RNW4C-6V7J2-C2D3X-MHB%w%PB______Retail_ProfessionalEducation
GJTYN-HDMQY-FRR76-HVGC7-QPF%w%8P______Retail_ProfessionalEducationN
C4NTJ-CX6Q2-VXDMR-XVKGM-F9D%w%JC__Volume:MAK_EnterpriseG
46PN6-R9BK9-CVHKB-HWQ9V-MBJ%w%Y8__Volume:MAK_EnterpriseGN
NJCF7-PW8QT-3324D-688JX-2YV%w%66______Retail_ServerRdsh
XQQYW-NFFMW-XJPBH-K8732-CKF%w%FD______OEM:DM_IoTEnterprise
QPM6N-7J2WJ-P88HH-P3YRH-YY7%w%4H__OEM:NONSLP_IoTEnterpriseS
K9VKN-3BGWV-Y624W-MCRMQ-BHD%w%CD______Retail_CloudEditionN
KY7PN-VR6RX-83W6Y-6DDYQ-T6R%w%4W______Retail_CloudEdition
V3WVW-N2PV2-CGWC3-34QGF-VMJ%w%2C______Retail_Cloud
NH9J3-68WK7-6FB93-4K3DF-DJ4%w%F6______Retail_CloudN
2HN6V-HGTM8-6C97C-RK67V-JQP%w%FD______Retail_CloudE
WC2BQ-8NRM3-FDDYY-2BFGV-KHK%w%QY_Volume:GVLK_ServerStandard%Cor%_RS1
CB7KF-BWN84-R7R2Y-793K2-8XD%w%DG_Volume:GVLK_ServerDatacenter%Cor%_RS1
JCKRF-N37P4-C2D82-9YXRT-4M6%w%3B_Volume:GVLK_ServerSolution_RS1
QN4C6-GBJD2-FB422-GHWJK-GJG%w%2R_Volume:GVLK_ServerCloudStorage_RS1
VP34G-4NPPG-79JTQ-864T4-R3M%w%QX_Volume:GVLK_ServerAzureCor_RS1
9JQNQ-V8HQ6-PKB8H-GGHRY-R62%w%H6______Retail_ServerAzureNano_RS1
VN8D3-PR82H-DB6BJ-J9P4M-92F%w%6J______Retail_ServerStorageStandard_RS1
48TQX-NVK3R-D8QR3-GTHHM-8FH%w%XC______Retail_ServerStorageWorkgroup_RS1
2HXDN-KRXHB-GPYC7-YCKFJ-7FV%w%DG_Volume:GVLK_ServerDatacenterACor_RS3
PTXN8-JFHJM-4WC78-MPCBR-9W4%w%KR_Volume:GVLK_ServerStandardACor_RS3
) do (
for /f "tokens=1-4 delims=_" %%A in ("%%#") do if /i %targetedition%==%%C (
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
:change_offedition
set "line=echo
___________________________________________________________________________________
________"
cls
if not defined terminal mode 98, 30
title Change Office Edition %masver%
echo:
echo Initializing...
echo:
::=================================================================================
=======================================================
set spp=SoftwareLicensingProduct
set sps=SoftwareLicensingService
call :dk_reflection
call :dk_ckeckwmic
call :dk_sppissue
::=================================================================================
=======================================================
cls
set osedition=0
if %_wmic% EQU 1 set "chkedi=for /f "tokens=2 delims==" %%a in ('"wmic path %spp%
where (ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseDependsOn is
NULL AND PartialProductKey IS NOT NULL) get LicenseFamily /VALUE" %nul6%')"
if %_wmic% EQU 0 set "chkedi=for /f "tokens=2 delims==" %%a in ('%psc%
"(([WMISEARCHER]'SELECT LicenseFamily FROM %spp% WHERE ApplicationID=''55c92734-
d682-4d71-983e-d6ec3f16059f'' AND LicenseDependsOn is NULL AND PartialProductKey IS
NOT NULL').Get()).LicenseFamily ^| %% {echo ('LicenseFamily='+$_)}" %nul6%')"
%chkedi% do if not errorlevel 1 (call set "osedition=%%a")
if %osedition%==0 (
%eline%
echo Failed to detect OS Edition. Aborting...
echo:
call :dk_color %Blue% "To fix this issue, activate Windows from the main menu."
goto dk_done
)
::=================================================================================
=======================================================
set o16c2r=
set _68=HKLM\SOFTWARE\Microsoft\Office
set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office
call :ch_getinfo
::=================================================================================
=======================================================
for %%A in (
_oArch
_updch
_lang
_clversion
_version
_AudienceData
_oIds
_c2rXml
_c2rExe
_c2rCexe
_masterxml
) do (
if not defined %%A (
%eline%
echo Failed to find %%A. Aborting...
echo:
call :dk_color %Blue% "Download and install Office from below URL and try again."
set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
goto dk_done
)
)
set unsupbuild=
if %winbuild% LSS 10240 if %winbuild% GEQ 9200 if %verchk% GTR 16026 set
unsupbuild=1
if %winbuild% LSS 9200 if %verchk% GTR 12527 set unsupbuild=1
if defined unsupbuild (
%eline%
echo Unsupported Office %verchk% is installed on your Windows build version
%winbuild%.
echo Aborting...
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto dk_done
)
::=================================================================================
=======================================================
:oemenu
cls
set fixes=
if not defined terminal mode 76, 25
title Change Office Edition %masver%
echo:
echo:
echo:
echo:
echo ____________________________________________________________
echo:
echo [1] Change all editions
echo [2] Add edition
echo [3] Remove edition
echo:
echo [4] Add/Remove apps
echo ____________________________________________
echo:
echo [5] Change Office Update Channel
echo [0] %_exitmsg%
echo ____________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,3,4,5,0]"
choice /C:123450 /N
set _el=!errorlevel!
if !_el!==6 exit /b
if !_el!==5 goto :oe_changeupdchnl
if !_el!==4 goto :oe_editedition
if !_el!==3 goto :oe_removeedition
if !_el!==2 set change=0& goto :oe_edition
if !_el!==1 set change=1& goto :oe_edition
goto :oemenu
::=================================================================================
=======================================================
:oe_edition
cls
call :oe_chkinternet
if not defined _int (
goto :oe_goback
)
cls
if not defined terminal mode 76, 25
if %change%==1 (
title Change all editions %masver%
) else (
title Add edition %masver%
)
echo:
echo:
echo:
echo:
echo O365/Mondo editions have the latest features.
echo ____________________________________________________________
echo:
echo [1] Office Suites - Retail
echo [2] Office Suites - Volume
echo [3] Office SingleApps - Retail
echo [4] Office SingleApps - Volume
echo ____________________________________________
echo:
echo [0] Go Back
echo ____________________________________________________________
echo:
call :dk_color2 %_White% " " %_Green% "Choose a menu option using your
keyboard [1,2,3,4,0]"
choice /C:12340 /N
set _el=!errorlevel!
if !_el!==5 goto :oemenu
if !_el!==4 set list=SingleApps_Volume&goto :oe_editionchangepre
if !_el!==3 set list=SingleApps_Retail&goto :oe_editionchangepre
if !_el!==2 set list=Suites_Volume&goto :oe_editionchangepre
if !_el!==1 set list=Suites_Retail&goto :oe_editionchangepre
goto :oe_edition
::=================================================================================
=======================================================
:oe_editionchangepre
cls
set editedition=
call :ch_getinfo
call :oe_tempcleanup
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':getlist\:.*';.
([scriptblock]::Create($f[1]))"
:oe_editionchange
cls
if not defined terminal (
mode 98, 45
%psc% "&{$W=$[Link];$B=$[Link];
$[Link]=44;$[Link]=100;$[Link]=$W;
$[Link]=$B;}" %nul%
)
%line%
echo:
call :dk_color %Gray% "Installed Office editions: %_oIds%"
call :dk_color %Gray% "You can select one of the following Office Editions."
if %winbuild% LSS 10240 (
echo Unsupported products such as 2019/2021/2024 are excluded from this list.
) else (
for %%# in (2019 2021 2024) do (
find /i "%%#" "%SystemRoot%\Temp\%list%.txt" %nul1% || (
if defined _notfound (set _notfound=%%#, !_notfound!) else (set _notfound=%%#)
)
)
if defined _notfound call :dk_color %Gray% "Office !_notfound! is not in this list
because old version [%_version%] of Office is installed."
)
%line%
echo:
%line%
echo:
echo [0] Go Back
echo:
call :dk_color %_Green% "Enter an option number using your keyboard and press Enter
to confirm:"
set /p inpt=
if "%inpt%"=="" goto :oe_editionchange
if "%inpt%"=="0" (call :oe_tempcleanup & goto :oe_edition)
for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1)
set targetedition=!targetedition%inpt%!
if %verified%==0 goto :oe_editionchange
::=================================================================================
=======================================================
:oe_excludeappspre
cls
set suites=
echo %list% | find /i "Suites" %nul1% && (
set suites=1
%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split ':getappnames\:.*';.
([scriptblock]::Create($f[1]))"
if not exist %SystemRoot%\Temp\[Link] (
%eline%
echo Failed to generate available apps list.
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
goto :oe_goback
)
)
for %%# in (
Access
Excel
Lync
OneNote
Outlook
PowerPoint
Project
Publisher
Visio
Word
) do (
if defined suites (
find /i "%%#" "%SystemRoot%\Temp\[Link]" %nul1% && (set %%#_st=On) || (set %
%#_st=)
) else (
set %%#_st=
)
)
:oe_excludeapps
cls
if not defined terminal mode 98, 32
%line%
echo:
call :dk_color %Gray% "Target edition: %targetedition%"
call :dk_color %Gray% "To exclude the apps listed below from installation, toggle
them from On to Off."
if defined editedition call :dk_color %Gray% "Note: The On/Off status below does
not reflect the current status of the installed apps."
%line%
if defined suites echo:
if defined Access_st echo [A] Access : %Access_st%
if defined Excel_st echo [E] Excel : %Excel_st%
if defined OneNote_st echo [N] OneNote : %OneNote_st%
if defined Outlook_st echo [O] Outlook : %Outlook_st%
if defined PowerPoint_st echo [P] PowerPoint : %PowerPoint_st%
if defined Project_st echo [J] Project : %Project_st%
if defined Publisher_st echo [R] Publisher : %Publisher_st%
if defined Visio_st echo [V] Visio : %Visio_st%
if defined Word_st echo [W] Word : %Word_st%
echo:
if defined Lync_st echo [L] SkypeForBusiness : %Lync_st%
if defined OneDrive_st echo [D] OneDrive : %OneDrive_st%
if defined Teams_st echo [T] Teams : %Teams_st%
%line%
echo:
echo [1] Continue
echo [0] Go Back
%line%
echo:
call :dk_color %_Green% "Choose a menu option using your keyboard:"
choice /C:AENOPJRVWLDT10 /N
set _el=!errorlevel!
if !_el!==14 goto :oemenu
if !_el!==13 call :excludelist & goto :oe_editionchangefinal
if !_el!==12 if defined Teams_st (if "%Teams_st%"=="Off" (set
Teams_st=ON) else (set Teams_st=Off))
if !_el!==11 if defined OneDrive_st (if "%OneDrive_st%"=="Off" (set
OneDrive_st=ON) else (set OneDrive_st=Off))
if !_el!==10 if defined Lync_st (if "%Lync_st%"=="Off" (set Lync_st=ON)
else (set Lync_st=Off))
if !_el!==9 if defined Word_st (if "%Word_st%"=="Off" (set Word_st=ON)
else (set Word_st=Off))
if !_el!==8 if defined Visio_st (if "%Visio_st%"=="Off" (set
Visio_st=ON) else (set Visio_st=Off))
if !_el!==7 if defined Publisher_st (if "%Publisher_st%"=="Off" (set
Publisher_st=ON) else (set Publisher_st=Off))
if !_el!==6 if defined Project_st (if "%Project_st%"=="Off" (set
Project_st=ON) else (set Project_st=Off))
if !_el!==5 if defined PowerPoint_st (if "%PowerPoint_st%"=="Off" (set
PowerPoint_st=ON) else (set PowerPoint_st=Off))
if !_el!==4 if defined Outlook_st (if "%Outlook_st%"=="Off" (set
Outlook_st=ON) else (set Outlook_st=Off))
if !_el!==3 if defined OneNote_st (if "%OneNote_st%"=="Off" (set
OneNote_st=ON) else (set OneNote_st=Off))
if !_el!==2 if defined Excel_st (if "%Excel_st%"=="Off" (set
Excel_st=ON) else (set Excel_st=Off))
if !_el!==1 if defined Access_st (if "%Access_st%"=="Off" (set
Access_st=ON) else (set Access_st=Off))
goto :oe_excludeapps
:excludelist
set excludelist=
for %%# in (
access
excel
onenote
outlook
powerpoint
project
publisher
visio
word
lync
onedrive
teams
) do (
if /i "!%%#_st!"=="Off" if defined excludelist (set excludelist=!excludelist!,%%#)
else (set excludelist=,%%#)
)
exit /b
::=================================================================================
=======================================================
:oe_editionchangefinal
cls
if not defined terminal mode 105, 32
set projvis=
set langmatched=
echo: %Project_st% %Visio_st% | find /i "ON" %nul% && set projvis=1
echo: %targetedition% | findstr /i "Project Visio" %nul% && set projvis=1
if defined projvis (
for %%# in (
ar-sa
cs-cz
da-dk
de-de
el-gr
en-us
es-es
fi-fi
fr-fr
he-il
hu-hu
it-it
ja-jp
ko-kr
nb-no
nl-nl
pl-pl
pt-br
pt-pt
ro-ro
ru-ru
sk-sk
sl-si
sv-se
tr-tr
uk-ua
zh-cn
zh-tw
) do (
if /i "%_lang%"=="%%#" set langmatched=1
)
if not defined langmatched (
%eline%
echo %_lang% language is not available for Project/Visio apps.
echo:
call :dk_color %Blue% "Install Office in the supported language for Project/Visio
from the below URL."
set fixes=%fixes% %mas%genuine-installation-media
call :dk_color %_Yellow% "%mas%genuine-installation-media"
goto :oe_goback
)
)
call :oe_getlangs
if %change%==1 (
set "c2rcommand=!c2rcommand! productstoremove=AllProducts"
)
echo:
echo Running the below command, please wait...
echo:
echo %c2rcommand%
%c2rcommand%
set errorcode=%errorlevel%
timeout /t 10 %nul%
echo:
set suggestchannel=
if %errorcode% EQU 0 (
if %change%==1 (
echo %targetedition% | find /i "2019Volume" %nul% && (
if not defined ltsc19 set suggestchannel=Production::LTSC
if /i not %_AudienceData%==Production::LTSC set suggestchannel=Production::LTSC
if /i not %_updch%==F2E724C1-748F-4B47-8FB8-8E0D210E9208 set
suggestchannel=Production::LTSC
)
if defined suggestchannel (
call :dk_color %Gray% "Mismatch found in update channel and installed product."
call :dk_color %Blue% "It is recommended to change the update channel to [!
suggestchannel!] from the previous menu."
)
echo:
)
call :dk_color %Gray% "To activate Office, run the activation option from the main
menu."
) else (
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
call :oe_tempcleanup
goto :oe_goback
::=================================================================================
=======================================================
:oe_editedition
cls
title Add/Remove Apps %masver%
call :oe_chkinternet
if not defined _int (
goto :oe_goback
)
set change=0
set editedition=1
call :ch_getinfo
cls
set inpt=
set counter=0
set verified=0
set targetedition=
%line%
echo:
call :dk_color %Gray% "You can edit [add/remove apps] one of the following Office
editions."
%line%
echo:
%line%
echo:
echo [0] Go Back
echo:
call :dk_color %_Green% "Enter an option number using your keyboard and press Enter
to confirm:"
set /p inpt=
if "%inpt%"=="" goto :oe_editedition
if "%inpt%"=="0" goto :oemenu
for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1)
set targetedition=!targetedition%inpt%!
if %verified%==0 goto :oe_editedition
::===============
cls
if not defined terminal mode 98, 32
::=================================================================================
=======================================================
:oe_removeedition
call :ch_getinfo
cls
if not defined terminal (
mode 98, 35
)
set counter=0
for %%A in (%_oIds%) do (set /a counter+=1)
if !counter! LEQ 1 (
echo:
echo Only "%_oIds%" product is installed.
echo This option is available only when multiple products are installed.
goto :oe_goback
)
::===============
set inpt=
set counter=0
set verified=0
set targetedition=
%line%
echo:
call :dk_color %Gray% "You can uninstall one of the following Office editions."
%line%
echo:
%line%
echo:
echo [0] Go Back
echo:
call :dk_color %_Green% "Enter an option number using your keyboard and press Enter
to confirm:"
set /p inpt=
if "%inpt%"=="" goto :oe_removeedition
if "%inpt%"=="0" goto :oemenu
for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1)
set targetedition=!targetedition%inpt%!
if %verified%==0 goto :oe_removeedition
::===============
cls
if not defined terminal mode 105, 32
echo:
echo Running the below command, please wait...
echo:
echo %c2rcommand%
%c2rcommand%
if %errorlevel% NEQ 0 (
echo:
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
goto :oe_goback
::=================================================================================
=======================================================
:: Change Office update channel
:oe_changeupdchnl
cls
if not defined terminal (
mode 98, 33
)
call :oe_chkinternet
if not defined _int (
goto :oe_goback
)
::===============
set inpt=
set counter=0
set verified=0
set targetFFN=
set bypassFFN=
set targetchannel=
%line%
echo:
call :dk_color %Gray% "Installed update channel: %_AudienceData%, %_version%,
Client: %_clversion%"
call :dk_color %Gray% "Installed Office editions: %_oIds%"
%line%
echo:
for %%# in (
"5440fd1f-7ecb-4221-8110-145efaa6372f_Insider Fast [Beta] - Insiders::DevMain
-"
"64256afe-f5d9-4f86-8936-8840a6a4f5be_Monthly Preview - Insiders::CC
-"
"492350f6-3a01-4f97-b9c0-c7c6ddf67d60_Monthly [Current] - Production::CC
-"
"55336b82-a18d-4dd6-b5f6-9e5095c314a6_Monthly Enterprise - Production::MEC
-"
"b8f9b850-328d-4355-9145-c59439a0c4cf_Semi Annual Preview - Insiders::FRDC
-"
"7ffbc6bf-bc32-4f92-8982-f9dd17fd3114_Semi Annual - Production::DC
-"
"ea4a4090-de26-49d7-93c1-91bff9e53fc3_DevMain Channel - Dogfood::DevMain
-"
"b61285dd-d9f7-41f2-9757-8f61cba4e9c8_Microsoft Elite - Microsoft::DevMain
-"
"f2e724c1-748f-4b47-8fb8-8e0d210e9208_Perpetual2019 VL - Production::LTSC
-"
"1d2d2ea6-1680-4c56-ac58-a441c8c24ff9_Microsoft2019 VL - Microsoft::LTSC
-"
"5030841d-c919-4594-8d2d-84ae4f96e58e_Perpetual2021 VL - Production::LTSC2021
-"
"86752282-5841-4120-ac80-db03ae6b5fdb_Microsoft2021 VL - Microsoft::LTSC2021
-"
"7983bac0-e531-40cf-be00-fd24fe66619c_Perpetual2024 VL - Production::LTSC2024
-"
"c02d8fe6-5242-4da8-972f-82ee55e00671_Microsoft2024 VL - Microsoft::LTSC2024
-"
) do (
for /f "tokens=1-2 delims=_" %%A in ("%%~#") do (
set bypass=
set supported=
if %winbuild% LSS 10240 (echo %%B | findstr /i "LTSC DevMain" %nul% || set
supported=1) else (set supported=1)
if %winbuild% GEQ 10240 (
if defined ltsc19 echo %%B | find /i "2019 VL" %nul% || set bypass=1
if defined ltsc21 echo %%B | find /i "2021 VL" %nul% || set bypass=1
if defined ltsc24 echo %%B | find /i "2024 VL" %nul% || set bypass=1
if not defined ltscfound echo %%B | find /i "LTSC" %nul% && set bypass=1
)
if defined supported (
set /a counter+=1
if !counter! LSS 10 (
if defined bypass (echo [!counter!] %%B Unofficial change method will be used)
else (echo [!counter!] %%B)
) else (
if defined bypass (echo [!counter!] %%B Unofficial change method will be used)
else (echo [!counter!] %%B)
)
set targetFFN!counter!=%%A
set targetchannel!counter!=%%B
if defined bypass set bypassFFN=!bypassFFN!%%A
)
)
)
%line%
echo:
echo [R] Learn about update channels
echo [0] Go back
echo:
call :dk_color %_Green% "Enter an option number using your keyboard and press Enter
to confirm:"
set /p inpt=
if "%inpt%"=="" goto :oe_changeupdchnl
if "%inpt%"=="0" goto :oemenu
if /i "%inpt%"=="R" start
[Link]
channels & goto :oe_changeupdchnl
for /l %%i in (1,1,%counter%) do (if "%inpt%"=="%%i" set verified=1)
set targetFFN=!targetFFN%inpt%!
set targetchannel=!targetchannel%inpt%!
if %verified%==0 goto :oe_changeupdchnl
::=======================
cls
if not defined terminal mode 105, 32
:: Get build number for the target FFN, using build number with
[Link] command to trigger updates provides accurate results
set build=
for /f "delims=" %%a in ('%psc% "$f=[[Link]]::ReadAllText('!_batp!') -split
':getbuild\:.*';. ([scriptblock]::Create($f[1]))" %nul6%') do (set build=%%a)
echo "%build%" | find /i "16." %nul% || set build=
echo:
for /f "tokens=1 delims=-" %%A in ("%targetchannel%") do (echo Target update
channel: %%A)
echo Target build number: %build%
echo: %bypassFFN% | find /i "%targetFFN%" %nul% && goto :oe_changeunoff
call :oe_cleanupreg
::=======================
:oe_changeunoff
set abortchange=
echo %targetchannel% | find /i "2019 VL" %nul% && (for %%A in (%_oIds%) do (echo %
%A | find /i "2019Volume" %nul% || set abortchange=1))
echo %targetchannel% | find /i "2021 VL" %nul% && (for %%A in (%_oIds%) do (echo %
%A | find /i "2021Volume" %nul% || set abortchange=1))
echo %targetchannel% | find /i "2024 VL" %nul% && (for %%A in (%_oIds%) do (echo %
%A | find /i "2024Volume" %nul% || set abortchange=1))
if defined abortchange (
%eline%
echo Mismatch found in installed Office products and target update channel.
Aborting...
echo Non-perpetual Office products are not suppported with Perpetual VL update
channels.
goto :oe_goback
)
set buildchk=0
for /f "tokens=3 delims=." %%a in ("%build%") do set "buildchk=%%a"
call :oe_cleanupreg
echo Running the below command to change update channel, please wait...
echo:
echo %c2rcommand%
%c2rcommand%
set errorcode=%errorlevel%
timeout /t 10 %nul%
echo:
if %errorcode% EQU 0 (
call :dk_color %Gray% "Now run the Office activation option from the main menu."
) else (
set fixes=%fixes% %mas%troubleshoot
call :dk_color2 %Blue% "Check this webpage for help - " %_Yellow% " %mas
%troubleshoot"
)
::=================================================================================
=======================================================
:oe_goback
call :oe_tempcleanup
echo:
if defined fixes (
call :dk_color %White% "Follow ALL the ABOVE blue lines. "
call :dk_color2 %Blue% "Press [1] to Open Support Webpage " %Gray% " Press [0] to
Ignore"
choice /C:10 /N
if !errorlevel!==2 goto :oemenu
if !errorlevel!==1 (start %selfgit% & start %github% & for %%# in (%fixes%) do
(start %%#))
)
if defined terminal (
call :dk_color %_Yellow% "Press [0] key to go back..."
choice /c 0 /n
) else (
call :dk_color %_Yellow% "Press any key to go back..."
pause %nul1%
)
goto :oemenu
::=================================================================================
=======================================================
:oe_cleanupreg
echo:
echo Cleaning Office update registry keys...
echo Adding new update channel to registry keys...
echo:
exit /b
::=================================================================================
=======================================================
:oe_tempcleanup
::=================================================================================
=======================================================
:ch_getinfo
set _oRoot=
set _oArch=
set _updch=
set _oIds=
set _firstoId=
set _lang=
set _cfolder=
set _version=
set _clversion=
set _AudienceData=
set _actconfig=
set _c2rXml=
set _c2rExe=
set _c2rCexe=
set _masterxml=
set ltsc19=
set ltsc21=
set ltsc24=
set ltscfound=
echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=9) || (set _tok=8)
for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs\
%_actconfig%" /f ".16" /k %nul6% ^| findstr /i "Retail Volume"') do (
if defined _oIds (set "_oIds=!_oIds! %%a") else (set "_oIds=%%a")
)
set _oIds=%_oIds:.16=%
for /f "tokens=1" %%A in ("%_oIds%") do set _firstoId=%%A
for /f "skip=2 tokens=2*" %%a in ('"reg query %o16c2r_reg%\Configuration /v
%_firstoId%.ExcludedApps" %nul6%') do (set "_firstoIdExcludelist=%%b")
set verchk=0
set clverchk=0
for /f "tokens=3 delims=." %%a in ("%_version%") do set "verchk=%%a"
for /f "tokens=3 delims=." %%a in ("%_clversion%") do set "clverchk=%%a"
if exist "%ProgramData%\Microsoft\ClickToRun\ProductReleases\%_actconfig%\x-
none.16\[Link]" (
set "_masterxml=%ProgramData%\Microsoft\ClickToRun\ProductReleases\%_actconfig%\x-
none.16\[Link]"
)
if exist "%_cfolder%\[Link]" (
set "_c2rExe=%_cfolder%\[Link]"
)
if exist "%_cfolder%\[Link]" (
set "_c2rCexe=%_cfolder%\[Link]"
)
exit /b
::=================================================================================
=======================================================
:oe_getlangs
if "%1"=="" (
set langreg=culture
) else (
set langreg=%1.16
)
set _allLangs=
echo "%o16c2r_reg%" | find /i "Wow6432Node" %nul1% && (set _tok=10) || (set _tok=9)
for /f "tokens=%_tok% delims=\" %%a in ('reg query "%o16c2r_reg%\ProductReleaseIDs\
%_actconfig%\%langreg%" /f "-" /k ^| findstr /i "%langreg%\\.*-.*"') do (
if defined _allLangs (set "_allLangs=!_allLangs!_%%a") else (set "_allLangs=%%a")
)
set _allLangs=%_allLangs:.16=%
exit /b
::=================================================================================
=======================================================
:oe_chkinternet
set _int=
for %%a in ([Link] [Link] [Link]
[Link]) do if not defined _int (
for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do (if not "%%#"=="" set
_int=1)
)
::=================================================================================
=======================================================
:getbuild:
$Tls12 = [Enum]::ToObject([[Link]], 3072)
[[Link]]::SecurityProtocol = $Tls12
$FFN = $env:targetFFN
$windowsBuild = [[Link]]::[Link]
$baseUrl =
"[Link]
audienceFFN=$FFN"
$url = if ($windowsBuild -lt 9200) { "$baseUrl&osver=Client|6.1" } elseif
($windowsBuild -lt 10240) { "$baseUrl&osver=Client|6.3" } else { $baseUrl }
$response = if ($windowsBuild -ge 9200) { irm -Uri $url -Method Get } else { (New-
Object [Link]).DownloadString($url) }
::=================================================================================
=======================================================
:getlist:
$xmlPath1 = $env:_c2rXml
$xmlPath2 = $env:_masterxml
$outputDir = $env:SystemRoot + "\Temp\"
$buildNumber = [[Link]]::[Link]
$excludedKeywords = @("2019", "2021", "2024")
$productReleaseIds = @()
if (Test-Path $xmlPath1) {
$xml1 = New-Object -TypeName [Link]
$[Link]($xmlPath1)
foreach ($node in $[Link]("//ProductReleaseId")) {
$id = $[Link]("id")
$exclude = $false
if ($buildNumber -lt 10240) {
foreach ($keyword in $excludedKeywords) {
if ($id -match $keyword) { $exclude = $true; break }
}
}
if ($id -ne "CommonLicenseFiles" -and -not $exclude) { $productReleaseIds
+= $id }
}
}
$categories = @{
"Suites_Retail" = @(); "Suites_Volume" = @()
"SingleApps_Retail" = @(); "SingleApps_Volume" = @()
}
if (Test-Path $xmlPath2) {
$xml2 = New-Object -TypeName [Link]
$[Link]($xmlPath2)
foreach ($sku in $[Link]("//SKU")) {
$skuId = $[Link]("ID")
if ($productReleaseIds -contains $skuId) {
$appIds = $[Link]("Apps/App") | ForEach-Object
{ $_.GetAttribute("id") }
if ($appIds -contains "Excel" -and $appIds -contains "Word") {
$category = if ($skuId -match "Retail") { "Retail" } else
{ "Volume" }
$categories["Suites_$category"] += $skuId
$categories["SingleApps_$category"] =
$categories["SingleApps_$category"] | Where-Object { $_ -ne $skuId }
}
}
}
}
::=================================================================================
=======================================================
:getappnames:
$xmlPath = $env:_masterxml
$targetSkuId = $env:targetedition
$outputDir = $env:SystemRoot + "\Temp\"
$outputFile = Join-Path -Path $outputDir -ChildPath "[Link]"
$excludeIds = @("shared", "PowerPivot", "PowerView", "MondoOnly", "OSM", "OSMUX",
"Groove", "DCF")
$appIdsList = @()
$skuNodes = $[Link]("//SKU[@ID='$targetSkuId']")
if ($[Link] -gt 0) {
$appIdsList | Out-File -FilePath $outputFile -Encoding ASCII
}
:getappnames:
::=================================================================================
=======================================================
::
:: Leave empty line below