2020-08-14 03:59:32 +00:00
@ setlocal DisableDelayedExpansion
@ echo off
: :========================================================================================================================================
: : change to 1 to enable debug mode
set _Debug = 0
: : change to 0 to turn OFF Windows or Office activation via the script
: : note: this is not effective if Windows and/or Office installation is already Volume (GVLK installed)
set ActWindows = 1
set ActOffice = 1
: : change to 0 to revert Windows 10 KMS38 to normal KMS
set SkipKMS38 = 1
: : change to 0 to turn OFF auto conversion for Office C2R Retail to Volume
set AutoR2V = 1
: : set the script to use only one specific KMS server address.
: : paste the server address after the = sign in below line.
set KMS_Server =
: : Change to 1 to clear KMS cache after the activation.
: : - Registered KMS server address (cache) enables the system to automatically renew the license (for every next 180 days) every 7 days, as long as the server is online.
: : - This process is same as how the legal KMS suppose to work, so no security program will flag this behaviour.
: : - Changing this option here won't have any effect if manual (Desktop Context menu) and/or auto, renewal activation script is installed. [default (0)].
: : - I recommend to leave this option as default (0).
set Clear-KMS-Cache = 0
: : ### Advanced KMS Options ###
: : change KMS auto renewal schedule, range in minutes: from 15 to 43200
: : example: 10080 = weekly, 1440 = daily, 43200 = monthly
set KMS_RenewalInterval = 10080
: : change KMS reattempt schedule for failed activation or unactivated, range in minutes: from 15 to 43200
set KMS_ActivationInterval = 120
: : change Hardware Hash for KMS emulator server (only affect Windows 8.1 and 10)
set KMS_HWID = 0x3A1C049600B60076
: : change KMS TCP port
set KMS_Port = 1688
: ##################################################################
: # NORMALY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
: ##################################################################
: :========================================================================================================================================
: Credits :
: : This script is a fork of 'KMS_VL_ALL - Smart Activation Script' Project
: : The main project is maintained by @abbodi1406
: : https://forums.mydigitallife.net/posts/838808
: : This fork was made to avoid having any KMS binary files and system can be activated using
: : some manual commands or transparent batch script files.
: : Thanks to @RPO (MDL), for providing great help in making of this fork.
: :--------------------------------------------------------------------------------------------------------
: : This script is a part of 'Microsoft Activation Scripts' project.
: :
: : Homepages-
: : NsaneForums: (Login Required) https://www.nsaneforums.com/topic/316668-microsoft-activation-scripts/
: : GitHub: https://github.com/massgravel/Microsoft-Activation-Scripts
: : GitLab: https://gitlab.com/massgrave/microsoft-activation-scripts
: :
: : Maintained by @WindowsAddict
: :========================================================================================================================================
cls
title Online KMS Activation
set Unattended =
set _args =
set _elev =
set Task =
set " _arg1= %~1 "
if not defined _arg1 goto : NoProgArgs
set " _args= %~1 "
set " _arg2= %~2 "
if defined _arg2 set " _args= %~1 %~2 "
for %% A in ( %_args% ) do (
if /i " %% A " == " -el " set _elev = 1
if /i " %% A " == " /u " set Unattended = 1
if /i " %% A " == " Task " set Task = 1& set Unattended = 1)
: NoProgArgs
for /f " tokens=6 delims=[]. " %% G in ( 'ver' ) do set winbuild = %% G
set " _psc=powershell "
set " nul=1>nul 2>nul "
set " EchoRed= %_psc% write-host -back Black -fore Red "
set " EchoGreen= %_psc% write-host -back Black -fore Green "
set " ELine=echo: & %EchoRed% ==== ERROR ==== &echo: "
: :========================================================================================================================================
for %% i in ( powershell.exe) do if " %% ~$path:i " == " " (
echo : & echo ==== ERROR ==== & echo :
echo Powershell is not installed in the system.
echo Aborting...
goto Done
)
: :========================================================================================================================================
if %winbuild% LSS 7600 (
%ELine%
echo Unsupported OS version Detected.
echo Project is supported only for Windows 7/8/8.1/10 and their Server equivalent.
goto Done
)
: :========================================================================================================================================
: : Fix for the special characters limitation in path name
: : Written by @abbodi1406
set " _batf= %~f0 "
set " _vbsf= %temp% \admin.vbs "
set _PSarg = " " " %~f0 " " " -el
if defined _args set _PSarg = " " " %~f0 " " " -el " " " %_args% " " "
setlocal EnableDelayedExpansion
: : Elevate script as admin and pass arguments and preventing loop
: : Thanks to @hearywarlot [ https://forums.mydigitallife.net/threads/.74332/ ] for the VBS method.
: : Thanks to @abbodi1406 for the powershell method and solving special characters issue in file path name.
%nul% reg query HKU\S-1-5-19 && (
goto : Passed
) || (
if defined _elev goto : E_Admin
)
(
echo Set strArg=WScript.Arguments.Named
echo Set strRdlproc = CreateObject^( " WScript.Shell " ^) .Exec^( " rundll32 kernel32,Sleep " ^)
echo With GetObject^( " winmgmts:\\.\root\CIMV2:Win32_Process.Handle=' " ^& strRdlproc.ProcessId ^& " ' " ^)
echo With GetObject^( " winmgmts:\\.\root\CIMV2:Win32_Process.Handle=' " ^& .ParentProcessId ^& " ' " ^)
echo If InStr ^( .CommandLine, WScript.ScriptName^) ^< ^> 0 Then
echo strLine = Mid^( .CommandLine, InStr^( .CommandLine , " /File: " ^) + Len^( strArg^( " File " ^) ^) + 8^)
echo End If
echo End With
echo .Terminate
echo End With
echo CreateObject^( " Shell.Application " ^) .ShellExecute " cmd.exe " , " /c " ^& chr^( 34^) ^& chr^( 34^) ^& strArg^( " File " ^) ^& chr^( 34^) ^& strLine ^& chr^( 34^) , " " , " runas " , 1
)>"!_vbsf!"
( %nul% cscript //NoLogo " !_vbsf! " /File:" !_batf! " -el " !_args! " ) && (
del /f /q " !_vbsf! "
exit /b
) || (
del /f /q " !_vbsf! "
%nul% %_psc% " start cmd.exe -arg '/c \ " !_PSarg:'=''! \" ' -verb runas " && (
exit /b
) || (
goto : E_Admin
)
)
exit /b
: E_Admin
%ELine%
if " !_batf! " == " %ProgramData% \Online_KMS_Activation\Activate.cmd " (
echo Unable to elevate the script as admin.
echo Try to manually run the file as admin - " %ProgramData% \Online_KMS_Activation\Activate.cmd "
) else (
echo This script require administrator privileges.
echo To do so, right click on this script and select 'Run as administrator'.
)
goto Done
: Passed
: :========================================================================================================================================
if defined Task (
set DateTime = 1
set Renewal_Task = 1
reg query " HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\taskcache\tasks " /f Path /s | find /i " \Online_KMS_Activation_Script-Run_Once " > nul && (
set Renewal_Task =
set Run_Once = 1
)
)
If defined Task call : _Start_ >> " %ProgramData% \Online_KMS_Activation\Logs.txt " & exit
: _Start_
If defined Task call : Activation_Start & echo Exiting... & echo : & exit /b
: :========================================================================================================================================
: : Set buffer height independently of window height
: : https://stackoverflow.com/a/13351373
: : Written by @dbenham (stackoverflow)
mode con: cols=98 lines=30
if " !_batf! " == " %ProgramData% \Online_KMS_Activation\Activate.cmd " title Online KMS Activation [%ProgramData% \Online_KMS_Activation\]
%nul% %_psc% " &{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.height=150;$W.buffersize=$B;} "
: :========================================================================================================================================
cls
setlocal
call : Activation_Start
@ echo off
endlocal
setlocal
call : Clear-KMS-Cache
endlocal
: :========================================================================================================================================
: Done
echo :
if %_Debug% EQU 1 exit /b
if defined Unattended (
echo Exiting in 3 seconds...
if %winbuild% LSS 7600 ( ping -n 3 127.0.0.1 > nul) else ( timeout /t 3)
exit /b
)
echo Press any key to exit...
pause > nul
exit /b
: :========================================================================================================================================
: Clear-KMS-Cache
if exist " %ProgramData% \Online_KMS_Activation\Activate.cmd " exit /b
if %Clear-KMS-Cache% NEQ 1 exit /b
: : Clear-KMS-Cache.cmd
: : https://forums.mydigitallife.net/posts/1511883
: : Written by @abbodi1406 (MDL)
set " SysPath= %Windir% \System32 "
if exist " %Windir% \Sysnative\reg.exe " ( set " SysPath= %Windir% \Sysnative " )
set " Path= %SysPath% ; %Windir% ; %SysPath% \Wbem; %SysPath% \WindowsPowerShell\v1.0\ "
set " OSPP=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform "
set " SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform "
wmic path SoftwareLicensingProduct where (Description like '%% KMSCLIENT%% ') get Name 2 > nul | findstr /i Windows 1 > nul && ( set SppHook = 1) || ( set SppHook = 0)
wmic path SoftwareLicensingProduct where (Description like '%% KMSCLIENT%% ') get Name 2 > nul | findstr /i Office 1 > nul && ( set SppHook = 1)
wmic path OfficeSoftwareProtectionService get Version > nul 2 >& 1 && ( set OsppHook = 1) || ( set OsppHook = 0)
if %SppHook% NEQ 0 call : cKMS SoftwareLicensingProduct SoftwareLicensingService SPP
if %OsppHook% NEQ 0 call : cKMS OfficeSoftwareProtectionProduct OfficeSoftwareProtectionService OSPP
call : cREG > nul 2 >& 1
%EchoGreen% Cleared KMS Cache successfully.
exit /b
: cKMS
set spp = %1
set sps = %2
for /f " tokens=2 delims== " %% G in ( '"wmic path %spp% where (Description like ' %% KMSCLIENT %% ' ) get ID /VALUE" 2 ^ >nul') do (set app= %% G&call :cAPP)
for /f " tokens=2 delims== " %% A in ( '"wmic path %sps% get Version /VALUE"' ) do set ver = %% A
wmic path %sps% where version='%ver% ' call ClearKeyManagementServiceMachine > nul 2 >& 1
wmic path %sps% where version='%ver% ' call ClearKeyManagementServicePort > nul 2 >& 1
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceDnsPublishing 1 > nul 2 >& 1
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceHostCaching 1 > nul 2 >& 1
goto : eof
: cAPP
wmic path %spp% where ID='%app% ' call ClearKeyManagementServiceMachine > nul 2 >& 1
wmic path %spp% where ID='%app% ' call ClearKeyManagementServicePort > nul 2 >& 1
goto : eof
: cREG
reg delete " HKLM\ %SPPk% \55c92734-d682-4d71-983e-d6ec3f16059f " /f
reg delete " HKLM\ %SPPk% \0ff1ce15-a989-479d-af46-f275c6370663 " /f
reg delete " HKLM\ %SPPk% " /f /v KeyManagementServiceName
reg delete " HKLM\ %SPPk% " /f /v KeyManagementServicePort
reg delete " HKU\S-1-5-20\ %SPPk% \55c92734-d682-4d71-983e-d6ec3f16059f " /f
reg delete " HKU\S-1-5-20\ %SPPk% \0ff1ce15-a989-479d-af46-f275c6370663 " /f
reg delete " HKLM\ %OSPP% \59a52881-a989-479d-af46-f275c6370663 " /f
reg delete " HKLM\ %OSPP% \0ff1ce15-a989-479d-af46-f275c6370663 " /f
reg delete " HKLM\ %OSPP% " /f /v KeyManagementServiceName
reg delete " HKLM\ %OSPP% " /f /v KeyManagementServicePort
if %OsppHook% NEQ 1 (
reg delete " HKLM\ %OSPP% " /f
reg delete " HKU\S-1-5-20\ %OSPP% " /f
)
goto : eof
: :========================================================================================================================================
: =========================================================================================================================================
: =========================================================================================================================================
: =========================================================================================================================================
: =========================================================================================================================================
: Activation_Start
@ setlocal DisableDelayedExpansion
set Silent = 0
set Logger = 0
set Unattend = 1
if %Silent% EQU 1 set Unattend = 1
set " _run=nul "
if %Logger% EQU 1 set _run = " %~dpn0 _Silent.log "
set " SysPath= %SystemRoot% \System32 "
if exist " %SystemRoot% \Sysnative\reg.exe " ( set " SysPath= %SystemRoot% \Sysnative " )
set " Path= %SysPath% ; %SystemRoot% ; %SysPath% \Wbem; %SysPath% \WindowsPowerShell\v1.0\ "
set " _err===== ERROR ==== "
set " xOS=x64 "
set " xBit=x64 "
if /i %PROCESSOR_ARCHITECTURE% == x86 ( if not defined PROCESSOR_ARCHITEW6432 (
set " xOS=x86 "
set " xBit=x86 "
)
)
set " _temp= %SystemRoot% \Temp "
set " _log= %~dpn0 "
set " _work= %~dp0 "
if " %_work:~-1% " == " \ " set " _work= %_work:~0,-1% "
for /f " skip=2 tokens=2* " %% a in ( 'reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop' ) do call set " _dsk= %% b "
if exist " %SystemDrive% \Users\Public\Desktop\desktop.ini " set " _dsk= %SystemDrive% \Users\Public\Desktop "
setlocal EnableDelayedExpansion
if %_Debug% EQU 0 (
set " _Nul1=1>nul "
set " _Nul2=2>nul "
set " _Nul6=2 ^ >nul "
set " _Nul3=1>nul 2>nul "
set " _Pause=pause >nul "
if %Unattend% EQU 1 set " _Pause= "
if %Silent% EQU 0 ( call : Begin ) else ( call : Begin > !_run! 2 >& 1 )
) else (
set " _Nul1= "
set " _Nul2= "
set " _Nul6= "
set " _Nul3= "
set " _Pause= "
copy /y nul " !_work! \#.rw " 1 > nul 2 > nul && ( if exist " !_work! \#.rw " del /f /q " !_work! \#.rw " ) || ( set " _log=!_dsk!\ %~n0 " )
if %Silent% EQU 0 (
echo :
echo Running in Debug Mode...
if not defined _args ( echo The window will be closed when finished) else ( echo please wait...)
echo :
echo writing debug log to:
echo " !_log! _Debug.log "
)
@ echo on
@ prompt $G
@ call : Begin > " !_log! _tmp.log " 2 >& 1 & cmd /u /c type " !_log! _tmp.log " > " !_log! _Debug.log " & del " !_log! _tmp.log "
)
@ echo off
@ exit /b
: Begin
: :========================================================================================================================================
: : Multi KMS servers integration
: : 1688 Port Test, Internet Test with Powershell
: : Thanks @RPO
If defined Renewal_Task set T_Name = Renewal_Task
If defined Run_Once set T_Name = Run_Once_[Activation_Task]
if defined DateTime (
echo ========================================================================================================
echo ----------------------------
Echo %T_Name%
echo ----------------------------
echo ----------------------------------------------
echo Date : %date% Time : %time%
echo ----------------------------------------------
)
set /a loop = 1
set /a max_loop = 1
if defined Renewal_Task set /a max_loop = 3
if defined Run_Once set /a max_loop = 5
: repeat
powershell " If([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet){Exit 0}Else{Exit 1} "
if %errorlevel% == 0 ( goto IntConnected )
if %loop% == %max_loop% (
%ELine%
echo Internet is not connected.
echo : & exit /b 1
)
echo Checking: Internet is not connected.
echo Waiting 30 s
timeout /t 30 > nul
set /a loop =% loop %+ 1
goto repeat
: IntConnected
if defined KMS_Server (
echo :
set " KMS_IP= %KMS_Server% "
set /a online_server_count = 1
set /a activation_ok = 1
goto gotserv
)
: : Primary servers randomization
: : Thanks to @abbodi1406
set " srvpri= "
set " srvsec= "
set " srvpri= %srvpri% kms.srv.cr "
set " srvpri= %srvpri% soo.com "
set " srvpri= %srvpri% kms.lol "
set " srvpri= %srvpri% i.beer "
set " srvpri= %srvpri% kms8.MSGu "
set " srvpri= %srvpri% ides.com "
set " srvsec= %srvsec% kms9.MSGui "
set " srvsec= %srvsec% des.com "
set " srvsec= %srvsec% kms.zhuxi "
set " srvsec= %srvsec% aole.org "
set " srvsec= %srvsec% kms.lol "
set " srvsec= %srvsec% ico.moe "
set " srvsec= %srvsec% kms.moec "
set " srvsec= %srvsec% lub.org "
set n = 1
for %% a in ( %srvpri% ) do ( set server!n! = %% a& set /a n += 1 )
for %% a in ( %srvsec% ) do ( set server!n! = %% a& set /a n += 1 )
set /a max_servers = n - 1
set /a srvpri_num = 1
set /a server_num = 1
set /a online_server_count = 0
echo :
: server
if %online_server_count% equ 2 (
%EchoRed% Error: Activation was not successful.
echo Restart the system and try again.
echo Read the troubleshoot guide in ReadMe.
echo :
echo ------------------------------------------------------------------
echo :
exit /b 1
)
if %server_num% gtr !max_servers! (
echo ------------------------------------------------------------------
echo :
%EchoRed% Error: Internet is not connected.
echo :
echo ------------------------------------------------------------------
echo :
exit /b 1
)
set /a activation_ok = 1
if %srvpri_num% gtr 3 goto : srvsec
: srvpri
if %srvpri_num% gtr 3 goto : srvsec
set /a rand =% Random %%% ( 3 + 1 - 1 ) + 1
if defined !server%rand%! goto : srvpri
set KMS_IP = !server%rand%!
set !server%rand%! = 1
set /a srvpri_num += 1
goto : testserv
: srvsec
set KMS_IP = !server%server_num%!
goto : testserv
: testserv
set /a server_num += 1
2021-05-13 16:07:02 +00:00
pathping -h 1 -n -p 1 -q 1 -w 1 %KMS_IP% 1 > nul Net.Sockets.TcpClient;try{$t.Connect(" " " %KMS_IP% " " " , 1688)}catch{};$t.Connected" | findstr /i true 1>nul
2020-08-14 03:59:32 +00:00
if %errorlevel% NEQ 0 (
goto : server
) else (
goto : gotserv
)
: gotserv
set /a online_server_count += 1
echo KMS Server: ^( %KMS_IP% ^)
: :========================================================================================================================================
if %_Debug% EQU 1 if defined _args echo %_args%
set " _wApp=55c92734-d682-4d71-983e-d6ec3f16059f "
set " _oApp=0ff1ce15-a989-479d-af46-f275c6370663 "
set " _oA14=59a52881-a989-479d-af46-f275c6370663 "
set " IFEO=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options "
set " OPPk=SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform "
set " SPPk=SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform "
for /f " tokens=6 delims=[]. " %% G in ( 'ver' ) do set winbuild = %% G
set SSppHook = 0
for /f %% A in ( 'dir /b /ad %SysPath% \spp\tokens\skus' ) do (
if %winbuild% GEQ 9200 if exist " %SysPath% \spp\tokens\skus\ %% A\*GVLK*.xrm-ms " set SSppHook = 1
if %winbuild% LSS 9200 if exist " %SysPath% \spp\tokens\skus\ %% A\*VLKMS*.xrm-ms " set SSppHook = 1
if %winbuild% LSS 9200 if exist " %SysPath% \spp\tokens\skus\ %% A\*VL-BYPASS*.xrm-ms " set SSppHook = 1
)
set OsppHook = 1
sc query osppsvc %_Nul3%
if %errorlevel% EQU 1060 set OsppHook = 0
if %winbuild% GEQ 9200 (
set OSType = Win8
set SppVer = SppExtComObj.exe
) else if %winbuild% GEQ 7600 (
set OSType = Win7
set SppVer = sppsvc.exe
) else (
goto : UnsupportedVersion
)
if %OSType% EQU Win8 reg query " %IFEO% \sppsvc.exe " %_Nul3% && (
reg delete " %IFEO% \sppsvc.exe " /f %_Nul3%
call : StopService sppsvc
)
if %ActWindows% EQU 0 if %ActOffice% EQU 0 set " ActWindows=1 "
set AUR = 1
if %winbuild% GEQ 9600 (
reg add " HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Software Protection Platform " /f /v NoGenTicket /t REG_DWORD /d 1 %_Nul3%
)
call : StopService sppsvc
if %OsppHook% NEQ 0 call : StopService osppsvc
: ReturnHook
call : UpdateOSPPEntry osppsvc.exe
SET Win10Gov = 0
IF %winbuild% LSS 14393 if %SSppHook% NEQ 0 GOTO : Main
SET " EditionWMI= "
SET " EditionID= "
SET " RegKey=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages "
SET " Pattern=Microsoft-Windows-*Edition~31bf3856ad364e35 "
SET " EditionPKG=NUL "
FOR /F " TOKENS=8 DELIMS=\ " %% A IN ( 'REG QUERY " %RegKey% " /f " %Pattern% " /k %_Nul6% ^| FIND /I "CurrentVersion"' ) DO (
REG QUERY " %RegKey% \ %% A " /v " CurrentState " %_Nul2% | FIND /I " 0x70 " %_Nul1% && (
FOR /F " TOKENS=3 DELIMS=-~ " %% B IN ( 'ECHO %% A' ) DO SET " EditionPKG= %% B "
)
)
IF /I " %EditionPKG:~-7% " == " Edition " (
SET " EditionID= %EditionPKG:~0,-7% "
) ELSE (
FOR /F " TOKENS=3 DELIMS=: " %% A IN ( 'DISM /English /Online /Get-CurrentEdition %_Nul6% ^| FIND /I "Current Edition :"' ) DO SET " EditionID= %% A "
)
FOR /F " TOKENS=2 DELIMS== " %% A IN ( '"WMIC PATH SoftwareLicensingProduct WHERE (ApplicationID=' %_wApp% ' AND PartialProductKey is not NULL) GET LicenseFamily /VALUE" %_Nul6% ' ) DO IF NOT ERRORLEVEL 1 SET " EditionWMI= %% A "
IF NOT DEFINED EditionWMI (
IF %winbuild% GEQ 17063 FOR /F " SKIP=2 TOKENS=2* " %% A IN ( 'REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionId' ) DO SET " EditionID= %% B "
IF %winbuild% LSS 14393 FOR /F " SKIP=2 TOKENS=2* " %% A IN ( 'REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionId' ) DO SET " EditionID= %% B "
GOTO : Main
)
FOR %% A IN ( Cloud,CloudN,IoTEnterprise,IoTEnterpriseS,ProfessionalSingleLanguage,ProfessionalCountrySpecific) DO ( IF /I " %EditionWMI% " == " %% A " GOTO : Main )
SET " EditionID= %EditionWMI% "
: Main
IF DEFINED EditionID FOR %% A IN ( EnterpriseG,EnterpriseGN) DO ( IF /I " %EditionID% " == " %% A " SET Win10Gov = 1)
if defined EditionID ( set " _winos=Windows %EditionID% edition " ) else ( set " _winos=Detected Windows " )
for /f " skip=2 tokens=2* " %% a in ( 'reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName %_Nul6% ' ) do if not errorlevel 1 set " _winos= %% b "
set " nKMS=does not support KMS activation... "
set " nEval=Evaluation Editions cannot be activated. Please install full Windows OS. "
if defined EditionID echo %EditionID% | findstr /I /E Eval %_Nul1% && (
set _eval = 1
echo %EditionID% | findstr /I /B Server %_Nul1% && ( set " nEval=Server Evaluation cannot be activated. Please convert to full Server OS. " )
)
set " _C16R= "
reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath %_Nul3% && (
reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds %_Nul3% && set " _C16R=HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration "
)
set " _C15R= "
reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath %_Nul3% && (
reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration /v ProductReleaseIds %_Nul3% && set " _C15R=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration "
if not defined _C15R reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid %_Nul3% && set " _C15R=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag "
)
set _V16Ids = Mondo,ProPlus,ProjectPro,VisioPro,Standard,ProjectStd,VisioStd,Access,SkypeforBusiness,OneNote,Excel,Outlook,PowerPoint,Publisher,Word
set _R16Ids = %_V16Ids% ,Professional,HomeBusiness,HomeStudent,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud
set _O16MSI = 0
set _O15MSI = 0
for %% A in ( 14,15,16,19) do call : officeLoc %% A
call : RunSPP
if %ActOffice% NEQ 0 call : RunOSPP
if %ActOffice% EQU 0 ( echo :& echo Office activation is OFF...)
if exist " !_temp! \crv*.txt " del /f /q " !_temp! \crv*.txt "
if exist " !_temp! \*chk.txt " del /f /q " !_temp! \*chk.txt "
if exist " !_temp! \slmgr.vbs " del /f /q " !_temp! \slmgr.vbs "
call : StopService sppsvc
if %OsppHook% NEQ 0 call : StopService osppsvc
sc start sppsvc trigger=timer;sessionid=0 %_Nul3%
echo :
if %activation_ok% == 0 (
echo ------------------------------------------------------------------ & echo :
if not %online_server_count% == 2 (
echo Activation wasn't successful. Trying another server...& echo :
echo ------------------------------------------------------------------ & echo :
)
goto : server
)
if defined Run_Once (
echo Deleting Scheduled Task Online_KMS_Activation_Script-Run_Once
schtasks /delete /tn Online_KMS_Activation_Script-Run_Once /f 1 > nul 2 > nul
)
goto : TheEnd
: RunSPP
set spp = SoftwareLicensingProduct
set sps = SoftwareLicensingService
set W1nd0ws = 1
set WinPerm = 0
set WinVL = 0
set Off1ce = 0
set RunR2V = 0
if %winbuild% GEQ 9200 if %ActOffice% NEQ 0 call : sppoff
wmic path %spp% where (Description like '%% KMSCLIENT%% ') get Name %_Nul2% | findstr /i Windows %_Nul1% && (
set WinVL = 1
) || (
if %ActWindows% EQU 0 (
echo :& echo Windows activation is OFF...
) else (
echo :& echo %_winos% %nKMS%
if defined _eval echo %nEval%
)
)
if %Off1ce% EQU 0 if %WinVL% EQU 0 exit /b
wmic path %spp% where (ApplicationID='%_wApp% ' and Description like '%% KMSCLIENT%% ' and PartialProductKey is not NULL) get Name %_Nul2% | findstr /i Windows %_Nul1% && ( set _gvlk = 1) || ( set _gvlk = 0)
set gpr = 0
if %winbuild% GEQ 10240 if %SkipKMS38% NEQ 0 if %_gvlk% EQU 1 for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where (ApplicationID=' %_wApp% ' and Description like ' %% KMSCLIENT %% ' and PartialProductKey is not NULL) get GracePeriodRemaining /VALUE" %_Nul6% ' ) do set " gpr= %% A "
if %gpr% NEQ 0 if %gpr% GTR 259200 (
set W1nd0ws = 0
wmic path %spp% where " ApplicationID=' %_wApp% ' and Description like ' %% KMSCLIENT %% ' and PartialProductKey is not NULL " get LicenseFamily %_Nul2% | findstr /i EnterpriseG %_Nul1% && ( call set W1nd0ws = 1)
)
for /f " tokens=2 delims== " %% A in ( '"wmic path %sps% get Version /VALUE"' ) do set ver = %% A
wmic path %sps% where version='%ver% ' call SetKeyManagementServiceMachine MachineName=" %KMS_IP% " %_Nul3%
wmic path %sps% where version='%ver% ' call SetKeyManagementServicePort %KMS_Port% %_Nul3%
if %W1nd0ws% EQU 0 for /f " tokens=2 delims== " %% G in ( '"wmic path %spp% where (ApplicationID=' %_wApp% ' and Description like ' %% KMSCLIENT %% ' ) get ID /VALUE" ') do (set app= %% G&call :sppchkwin)
if %W1nd0ws% EQU 1 if %ActWindows% NEQ 0 for /f " tokens=2 delims== " %% G in ( '"wmic path %spp% where (ApplicationID=' %_wApp% ' and Description like ' %% KMSCLIENT %% ' ) get ID /VALUE" ') do (set app= %% G&call :sppchkwin)
if %W1nd0ws% EQU 1 if %ActWindows% EQU 0 ( echo :& echo Windows activation is OFF...)
if %Off1ce% EQU 1 if %ActOffice% NEQ 0 for /f " tokens=2 delims== " %% G in ( '"wmic path %spp% where (ApplicationID=' %_oApp% ' and Description like ' %% KMSCLIENT %% ' ) get ID /VALUE" ') do (set app= %% G&call :sppchkoff)
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceDnsPublishing 0 %_Nul3%
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceHostCaching 0 %_Nul3%
exit /b
: sppoff
set _sC2R = sppoff
set _fC2R = ReturnSPP
set vol_off15 = 0& set vol_off16 = 0& set vol_off19 = 0
wmic path %spp% where (Description like '%% KMSCLIENT%% ' AND NOT Name like '%% MondoR_KMS_Automation%% ') get Name > " !_temp! \sppchk.txt " 2 >& 1
find /i " Office 19 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off19 = 1)
find /i " Office 16 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off16 = 1)
find /i " Office 15 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off15 = 1)
for %% A in ( 15,16,19) do if !loc_off%%A! EQU 0 set vol_off %% A = 0
if %vol_off16% EQU 1 find /i " Office16MondoVL_KMS_Client " " !_temp! \sppchk.txt " %_Nul1% && (
wmic path %spp% where 'ApplicationID=" %_oApp% " AND LicenseFamily like " Office16O365 %% " ' get LicenseFamily %_Nul2% | find /i " O365 " %_Nul1% || ( set vol_off16 = 0)
)
if %vol_off15% EQU 1 find /i " OfficeMondoVL_KMS_Client " " !_temp! \sppchk.txt " %_Nul1% && (
wmic path %spp% where 'ApplicationID=" %_oApp% " AND LicenseFamily like " OfficeO365 %% " ' get LicenseFamily %_Nul2% | find /i " O365 " %_Nul1% || ( set vol_off15 = 0)
)
set ret_off15 = 0& set ret_off16 = 0& set ret_off19 = 0
wmic path %spp% where (ApplicationID='%_oApp% ' AND NOT Name like '%% O365%% ') get Name > " !_temp! \sppchk.txt " 2 >& 1
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 19 " %_Nul1% && ( set ret_off19 = 1)
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 16 " %_Nul1% && ( set ret_off16 = 1)
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 15 " %_Nul1% && ( set ret_off15 = 1)
if %ret_off19% EQU 1 if %_O16MSI% EQU 0 set vol_off19 = 0
if %ret_off16% EQU 1 if %_O16MSI% EQU 0 set vol_off16 = 0
if %ret_off15% EQU 1 if %_O15MSI% EQU 0 set vol_off15 = 0
set loc_offgl = 1
if %loc_off19% EQU 0 if %loc_off16% EQU 0 if %loc_off15% EQU 0 set loc_offgl = 0
if %loc_offgl% EQU 1 set Off1ce = 1
set vol_offgl = 1
if %vol_off19% EQU 0 if %vol_off16% EQU 0 if %vol_off15% EQU 0 set vol_offgl = 0
: : mixed Volume + Retail scenario
if %loc_off19% EQU 1 if %vol_off19% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
if %loc_off16% EQU 1 if %vol_off16% EQU 0 if %vol_off19% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
if %loc_off15% EQU 1 if %vol_off15% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
: : all Volume scenario
if %vol_offgl% EQU 1 exit /b
set Off1ce = 0
: : nothing installed scenario
if %loc_offgl% EQU 0 ( echo :& echo No Installed Office 2013/2016/2019 Product Detected...& exit /b)
: : Retail C2R scenario
if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
: ReturnSPP
: : Retail MSI scenario or failed C2R-R2V scenario
echo :
if %loc_off15% EQU 1 if %vol_off15% EQU 0 echo Detected Office 2013 %nKMS%
if %loc_off16% EQU 1 if %vol_off16% EQU 0 echo Detected Office 2016 %nKMS%
if %loc_off19% EQU 1 if %vol_off19% EQU 0 echo Detected Office 2019 %nKMS%
echo Retail Products need to be converted to Volume first.
exit /b
: sppchkoff
wmic path %spp% where ID='%app% ' get Name > " !_temp! \sppchk.txt "
find /i " Office 15 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off15% EQU 0 exit /b)
find /i " Office 16 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off16% EQU 0 exit /b)
find /i " Office 19 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off19% EQU 0 exit /b)
set _office = 1
wmic path %spp% where (PartialProductKey is not NULL) get ID %_Nul2% | findstr /i " %app% " %_Nul1% && ( echo :& call : activate & exit /b)
for /f " tokens=3 delims==, " %% G in ( '"wmic path %spp% where ID=' %app% ' get Name /value"' ) do set OffVer = %% G
call : offchk%OffVer%
exit /b
: sppchkwin
set _office = 0
if %winbuild% GEQ 14393 if %_gvlk% EQU 0 wmic path %spp% where (ApplicationID='%_wApp% ' and Description like '%% KMSCLIENT%% ' and PartialProductKey is not NULL) get Name %_Nul2% | findstr /i Windows %_Nul1% && ( set _gvlk = 1)
wmic path %spp% where ID='%app% ' get LicenseStatus %_Nul2% | findstr " 1 " %_Nul1% && ( echo :& call : activate & exit /b)
wmic path %spp% where (PartialProductKey is not NULL) get ID %_Nul2% | findstr /i " %app% " %_Nul1% && ( echo :& call : activate & exit /b)
if %_gvlk% EQU 1 exit /b
if %WinPerm% EQU 1 exit /b
if %winbuild% LSS 10240 ( call : winchk & exit /b)
for %% A in (
b71515d9-89a2-4c60-88c8-656fbcca7f3a,af43f7f0-3b1e-4266-a123-1fdb53f4323b,075aca1f-05d7-42e5-a3ce-e349e7be7078
11a37f09-fb7f-4002-bd84-f3ae71d11e90,43f2ab05-7c87-4d56-b27c-44d0f9a3dabd,2cf5af84-abab-4ff0-83f8-f040fb2576eb
6ae51eeb-c268-4a21-9aae-df74c38b586d,ff808201-fec6-4fd4-ae16-abbddade5706,34260150-69ac-49a3-8a0d-4a403ab55763
4dfd543d-caa6-4f69-a95f-5ddfe2b89567,5fe40dd6-cf1f-4cf2-8729-92121ac2e997,903663f7-d2ab-49c9-8942-14aa9e0a9c72
2cc171ef-db48-4adc-af09-7c574b37f139,5b2add49-b8f4-42e0-a77c-adad4efeeeb1
) do (
if /i '%app% ' EQU '%% A' exit /b
)
if not defined EditionID ( call : winchk & exit /b)
if %winbuild% LSS 14393 ( call : winchk & exit /b)
if /i '%app% ' EQU '0df4f814-3f57-4b8b-9a9d-fddadcd69fac' if /i %EditionID% NEQ CloudE exit /b
if /i '%app% ' EQU 'e0c42288-980c-4788-a014-c080d2e1926e' if /i %EditionID% NEQ Education exit /b
if /i '%app% ' EQU '73111121-5638-40f6-bc11-f1d7b0d64300' if /i %EditionID% NEQ Enterprise exit /b
if /i '%app% ' EQU '2de67392-b7a7-462a-b1ca-108dd189f588' if /i %EditionID% NEQ Professional exit /b
if /i '%app% ' EQU '3f1afc82-f8ac-4f6c-8005-1d233e606eee' if /i %EditionID% NEQ ProfessionalEducation exit /b
if /i '%app% ' EQU '82bbc092-bc50-4e16-8e18-b74fc486aec3' if /i %EditionID% NEQ ProfessionalWorkstation exit /b
if /i '%app% ' EQU '3c102355-d027-42c6-ad23-2e7ef8a02585' if /i %EditionID% NEQ EducationN exit /b
if /i '%app% ' EQU 'e272e3e2-732f-4c65-a8f0-484747d0d947' if /i %EditionID% NEQ EnterpriseN exit /b
if /i '%app% ' EQU 'a80b5abf-76ad-428b-b05d-a47d2dffeebf' if /i %EditionID% NEQ ProfessionalN exit /b
if /i '%app% ' EQU '5300b18c-2e33-4dc2-8291-47ffcec746dd' if /i %EditionID% NEQ ProfessionalEducationN exit /b
if /i '%app% ' EQU '4b1571d3-bafb-4b40-8087-a961be2caf65' if /i %EditionID% NEQ ProfessionalWorkstationN exit /b
if /i '%app% ' EQU '58e97c99-f377-4ef1-81d5-4ad5522b5fd8' if /i %EditionID% NEQ Core exit /b
if /i '%app% ' EQU 'cd918a57-a41b-4c82-8dce-1a538e221a83' if /i %EditionID% NEQ CoreSingleLanguage exit /b
if /i '%app% ' EQU 'ec868e65-fadf-4759-b23e-93fe37f2cc29' if /i %EditionID% NEQ ServerRdsh exit /b
if /i '%app% ' EQU 'e4db50ea-bda1-4566-b047-0ca50abc6f07' if /i %EditionID% NEQ ServerRdsh exit /b
if /i '%app% ' EQU 'e4db50ea-bda1-4566-b047-0ca50abc6f07' (
wmic path %spp% where 'Description like " %% KMSCLIENT %% " ' get ID | findstr /i " ec868e65-fadf-4759-b23e-93fe37f2cc29 " %_Nul3% && ( exit /b)
)
call : winchk
exit /b
: winchk
if not defined tok ( if %winbuild% GEQ 9200 ( set " tok=4 " ) else ( set " tok=7 " ) )
wmic path %spp% where (LicenseStatus='1' and Description like '%% KMSCLIENT%% ') get Name %_Nul2% | findstr /i " Windows " %_Nul3% && ( exit /b)
echo :
wmic path %spp% where (LicenseStatus='1' and GracePeriodRemaining='0' and PartialProductKey is not NULL) get Name %_Nul2% | findstr /i " Windows " %_Nul3% && (
set WinPerm = 1
)
if %WinPerm% EQU 0 (
wmic path %spp% where " ApplicationID=' %_wApp% ' and LicenseStatus='1' " get Name %_Nul2% | findstr /i " Windows " %_Nul3% && (
for /f " tokens= %tok% delims=, " %% G in ( '"wmic path %spp% where (ApplicationID=' %_wApp% ' and LicenseStatus='1' ) get Description /VALUE" ') do set " channel=%% G"
for %% A in ( VOLUME_MAK, RETAIL, OEM_DM, OEM_SLP, OEM_COA, OEM_COA_SLP, OEM_COA_NSLP, OEM_NONSLP, OEM) do if /i " %% A " == " !channel! " set WinPerm = 1
)
)
if %WinPerm% EQU 0 (
copy /y %SysPath% \slmgr.vbs " !_temp! \slmgr.vbs " %_Nul3%
cscript //nologo " !_temp! \slmgr.vbs " /xpr %_Nul2% | findstr /i " permanently " %_Nul3% && set WinPerm = 1
)
if %WinPerm% EQU 1 (
for /f " tokens=2 delims== " %% x in ( '"wmic path %spp% where (ApplicationID=' %_wApp% ' and LicenseStatus='1' ) get Name /VALUE" ') do echo Checking: %% x
echo Product is Permanently Activated.
exit /b
)
call : insKey
exit /b
: RunOSPP
set spp = OfficeSoftwareProtectionProduct
set sps = OfficeSoftwareProtectionService
set Off1ce = 0
set RunR2V = 0
if %winbuild% LSS 9200 ( set " aword=2010/2013/2016/2019 " ) else ( set " aword=2010 " )
if %OsppHook% EQU 0 ( echo :& echo No Installed Office %aword% Product Detected...& exit /b)
if %winbuild% GEQ 9200 if %loc_off14% EQU 0 ( echo :& echo No Installed Office %aword% Product Detected...& exit /b)
if %winbuild% GEQ 9200 wmic path %spp% get Description %_Nul2% | findstr /i KMSCLIENT %_Nul1% || ( echo :& echo Detected Office %aword% %nKMS% & echo Retail Products need to be converted to Volume first.& exit /b)
if %winbuild% GEQ 9200 set Off1ce = 1
if %winbuild% LSS 9200 call : win7off
if %Off1ce% EQU 0 exit /b
set " vPrem= " & set " vProf= "
if %loc_off14% EQU 1 (
for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where (LicenseFamily='OfficeVisioPrem-MAK' ) get LicenseStatus /VALUE" %_Nul6% ') do set vPrem= %% A
for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where (LicenseFamily='OfficeVisioPro-MAK' ) get LicenseStatus /VALUE" %_Nul6% ') do set vProf= %% A
)
for /f " tokens=2 delims== " %% A in ( '"wmic path %sps% get Version /VALUE" %_Nul6% ' ) do set ver = %% A
wmic path %sps% where version='%ver% ' call SetKeyManagementServiceMachine MachineName=" %KMS_IP% " %_Nul3%
wmic path %sps% where version='%ver% ' call SetKeyManagementServicePort %KMS_Port% %_Nul3%
for /f " tokens=2 delims== " %% G in ( '"wmic path %spp% where (Description like ' %% KMSCLIENT %% ' ) get ID /VALUE" ') do (set app= %% G&call :osppchk)
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceDnsPublishing 0 %_Nul3%
wmic path %sps% where version='%ver% ' call DisableKeyManagementServiceHostCaching 0 %_Nul3%
exit /b
: win7off
set _sC2R = win7off
set _fC2R = ReturnOSPP
set vol_off14 = 0& set vol_off15 = 0& set vol_off16 = 0& set vol_off19 = 0
wmic path %spp% where (Description like '%% KMSCLIENT%% ' AND NOT Name like '%% MondoR_KMS_Automation%% ') get Name > " !_temp! \sppchk.txt " 2 >& 1
find /i " Office 19 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off19 = 1)
find /i " Office 16 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off16 = 1)
find /i " Office 15 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off15 = 1)
find /i " Office 14 " " !_temp! \sppchk.txt " %_Nul1% && ( set vol_off14 = 1)
for %% A in ( 14,15,16,19) do if !loc_off%%A! EQU 0 set vol_off %% A = 0
if %vol_off16% EQU 1 find /i " Office16MondoVL_KMS_Client " " !_temp! \sppchk.txt " %_Nul1% && (
wmic path %spp% where 'ApplicationID=" %_oApp% " AND LicenseFamily like " Office16O365 %% " ' get LicenseFamily %_Nul2% | find /i " O365 " %_Nul1% || ( set vol_off16 = 0)
)
if %vol_off15% EQU 1 find /i " OfficeMondoVL_KMS_Client " " !_temp! \sppchk.txt " %_Nul1% && (
wmic path %spp% where 'ApplicationID=" %_oApp% " AND LicenseFamily like " OfficeO365 %% " ' get LicenseFamily %_Nul2% | find /i " O365 " %_Nul1% || ( set vol_off15 = 0)
)
set ret_off15 = 0& set ret_off16 = 0& set ret_off19 = 0
wmic path %spp% where (ApplicationID='%_oApp% ' AND NOT Name like '%% O365%% ') get Name > " !_temp! \sppchk.txt " 2 >& 1
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 19 " %_Nul1% && ( set ret_off19 = 1)
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 16 " %_Nul1% && ( set ret_off16 = 1)
find /i " R_Retail " " !_temp! \sppchk.txt " %_Nul2% | find /i " Office 15 " %_Nul1% && ( set ret_off15 = 1)
if %ret_off19% EQU 1 if %_O16MSI% EQU 0 set vol_off19 = 0
if %ret_off16% EQU 1 if %_O16MSI% EQU 0 set vol_off16 = 0
if %ret_off15% EQU 1 if %_O15MSI% EQU 0 set vol_off15 = 0
set loc_offgl = 1
if %loc_off19% EQU 0 if %loc_off16% EQU 0 if %loc_off15% EQU 0 if %loc_off14% EQU 0 set loc_offgl = 0
if %loc_offgl% EQU 1 set Off1ce = 1
set vol_offgl = 1
: : mixed Volume + Retail scenario
if %vol_off19% EQU 0 if %vol_off16% EQU 0 if %vol_off15% EQU 0 if %vol_off14% EQU 0 set vol_offgl = 0
if %loc_off19% EQU 1 if %vol_off19% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
if %loc_off16% EQU 1 if %vol_off16% EQU 0 if %vol_off19% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
if %loc_off15% EQU 1 if %vol_off15% EQU 0 if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
: : all Volume scenario
if %vol_offgl% EQU 1 exit /b
set Off1ce = 0
: : nothing installed scenario
if %loc_offgl% EQU 0 ( echo :& echo No Installed Office %aword% Product Detected...& exit /b)
: : Retail C2R scenario
if %RunR2V% EQU 0 if %AutoR2V% EQU 1 goto : C2RR2V
: ReturnOSPP
: : Retail MSI scenario or failed C2R-R2V scenario
echo :
if %loc_off14% EQU 1 if %vol_off14% EQU 0 echo Detected Office 2010 %nKMS%
if %loc_off15% EQU 1 if %vol_off15% EQU 0 echo Detected Office 2013 %nKMS%
if %loc_off16% EQU 1 if %vol_off16% EQU 0 echo Detected Office 2016 %nKMS%
if %loc_off19% EQU 1 if %vol_off19% EQU 0 echo Detected Office 2019 %nKMS%
echo Retail Products need to be converted to Volume first.
exit /b
: osppchk
wmic path %spp% where ID='%app% ' get Name > " !_temp! \sppchk.txt "
find /i " Office 14 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off14% EQU 0 exit /b)
find /i " Office 15 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off15% EQU 0 exit /b)
find /i " Office 16 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off16% EQU 0 exit /b)
find /i " Office 19 " " !_temp! \sppchk.txt " %_Nul1% && ( if %loc_off19% EQU 0 exit /b)
set _office = 0
wmic path %spp% where (PartialProductKey is not NULL) get ID %_Nul2% | findstr /i " %app% " %_Nul1% && ( echo :& call : activate & exit /b)
for /f " tokens=3 delims==, " %% G in ( '"wmic path %spp% where ID=' %app% ' get Name /value"' ) do set OffVer = %% G
call : offchk%OffVer%
exit /b
: offchk
set ls = 0
set ls2 = 0
for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where (LicenseFamily='Office %~1 ' ) get LicenseStatus /VALUE" %_Nul6% ') do set /a ls= %% A
if " %~3 " NEQ " " (
for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where (LicenseFamily='Office %~3 ' ) get LicenseStatus /VALUE" %_Nul6% ') do set /a ls2= %% A
)
if " %ls2% " EQU " 1 " (
echo Checking: %~4
echo Product is Permanently Activated.
exit /b
)
if " %ls% " EQU " 1 " (
echo Checking: %~2
echo Product is Permanently Activated.
exit /b
)
call : insKey
exit /b
: offchk19
if /i '%app% ' EQU '0bc88885-718c-491d-921f-6f214349e79c' exit /b
if /i '%app% ' EQU 'fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9' exit /b
if /i '%app% ' EQU '500f6619-ef93-4b75-bcb4-82819998a3ca' exit /b
if /i '%app% ' EQU '85dd8b5f-eaa4-4af3-a628-cce9e77c9a03' (
call : offchk " 19ProPlus2019VL_MAK_AE " " Office ProPlus 2019 "
exit /b
)
if /i '%app% ' EQU '6912a74b-a5fb-401a-bfdb-2e3ab46f4b02' (
call : offchk " 19Standard2019VL_MAK_AE " " Office Standard 2019 "
exit /b
)
if /i '%app% ' EQU '2ca2bf3f-949e-446a-82c7-e25a15ec78c4' (
call : offchk " 19ProjectPro2019VL_MAK_AE " " Project Pro 2019 "
exit /b
)
if /i '%app% ' EQU '1777f0e3-7392-4198-97ea-8ae4de6f6381' (
call : offchk " 19ProjectStd2019VL_MAK_AE " " Project Standard 2019 "
exit /b
)
if /i '%app% ' EQU '5b5cf08f-b81a-431d-b080-3450d8620565' (
call : offchk " 19VisioPro2019VL_MAK_AE " " Visio Pro 2019 "
exit /b
)
if /i '%app% ' EQU 'e06d7df3-aad0-419d-8dfb-0ac37e2bdf39' (
call : offchk " 19VisioStd2019VL_MAK_AE " " Visio Standard 2019 "
exit /b
)
call : insKey
exit /b
: offchk16
if /i '%app% ' EQU 'd450596f-894d-49e0-966a-fd39ed4c4c64' (
call : offchk " 16ProPlusVL_MAK " " Office ProPlus 2016 "
exit /b
)
if /i '%app% ' EQU 'dedfa23d-6ed1-45a6-85dc-63cae0546de6' (
call : offchk " 16StandardVL_MAK " " Office Standard 2016 "
exit /b
)
if /i '%app% ' EQU '4f414197-0fc2-4c01-b68a-86cbb9ac254c' (
call : offchk " 16ProjectProVL_MAK " " Project Pro 2016 "
exit /b
)
if /i '%app% ' EQU 'da7ddabc-3fbe-4447-9e01-6ab7440b4cd4' (
call : offchk " 16ProjectStdVL_MAK " " Project Standard 2016 "
exit /b
)
if /i '%app% ' EQU '6bf301c1-b94a-43e9-ba31-d494598c47fb' (
call : offchk " 16VisioProVL_MAK " " Visio Pro 2016 "
exit /b
)
if /i '%app% ' EQU 'aa2a7821-1827-4c2c-8f1d-4513a34dda97' (
call : offchk " 16VisioStdVL_MAK " " Visio Standard 2016 "
exit /b
)
if /i '%app% ' EQU '829b8110-0e6f-4349-bca4-42803577788d' (
call : offchk " 16ProjectProXC2RVL_MAKC2R " " Project Pro 2016 C2R "
exit /b
)
if /i '%app% ' EQU 'cbbaca45-556a-4416-ad03-bda598eaa7c8' (
call : offchk " 16ProjectStdXC2RVL_MAKC2R " " Project Standard 2016 C2R "
exit /b
)
if /i '%app% ' EQU 'b234abe3-0857-4f9c-b05a-4dc314f85557' (
call : offchk " 16VisioProXC2RVL_MAKC2R " " Visio Pro 2016 C2R "
exit /b
)
if /i '%app% ' EQU '361fe620-64f4-41b5-ba77-84f8e079b1f7' (
call : offchk " 16VisioStdXC2RVL_MAKC2R " " Visio Standard 2016 C2R "
exit /b
)
call : insKey
exit /b
: offchk15
if /i '%app% ' EQU 'b322da9c-a2e2-4058-9e4e-f59a6970bd69' (
call : offchk " ProPlusVL_MAK " " Office ProPlus 2013 "
exit /b
)
if /i '%app% ' EQU 'b13afb38-cd79-4ae5-9f7f-eed058d750ca' (
call : offchk " StandardVL_MAK " " Office Standard 2013 "
exit /b
)
if /i '%app% ' EQU '4a5d124a-e620-44ba-b6ff-658961b33b9a' (
call : offchk " ProjectProVL_MAK " " Project Pro 2013 "
exit /b
)
if /i '%app% ' EQU '427a28d1-d17c-4abf-b717-32c780ba6f07' (
call : offchk " ProjectStdVL_MAK " " Project Standard 2013 "
exit /b
)
if /i '%app% ' EQU 'e13ac10e-75d0-4aff-a0cd-764982cf541c' (
call : offchk " VisioProVL_MAK " " Visio Pro 2013 "
exit /b
)
if /i '%app% ' EQU 'ac4efaf0-f81f-4f61-bdf7-ea32b02ab117' (
call : offchk " VisioStdVL_MAK " " Visio Standard 2013 "
exit /b
)
call : insKey
exit /b
: offchk14
if /i '%app% ' EQU '6f327760-8c5c-417c-9b61-836a98287e0c' (
call : offchk " ProPlus-MAK " " Office ProPlus 2010 " " ProPlusAcad-MAK " " Office Professional Academic 2010 "
exit /b
)
if /i '%app% ' EQU '9da2a678-fb6b-4e67-ab84-60dd6a9c819a' (
call : offchk " Standard-MAK " " Office Standard 2010 " " StandardAcad-MAK " " Office Standard Academic 2010 "
exit /b
)
if /i '%app% ' EQU 'ea509e87-07a1-4a45-9edc-eba5a39f36af' (
call : offchk " SmallBusBasics-MAK " " Office Small Business Basics 2010 "
exit /b
)
if /i '%app% ' EQU 'df133ff7-bf14-4f95-afe3-7b48e7e331ef' (
call : offchk " ProjectPro-MAK " " Project Pro 2010 "
exit /b
)
if /i '%app% ' EQU '5dc7bf61-5ec9-4996-9ccb-df806a2d0efe' (
call : offchk " ProjectStd-MAK " " Project Standard 2010 " " ProjectStd-MAK2 " " Project Standard 2010 "
exit /b
)
if /i '%app% ' EQU '92236105-bb67-494f-94c7-7f7a607929bd' (
call : offchk " VisioPrem-MAK " " Visio Premium 2010 " " VisioPro-MAK " " Visio Pro 2010 "
exit /b
)
if defined vPrem exit /b
if /i '%app% ' EQU 'e558389c-83c3-4b29-adfe-5e4d7f46c358' (
call : offchk " VisioPro-MAK " " Visio Pro 2010 " " VisioStd-MAK " " Visio Standard 2010 "
exit /b
)
if defined vProf exit /b
if /i '%app% ' EQU '9ed833ff-4f92-4f36-b370-8683a4f13275' (
call : offchk " VisioStd-MAK " " Visio Standard 2010 "
exit /b
)
call : insKey
exit /b
: officeLoc
set loc_off %1 = 0
if %1 EQU 19 (
if defined _C16R reg query %_C16R% /v ProductReleaseIds %_Nul2% | findstr 2019 %_Nul1% && set loc_off %1 = 1
exit /b
)
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ %1 .0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " (
set loc_off %1 = 1
if %1 EQU 16 set _O16MSI = 1
if %1 EQU 15 set _O15MSI = 1
)
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\ %1 .0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " (
set loc_off %1 = 1
if %1 EQU 16 set _O16MSI = 1
if %1 EQU 15 set _O15MSI = 1
)
if %1 EQU 16 if defined _C16R (
for /f " skip=2 tokens=2* " %% a in ( 'reg query %_C16R% /v ProductReleaseIds' ) do echo %% b> " !_temp! \c2rchk.txt "
for %% a in ( %_V16Ids% ,ProjectProX,ProjectStdX,VisioProX,VisioStdX) do (
findstr /I /C:" %% aVolume " " !_temp! \c2rchk.txt " %_Nul1% && set loc_off %1 = 1
)
for %% a in ( %_R16Ids% ) do (
findstr /I /C:" %% aRetail " " !_temp! \c2rchk.txt " %_Nul1% && set loc_off %1 = 1
)
exit /b
)
if %1 EQU 15 if defined _C15R (
set loc_off %1 = 1
exit /b
)
if exist " %ProgramFiles% \Microsoft Office\Office %1 \OSPP.VBS " set loc_off %1 = 1
if %xOS% == x64 if exist " %ProgramW6432% \Microsoft Office\Office %1 \OSPP.VBS " set loc_off %1 = 1
if %xOS% == x64 if exist " %ProgramFiles(x86)% \Microsoft Office\Office %1 \OSPP.VBS " set loc_off %1 = 1
exit /b
: insKey
echo :
set " _key= "
for /f " tokens=2 delims== " %% A in ( '"wmic path %spp% where ID=' %app% ' get Name /VALUE"' ) do echo Installing Key for: %% A
call : keys %app%
if " %_key% " == " " ( echo Could not find matching KMS Client key& exit /b)
wmic path %sps% where version='%ver% ' call InstallProductKey ProductKey=" %_key% " %_Nul3%
set ERRORCODE = %ERRORLEVEL%
if %ERRORCODE% NEQ 0 (
cmd /c exit /b %ERRORCODE%
echo Failed: 0x!=ExitCode!
exit /b
)
if %sps% EQU SoftwareLicensingService wmic path %sps% where version='%ver% ' call RefreshLicenseStatus %_Nul3%
: activate
wmic path %spp% where ID='%app% ' call ClearKeyManagementServiceMachine %_Nul3%
wmic path %spp% where ID='%app% ' call ClearKeyManagementServicePort %_Nul3%
if %W1nd0ws% EQU 0 if %_office% EQU 0 if %sps% EQU SoftwareLicensingService (
wmic path %spp% where ID='%app% ' call SetKeyManagementServiceMachine MachineName=" 127.0.0.2 " %_Nul3%
wmic path %spp% where ID='%app% ' call SetKeyManagementServicePort %KMS_Port% %_Nul3%
for /f " tokens=2 delims== " %% x in ( '"wmic path %spp% where ID=' %app% ' get Name /VALUE"' ) do echo Checking: %% x
echo Product is KMS 2038 Activated.
exit /b
)
for /f " tokens=2 delims== " %% x in ( '"wmic path %spp% where ID=' %app% ' get Name /VALUE"' ) do echo Activating: %% x
wmic path %spp% where ID='%app% ' call Activate %_Nul3%
call set ERRORCODE = %ERRORLEVEL%
if %ERRORCODE% NEQ 0 (
if %sps% EQU SoftwareLicensingService ( call : StopService sppsvc) else ( call : StopService osppsvc)
wmic path %spp% where ID='%app% ' call Activate %_Nul3%
call set ERRORCODE = !ERRORLEVEL!
)
if %sps% EQU SoftwareLicensingService wmic path %sps% where version='%ver% ' call RefreshLicenseStatus %_Nul3%
set gpr = 0
set gpr2 = 0
for /f " tokens=2 delims== " %% x in ( '"wmic path %spp% where ID=' %app% ' get GracePeriodRemaining /VALUE"' ) do ( set gpr = %% x& set /a " gpr2=( %% x+1440-1)/1440 " )
if %gpr% EQU 43200 if %_office% EQU 0 if %winbuild% GEQ 9200 (
%EchoGreen% Product Activation Successful
echo Remaining Period: %gpr2% days ^( %gpr% minutes^)
exit /b
)
if %gpr% EQU 64800 (
%EchoGreen% Product Activation Successful
echo Remaining Period: %gpr2% days ^( %gpr% minutes^)
exit /b
)
if %gpr% GTR 259200 if %Win10Gov% EQU 1 (
%EchoGreen% Product Activation Successful
echo Remaining Period: %gpr2% days ^( %gpr% minutes^)
exit /b
)
if %gpr% EQU 259200 (
%EchoGreen% Product Activation Successful
echo Remaining Period: %gpr2% days ^( %gpr% minutes^)
exit /b
)
cmd /c exit /b %ERRORCODE%
if %ERRORCODE% NEQ 0 ( %EchoRed% Product Activation Failed: 0x!=ExitCode!) else ( %EchoRed% Product Activation Failed)
echo Remaining Period: %gpr2% days ^( %gpr% minutes^)
set activation_ok = 0
exit /b
: StopService
sc query %1 | find /i " STOPPED " %_Nul1% || net stop %1 /y %_Nul3%
sc query %1 | find /i " STOPPED " %_Nul1% || sc stop %1 %_Nul3%
goto : eof
: UpdateOSPPEntry
if /i %1 EQU osppsvc.exe (
reg add " HKLM\ %OPPk% " /f /v KeyManagementServiceName /t REG_SZ /d %KMS_IP% %_Nul3%
reg add " HKLM\ %OPPk% " /f /v KeyManagementServicePort /t REG_SZ /d %KMS_Port% %_Nul3%
)
goto : eof
: C2RR2V
set RunR2V = 1
set " _SLMGR= %SysPath% \slmgr.vbs "
if %_Debug% EQU 0 (
set " _cscript=cscript //Nologo //B "
) else (
set " _cscript=cscript //Nologo "
)
sc query ClickToRunSvc %_Nul3%
set error1 = %errorlevel%
sc query OfficeSvc %_Nul3%
set error2 = %errorlevel%
if %error1% EQU 1060 if %error2% EQU 1060 (
goto : %_fC2R%
)
set _Office16 = 0
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" %_Nul6% ' ) do if exist " %% b\root\Licenses16\ProPlus*.xrm-ms " (
set _Office16 = 1
)
set _Office15 = 0
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath" %_Nul6% ' ) do if exist " %% b\root\Licenses\ProPlus*.xrm-ms " (
set _Office15 = 1
)
if %_Office16% EQU 0 if %_Office15% EQU 0 (
goto : %_fC2R%
)
: Reg16istry
if %_Office16% EQU 0 goto : Reg15istry
set " _InstallRoot= "
set " _ProductIds= "
set " _GUID= "
set " _Config= "
set " _PRIDs= "
set " _LicensesPath= "
set " _Integrator= "
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" %_Nul6% ' ) do if not errorlevel 1 ( set " _InstallRoot= %% b\root " )
if not " %_InstallRoot% " == " " (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v PackageGUID" %_Nul6% ' ) do if not errorlevel 1 ( set " _GUID= %% b " )
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds" %_Nul6% ' ) do if not errorlevel 1 ( set " _ProductIds= %% b " )
set " _Config=HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration "
set " _PRIDs=HKLM\SOFTWARE\Microsoft\Office\ClickToRun\ProductReleaseIDs "
)
set " _LicensesPath= %_InstallRoot% \Licenses16 "
set " _Integrator= %_InstallRoot% \integration\integrator.exe "
for /f " skip=2 tokens=2* " %% a in ( '"reg query %_PRIDs% /v ActiveConfiguration" %_Nul6% ' ) do set " _PRIDs= %_PRIDs% \ %% b "
if " %_ProductIds% " == " " (
if %_Office15% EQU 0 ( goto : %_fC2R% ) else ( goto : Reg15istry )
)
if not exist " %_LicensesPath% \ProPlus*.xrm-ms " (
if %_Office15% EQU 0 ( goto : %_fC2R% ) else ( goto : Reg15istry )
)
if not exist " %_Integrator% " (
if %_Office15% EQU 0 ( goto : %_fC2R% ) else ( goto : Reg15istry )
)
if exist " %_LicensesPath% \Word2019VL_KMS_Client_AE*.xrm-ms " ( set " _tag=2019 " & set " _ons= 2019 " ) else ( set " _tag= " & set " _ons= 2016 " )
if %_Office15% EQU 0 goto : CheckC2R
: Reg15istry
set " _Install15Root= "
set " _Product15Ids= "
set " _Con15fig= "
set " _PR15IDs= "
set " _OSPP15Ready= "
set " _Licenses15Path= "
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath" %_Nul6% ' ) do if not errorlevel 1 ( set " _Install15Root= %% b\root " )
if not " %_Install15Root% " == " " (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration /v ProductReleaseIds" %_Nul6% ' ) do if not errorlevel 1 ( set " _Product15Ids= %% b " )
set " _Con15fig=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration /v ProductReleaseIds "
set " _PR15IDs=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\ProductReleaseIDs "
set " _OSPP15Ready=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\Configuration "
)
set " _OSPP15ReadT=REG_SZ "
if " %_Product15Ids% " == " " (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid" %_Nul6% ' ) do if not errorlevel 1 ( set " _Product15Ids= %% b " )
set " _Con15fig=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun\propertyBag /v productreleaseid "
set " _OSPP15Ready=HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun "
set " _OSPP15ReadT=REG_DWORD "
)
set " _Licenses15Path= %_Install15Root% \Licenses "
if exist " %ProgramFiles% \Microsoft Office\Office15\OSPP.VBS " (
set " _OSPP15VBS= %ProgramFiles% \Microsoft Office\Office15\OSPP.VBS "
) else if exist "%ProgramW6432%\Microsoft Office\Office15\OSPP.VBS" (
set " _OSPP15VBS= %ProgramW6432% \Microsoft Office\Office15\OSPP.VBS "
) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office15\OSPP.VBS" (
set " _OSPP15VBS= %ProgramFiles(x86)% \Microsoft Office\Office15\OSPP.VBS "
)
if " %_Product15Ids% " == " " (
if %_Office16% EQU 0 ( goto : %_fC2R% ) else ( goto : CheckC2R )
)
if not exist " %_Licenses15Path% \ProPlus*.xrm-ms " (
if %_Office16% EQU 0 ( goto : %_fC2R% ) else ( goto : CheckC2R )
)
if %winbuild% LSS 9200 if not exist " %_OSPP15VBS% " (
if %_Office16% EQU 0 ( goto : %_fC2R% ) else ( goto : CheckC2R )
)
: CheckC2R
set _OMSI = 0
if %_Office16% EQU 0 (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\16.0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " set _OMSI = 1
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " set _OMSI = 1
)
if %_Office15% EQU 0 (
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " set _OMSI = 1
for /f " skip=2 tokens=2* " %% a in ( '"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Common\InstallRoot /v Path" %_Nul6% ' ) do if exist " %% b\OSPP.VBS " set _OMSI = 1
)
if %winbuild% GEQ 9200 (
set _spp = SoftwareLicensingProduct
set _sps = SoftwareLicensingService
set " _vbsi= %_SLMGR% /ilc "
) else (
set _spp = OfficeSoftwareProtectionProduct
set _sps = OfficeSoftwareProtectionService
set _vbsi = " !_OSPP15VBS! " /inslic:
)
set " _wmi= "
for /f " tokens=2 delims== " %% # in ( '"wmic path %_sps% get version /value" %_Nul6% ' ) do if not errorlevel 1 set " _wmi= %% # "
if not defined _wmi (
goto : %_fC2R%
)
set _Retail = 0
wmic path %_spp% where " ApplicationID=' %_oApp% ' AND LicenseStatus='1' AND PartialProductKey<>NULL " get Description %_Nul2% | findstr /V /R " ^ $ " > " !_temp! \crvRetail.txt "
find /i " RETAIL channel " " !_temp! \crvRetail.txt " %_Nul1% && set _Retail = 1
find /i " RETAIL(MAK) channel " " !_temp! \crvRetail.txt " %_Nul1% && set _Retail = 1
find /i " TIMEBASED_SUB channel " " !_temp! \crvRetail.txt " %_Nul1% && set _Retail = 1
set " _copp= "
if exist " %SysPath% \msvcr100.dll " (
set _copp = 1
) else if exist "!_InstallRoot!\vfs\System\msvcr100.dll" (
set _copp = " !_InstallRoot! \vfs\System "
) else if exist "!_Install15Root!\vfs\System\msvcr100.dll" (
set _copp = " !_Install15Root! \vfs\System "
) else if exist "%SystemRoot%\SysWOW64\msvcr100.dll" (
set _copp = 1
set xBit = x86
) else if exist "!_InstallRoot!\vfs\SystemX86\msvcr100.dll" (
set _copp = " !_InstallRoot! \vfs\SystemX86 "
set xBit = x86
) else if exist "!_Install15Root!\vfs\SystemX86\msvcr100.dll" (
set _copp = " !_Install15Root! \vfs\SystemX86 "
set xBit = x86
)
if not exist " !_work! \bin\cleanospp %xBit% .exe " (
set " _copp= "
)
if %_Retail% EQU 0 if %_OMSI% EQU 0 if defined _copp (
if " !_copp! " == " 1 " (
%_Nul3% " !_work! \bin\cleanospp %xBit% .exe " -Licenses
) else (
pushd %_copp%
%_Nul3% copy /y " !_work! \bin\cleanospp %xBit% .exe " cleanospp.exe
%_Nul3% cleanospp.exe -Licenses
%_Nul3% del /f /q cleanospp.exe
popd
)
)
set _O16O365 = 0
if %_Retail% EQU 1 wmic path %_spp% where " ApplicationID=' %_oApp% ' AND LicenseStatus='1' AND PartialProductKey<>NULL " get LicenseFamily %_Nul2% | findstr /V /R " ^ $ " > " !_temp! \crvRetail.txt "
wmic path %_spp% where " ApplicationID=' %_oApp% ' " get LicenseFamily %_Nul2% | findstr /V /R " ^ $ " > " !_temp! \crvVolume.txt " 2 >& 1
if %_Office16% EQU 0 goto : R15V
set _O19Ids = ProPlus2019,ProjectPro2019,VisioPro2019,Standard2019,ProjectStd2019,VisioStd2019,Access2019,SkypeforBusiness2019
set _O16Ids = ProjectPro,VisioPro,Standard,ProjectStd,VisioStd,Access,SkypeforBusiness
set _A19Ids = Excel2019,Outlook2019,PowerPoint2019,Publisher2019,Word2019
set _A16Ids = Excel,Outlook,PowerPoint,Publisher,Word
set _V19Ids = %_O19Ids% ,%_A19Ids%
set _V16Ids = Mondo,%_O16Ids% ,%_A16Ids% ,OneNote
set _R16Ids = %_V16Ids% ,Professional,HomeBusiness,HomeStudent,O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud
set _RetIds = %_V19Ids% ,Professional2019,HomeBusiness2019,HomeStudent2019,%_R16Ids%
echo %_ProductIds% > " !_temp! \crvProductIds.txt "
for %% a in ( %_RetIds% ,ProPlus) do (
set _ %% a = 0
)
for %% a in ( %_RetIds% ) do (
findstr /I /C:" %% aRetail " " !_temp! \crvProductIds.txt " %_Nul1% && set _ %% a = 1
)
for %% a in ( %_V19Ids% ) do (
findstr /I /C:" %% aVolume " " !_temp! \crvProductIds.txt " %_Nul1% && (
find /i " Office19 %% aVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ %% a = 0) || ( set _ %% a = 1)
)
)
for %% a in ( %_V16Ids% ) do (
findstr /I /C:" %% aVolume " " !_temp! \crvProductIds.txt " %_Nul1% && (
find /i " Office16 %% aVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ %% a = 0) || ( set _ %% a = 1)
)
)
reg query %_PRIDs% \ProPlusRetail.16 %_Nul3% && (
find /i " Office16ProPlusVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ProPlus = 0) || ( set _ProPlus = 1)
)
reg query %_PRIDs% \ProPlusVolume.16 %_Nul3% && (
find /i " Office16ProPlusVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ProPlus = 0) || ( set _ProPlus = 1)
)
if %_Retail% EQU 1 for %% a in ( %_RetIds% ) do (
findstr /I /C:" %% aRetail " " !_temp! \crvProductIds.txt " %_Nul1% && (
find /i " Office16 %% aR_Retail " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aR_OEM " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aR_Sub " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aR_PIN " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aE5R_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aEDUR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aMSDNR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aO365R_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aCO365R_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aVL_MAK " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office16 %% aXC2RVL_MAKC2R " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office19 %% aR_Retail " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office19 %% aR_OEM " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office19 %% aMSDNR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office19 %% aVL_MAK " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
)
)
if %_Retail% EQU 1 reg query %_PRIDs% \ProPlusRetail.16 %_Nul3% && (
find /i " Office16ProPlusR_Retail " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " Office16ProPlusR_OEM " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " Office16ProPlusMSDNR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " Office16ProPlusVL_MAK " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
)
set _C16Msg = 0
for %% a in ( %_RetIds% ,ProPlus) do if !_%%a! EQU 1 (
set _C16Msg = 1
)
if %_C16Msg% EQU 1 (
echo :
echo Converting Office C2R Retail-to-Volume:
)
if %_C16Msg% EQU 0 ( if %_Office15% EQU 1 ( goto : R15V ) else ( goto : GVLKC2R ) )
if !_Mondo! EQU 1 (
call : InsLic Mondo
)
if !_O365ProPlus! EQU 1 (
echo O365ProPlus 2016 Suite ^< -^> Mondo 2016 Licenses
call : InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK
if !_Mondo! EQU 0 call : InsLic Mondo
)
if !_O365Business! EQU 1 if !_O365ProPlus! EQU 0 (
set _O365ProPlus = 1
echo O365Business 2016 Suite ^< -^> Mondo 2016 Licenses
call : InsLic O365Business NCHRJ-3VPGW-X73DM-6B36K-3RQ6B
if !_Mondo! EQU 0 call : InsLic Mondo
)
if !_O365SmallBusPrem! EQU 1 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 (
set _O365ProPlus = 1
echo O365SmallBusPrem 2016 Suite ^< -^> Mondo 2016 Licenses
call : InsLic O365SmallBusPrem 3FBRX-NFP7C-6JWVK-F2YGK-H499R
if !_Mondo! EQU 0 call : InsLic Mondo
)
if !_O365HomePrem! EQU 1 if !_O365SmallBusPrem! EQU 0 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 (
set _O365ProPlus = 1
echo O365HomePrem 2016 Suite ^< -^> Mondo 2016 Licenses
call : InsLic O365HomePrem 9FNY8-PWWTY-8RY4F-GJMTV-KHGM9
if !_Mondo! EQU 0 call : InsLic Mondo
)
if !_O365EduCloud! EQU 1 if !_O365HomePrem! EQU 0 if !_O365SmallBusPrem! EQU 0 if !_O365Business! EQU 0 if !_O365ProPlus! EQU 0 (
set _O365ProPlus = 1
echo O365EduCloud 2016 Suite ^< -^> Mondo 2016 Licenses
call : InsLic O365EduCloud 8843N-BCXXD-Q84H8-R4Q37-T3CPT
if !_Mondo! EQU 0 call : InsLic Mondo
)
if !_O365ProPlus! EQU 1 set _O16O365 = 1
if !_Mondo! EQU 1 if !_O365ProPlus! EQU 0 (
echo Mondo 2016 Suite
call : InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK
if %_Office15% EQU 1 ( goto : R15V ) else ( goto : GVLKC2R )
)
if !_ProPlus2019! EQU 1 if !_O365ProPlus! EQU 0 (
echo ProPlus 2019 Suite
call : InsLic ProPlus%_tag%
)
if !_ProPlus! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 (
echo ProPlus 2016 Suite -^> ProPlus%_ons% Licenses
call : InsLic ProPlus%_tag%
)
if !_Professional2019! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 (
echo Professional 2019 Suite -^> ProPlus%_ons% Licenses
call : InsLic ProPlus%_tag%
)
if !_Professional! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 (
echo Professional 2016 Suite -^> ProPlus%_ons% Licenses
call : InsLic ProPlus%_tag%
)
if !_Standard2019! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 (
echo Standard 2019 Suite
call : InsLic Standard2019
)
if !_Standard! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2019! EQU 0 (
echo Standard 2016 Suite -^> Standard%_ons% Licenses
call : InsLic Standard%_tag%
)
for %% a in ( ProjectPro,VisioPro,ProjectStd,VisioStd) do if !_%%a2019! EQU 1 (
echo %% a 2019 SKU
if defined _tag ( call : InsLic %% a2019) else ( call : InsLic %% a)
)
for %% a in ( ProjectPro,VisioPro,ProjectStd,VisioStd) do if !_%%a! EQU 1 (
if !_%%a2019! EQU 0 (
echo %% a 2016 SKU -^> %% a%_ons% Licenses
call : InsLic %% a%_tag%
)
)
for %% a in ( HomeBusiness2019,HomeStudent2019) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 (
set _Standard2019 = 1
echo %% a Suite -^> Standard 2019 Licenses
call : InsLic Standard2019
)
)
for %% a in ( HomeBusiness,HomeStudent) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2019! EQU 0 (
set _Standard2019 = 1
echo %% a 2016 Suite -^> Standard%_ons% Licenses
call : InsLic Standard%_tag%
)
)
for %% a in ( %_A19Ids% ,OneNote) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 (
echo %% a App
call : InsLic %% a
)
)
for %% a in ( %_A16Ids% ) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_Standard2019! EQU 0 if !_Standard! EQU 0 if !_%%a2019! EQU 0 (
echo %% a 2016 App
call : InsLic %% a%_tag%
)
)
for %% a in ( Access2019) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 (
echo %% a App
call : InsLic %% a
)
)
for %% a in ( Access) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_Professional2019! EQU 0 if !_Professional! EQU 0 if !_%%a2019! EQU 0 (
echo %% a 2016 App
call : InsLic %% a%_tag%
)
)
for %% a in ( SkypeforBusiness2019) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 (
echo %% a App
call : InsLic %% a
)
)
for %% a in ( SkypeforBusiness) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus2019! EQU 0 if !_ProPlus! EQU 0 if !_%%a2019! EQU 0 (
echo %% a 2016 App
call : InsLic %% a%_tag%
)
)
if %_Office15% EQU 1 ( goto : R15V ) else ( goto : GVLKC2R )
: R15V
for %% # in ( " !_Licenses15Path! \client-issuance-*.xrm-ms " ) do (
%_cscript% %_vbsi% " !_Licenses15Path! \ %% ~nx# "
)
%_cscript% %_vbsi% " !_Licenses15Path! \pkeyconfig-office.xrm-ms "
set _O15Ids = Standard,ProjectPro,VisioPro,ProjectStd,VisioStd,Access,Lync
set _A15Ids = Excel,Groove,InfoPath,OneNote,Outlook,PowerPoint,Publisher,Word
set _R15Ids = SPD,Mondo,%_O15Ids% ,%_A15Ids% ,Professional,HomeBusiness,HomeStudent,O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem
set _V15Ids = Mondo,%_O15Ids% ,%_A15Ids%
echo %_Product15Ids% > " !_temp! \crvProduct15s.txt "
for %% a in ( %_R15Ids% ,ProPlus) do (
set _ %% a = 0
)
for %% a in ( %_R15Ids% ) do (
findstr /I /C:" %% aRetail " " !_temp! \crvProduct15s.txt " %_Nul1% && set _ %% a = 1
)
for %% a in ( %_V15Ids% ) do (
findstr /I /C:" %% aVolume " " !_temp! \crvProduct15s.txt " %_Nul1% && (
find /i " Office %% aVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ %% a = 0) || ( set _ %% a = 1)
)
)
reg query %_PR15IDs% \Active\ProPlusRetail\x-none %_Nul3% && (
find /i " OfficeProPlusVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ProPlus = 0) || ( set _ProPlus = 1)
)
reg query %_PR15IDs% \Active\ProPlusVolume\x-none %_Nul3% && (
find /i " OfficeProPlusVL_KMS_Client " " !_temp! \crvVolume.txt " %_Nul1% && ( set _ProPlus = 0) || ( set _ProPlus = 1)
)
if %_Retail% EQU 1 for %% a in ( %_R15Ids% ) do (
findstr /I /C:" %% aRetail " " !_temp! \crvProduct15s.txt " %_Nul1% && (
find /i " Office %% aR_Retail " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aR_OEM " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aR_Sub " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aR_PIN " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aMSDNR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aO365R_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aCO365R_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
find /i " Office %% aVL_MAK " " !_temp! \crvRetail.txt " %_Nul1% && set _ %% a = 0
)
)
if %_Retail% EQU 1 reg query %_PR15IDs% \Active\ProPlusRetail\x-none %_Nul3% && (
find /i " OfficeProPlusR_Retail " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " OfficeProPlusR_OEM " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " OfficeProPlusMSDNR_ " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
find /i " OfficeProPlusVL_MAK " " !_temp! \crvRetail.txt " %_Nul1% && set _ProPlus = 0
)
set _C15Msg = 0
for %% a in ( %_R15Ids% ,ProPlus) do if !_%%a! EQU 1 (
set _C15Msg = 1
)
if %_C15Msg% EQU 1 if %_C16Msg% EQU 0 (
echo :
echo Converting Office C2R Retail-to-Volume:
)
if %_C15Msg% EQU 0 goto : GVLKC2R
if !_Mondo! EQU 1 (
call : Ins15Lic Mondo
)
if !_O365ProPlus! EQU 1 if !_O16O365! EQU 0 (
echo O365ProPlus 2013 Suite ^< -^> Mondo 2013 Licenses
call : Ins15Lic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK
if !_Mondo! EQU 0 call : Ins15Lic Mondo
)
if !_O365SmallBusPrem! EQU 1 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 (
set _O365ProPlus = 1
echo O365SmallBusPrem 2013 Suite ^< -^> Mondo 2013 Licenses
call : Ins15Lic O365SmallBusPrem 3FBRX-NFP7C-6JWVK-F2YGK-H499R
if !_Mondo! EQU 0 call : Ins15Lic Mondo
)
if !_O365HomePrem! EQU 1 if !_O365SmallBusPrem! EQU 0 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 (
set _O365ProPlus = 1
echo O365HomePrem 2013 Suite ^< -^> Mondo 2013 Licenses
call : Ins15Lic O365HomePrem 9FNY8-PWWTY-8RY4F-GJMTV-KHGM9
if !_Mondo! EQU 0 call : Ins15Lic Mondo
)
if !_O365Business! EQU 1 if !_O365HomePrem! EQU 0 if !_O365SmallBusPrem! EQU 0 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 (
set _O365ProPlus = 1
echo O365Business 2013 Suite ^< -^> Mondo 2013 Licenses
call : Ins15Lic O365Business MCPBN-CPY7X-3PK9R-P6GTT-H8P8Y
if !_Mondo! EQU 0 call : Ins15Lic Mondo
)
if !_Mondo! EQU 1 if !_O365ProPlus! EQU 0 if !_O16O365! EQU 0 (
echo Mondo 2013 Suite
call : Ins15Lic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK
goto : GVLKC2R
)
if !_SPD! EQU 1 if !_Mondo! EQU 0 if !_O365ProPlus! EQU 0 (
echo SharePoint Designer 2013 App -^> Mondo 2013 Licenses
call : Ins15Lic Mondo
goto : GVLKC2R
)
if !_ProPlus! EQU 1 if !_O365ProPlus! EQU 0 (
echo ProPlus 2013 Suite
call : Ins15Lic ProPlus
)
if !_Professional! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 (
echo Professional 2013 Suite -^> ProPlus 2013 Licenses
call : Ins15Lic ProPlus
)
if !_Standard! EQU 1 if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 (
echo Standard 2013 Suite
call : Ins15Lic Standard
)
for %% a in ( ProjectPro,VisioPro,ProjectStd,VisioStd) do if !_%%a! EQU 1 (
echo %% a 2013 SKU
call : Ins15Lic %% a
)
for %% a in ( HomeBusiness,HomeStudent) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 if !_Standard! EQU 0 (
set _Standard = 1
echo %% a 2013 Suite -^> Standard 2013 Licenses
call : Ins15Lic Standard
)
)
for %% a in ( %_A15Ids% ) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 if !_Standard! EQU 0 (
echo %% a 2013 App
call : Ins15Lic %% a
)
)
for %% a in ( Access) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 if !_Professional! EQU 0 (
echo %% a 2013 App
call : Ins15Lic %% a
)
)
for %% a in ( Lync) do if !_%%a! EQU 1 (
if !_O365ProPlus! EQU 0 if !_ProPlus! EQU 0 (
echo SkypeforBusiness 2015 App
call : Ins15Lic %% a
)
)
goto : GVLKC2R
: InsLic
set " _ID= %1 Volume "
set " _pkey= "
if not " %2 " == " " (
set " _ID= %1 Retail "
set " _pkey=PidKey= %2 "
)
reg delete %_Config% /f /v %_ID% .OSPPReady %_Nul3%
" !_Integrator! " /I /License PRIDName=%_ID% .16 %_pkey% PackageGUID=" %_GUID% " PackageRoot=" !_InstallRoot! " %_Nul1%
reg add %_Config% /f /v %_ID% .OSPPReady /t REG_SZ /d 1 %_Nul1%
reg query %_Config% /v ProductReleaseIds | findstr /I " %_ID% " %_Nul1%
if %errorlevel% NEQ 0 (
for /f " skip=2 tokens=2* " %% a in ( 'reg query %_Config% /v ProductReleaseIds' ) do reg add %_Config% /v ProductReleaseIds /t REG_SZ /d " %% b, %_ID% " /f %_Nul1%
)
exit /b
: Ins15Lic
set " _ID= %1 Volume "
set " _patt= %1 VL_ "
set " _pkey= "
if not " %2 " == " " (
set " _ID= %1 Retail "
set " _patt= %1 R_ "
set " _pkey= %2 "
)
reg delete %_OSPP15Ready% /f /v %_ID% .OSPPReady %_Nul3%
for %% # in ( " !_Licenses15Path! \ %_patt% *.xrm-ms " ) do (
%_cscript% %_vbsi% " !_Licenses15Path! \ %% ~nx# "
)
if defined _pkey wmic path %_sps% where version='%_wmi% ' call InstallProductKey ProductKey=" %_pkey% " %_Nul3%
reg add %_OSPP15Ready% /f /v %_ID% .OSPPReady /t %_OSPP15ReadT% /d 1 %_Nul1%
reg query %_Con15fig% | findstr /I " %_ID% " %_Nul1%
if %errorlevel% NEQ 0 (
for /f " skip=2 tokens=2* " %% a in ( 'reg query %_Con15fig% ' ) do reg add %_Con15fig% /t REG_SZ /d " %% b, %_ID% " /f %_Nul1%
)
exit /b
: GVLKC2R
if %_Office16% EQU 1 (
for %% a in ( %_RetIds% ,ProPlus) do set " _ %% a= "
)
if %_Office15% EQU 1 (
for %% a in ( %_R15Ids% ,ProPlus) do set " _ %% a= "
)
if %winbuild% GEQ 9200 wmic path %_sps% where version='%_wmi% ' call RefreshLicenseStatus %_Nul3%
if exist " %SysPath% \spp\store_test\2.0\tokens.dat " if defined _copp (
%_cscript% %_SLMGR% /rilc
)
goto : %_sC2R%
: keys
if " %~1 " == " " exit /b
goto : %1 %_Nul2%
: : Windows 10 [RS5]
: 32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee
set " _key=M7XTQ-FN8P6-TTKYV-9D4CC-J462D " & :: Enterprise LTSC 2019
exit /b
: 7103a333-b8c8-49cc-93ce-d37c09687f92
set " _key=92NFX-8DJQP-P6BBQ-THF9C-7CG2H " & :: Enterprise LTSC 2019 N
exit /b
: ec868e65-fadf-4759-b23e-93fe37f2cc29
set " _key=CPWHC-NT2C7-VYW78-DHDB2-PG3GK " & :: Enterprise for Virtual Desktops
exit /b
: 0df4f814-3f57-4b8b-9a9d-fddadcd69fac
set " _key=NBTWJ-3DR69-3C4V8-C26MC-GQ9M6 " & :: Lean
exit /b
: : Windows 10 [RS3]
: 82bbc092-bc50-4e16-8e18-b74fc486aec3
set " _key=NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J " & :: Pro Workstation
exit /b
: 4b1571d3-bafb-4b40-8087-a961be2caf65
set " _key=9FNHH-K3HBT-3W4TD-6383H-6XYWF " & :: Pro Workstation N
exit /b
: e4db50ea-bda1-4566-b047-0ca50abc6f07
set " _key=7NBT4-WGBQX-MP4H7-QXFF8-YP3KX " & :: Enterprise Remote Server
exit /b
: : Windows 10 [RS2]
: e0b2d383-d112-413f-8a80-97f373a5820c
set " _key=YYVX9-NTFWV-6MDM3-9PT4T-4M68B " & :: Enterprise G
exit /b
: e38454fb-41a4-4f59-a5dc-25080e354730
set " _key=44RPN-FTY23-9VTTB-MP9BX-T84FV " & :: Enterprise G N
exit /b
: : Windows 10 [RS1]
: 2d5a5a60-3040-48bf-beb0-fcd770c20ce0
set " _key=DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ " & :: Enterprise 2016 LTSB
exit /b
: 9f776d83-7156-45b2-8a5c-359b9c9f22a3
set " _key=QFFDN-GRT3P-VKWWX-X7T3R-8B639 " & :: Enterprise 2016 LTSB N
exit /b
: 3f1afc82-f8ac-4f6c-8005-1d233e606eee
set " _key=6TP4R-GNPTD-KYYHQ-7B7DP-J447Y " & :: Pro Education
exit /b
: 5300b18c-2e33-4dc2-8291-47ffcec746dd
set " _key=YVWGF-BXNMC-HTQYQ-CPQ99-66QFC " & :: Pro Education N
exit /b
: : Windows 10 [TH]
: 58e97c99-f377-4ef1-81d5-4ad5522b5fd8
set " _key=TX9XD-98N7V-6WMQ6-BX7FG-H8Q99 " & :: Home
exit /b
: 7b9e1751-a8da-4f75-9560-5fadfe3d8e38
set " _key=3KHY7-WNT83-DGQKR-F7HPR-844BM " & :: Home N
exit /b
: cd918a57-a41b-4c82-8dce-1a538e221a83
set " _key=7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH " & :: Home Single Language
exit /b
: a9107544-f4a0-4053-a96a-1479abdef912
set " _key=PVMJN-6DFY6-9CCP6-7BKTT-D3WVR " & :: Home China
exit /b
: 2de67392-b7a7-462a-b1ca-108dd189f588
set " _key=W269N-WFGWX-YVC9B-4J6C9-T83GX " & :: Pro
exit /b
: a80b5abf-76ad-428b-b05d-a47d2dffeebf
set " _key=MH37W-N47XK-V7XM9-C7227-GCQG9 " & :: Pro N
exit /b
: e0c42288-980c-4788-a014-c080d2e1926e
set " _key=NW6C2-QMPVW-D7KKK-3GKT6-VCFB2 " & :: Education
exit /b
: 3c102355-d027-42c6-ad23-2e7ef8a02585
set " _key=2WH4N-8QGBV-H22JP-CT43Q-MDWWJ " & :: Education N
exit /b
: 73111121-5638-40f6-bc11-f1d7b0d64300
set " _key=NPPR9-FWDCX-D2C8J-H872K-2YT43 " & :: Enterprise
exit /b
: e272e3e2-732f-4c65-a8f0-484747d0d947
set " _key=DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4 " & :: Enterprise N
exit /b
: 7b51a46c-0c04-4e8f-9af4-8496cca90d5e
set " _key=WNMTR-4C88C-JK8YV-HQ7T2-76DF9 " & :: Enterprise 2015 LTSB
exit /b
: 87b838b7-41b6-4590-8318-5797951d8529
set " _key=2F77B-TNFGY-69QQF-B8YKP-D69TJ " & :: Enterprise 2015 LTSB N
exit /b
: : Windows Server 2019 [RS5]
: de32eafd-aaee-4662-9444-c1befb41bde2
set " _key=N69G4-B89J2-4G8F4-WWYCC-J464C " & :: Standard
exit /b
: 34e1ae55-27f8-4950-8877-7a03be5fb181
set " _key=WMDGN-G9PQG-XVVXX-R3X43-63DFG " & :: Datacenter
exit /b
: 034d3cbb-5d4b-4245-b3f8-f84571314078
set " _key=WVDHN-86M7X-466P6-VHXV7-YY726 " & :: Essentials
exit /b
: a99cc1f0-7719-4306-9645-294102fbff95
set " _key=FDNH6-VW9RW-BXPJ7-4XTYG-239TB " & :: Azure Core
exit /b
: 73e3957c-fc0c-400d-9184-5f7b6f2eb409
set " _key=N2KJX-J94YW-TQVFB-DG9YT-724CC " & :: Standard ACor
exit /b
: 90c362e5-0da1-4bfd-b53b-b87d309ade43
set " _key=6NMRW-2C8FM-D24W7-TQWMY-CWH2D " & :: Datacenter ACor
exit /b
: 8de8eb62-bbe0-40ac-ac17-f75595071ea3
set " _key=GRFBW-QNDC4-6QBHG-CCK3B-2PR88 " & :: ServerARM64
exit /b
: : Windows Server 2016 [RS4]
: 43d9af6e-5e86-4be8-a797-d072a046896c
set " _key=K9FYF-G6NCK-73M32-XMVPY-F9DRR " & :: ServerARM64
exit /b
: : Windows Server 2016 [RS3]
: 61c5ef22-f14f-4553-a824-c4b31e84b100
set " _key=PTXN8-JFHJM-4WC78-MPCBR-9W4KR " & :: Standard ACor
exit /b
: e49c08e7-da82-42f8-bde2-b570fbcae76c
set " _key=2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG " & :: Datacenter ACor
exit /b
: : Windows Server 2016 [RS1]
: 8c1c5410-9f39-4805-8c9d-63a07706358f
set " _key=WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY " & :: Standard
exit /b
: 21c56779-b449-4d20-adfc-eece0e1ad74b
set " _key=CB7KF-BWN84-R7R2Y-793K2-8XDDG " & :: Datacenter
exit /b
: 2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283
set " _key=JCKRF-N37P4-C2D82-9YXRT-4M63B " & :: Essentials
exit /b
: 7b4433f4-b1e7-4788-895a-c45378d38253
set " _key=QN4C6-GBJD2-FB422-GHWJK-GJG2R " & :: Cloud Storage
exit /b
: 3dbf341b-5f6c-4fa7-b936-699dce9e263f
set " _key=VP34G-4NPPG-79JTQ-864T4-R3MQX " & :: Azure Core
exit /b
: : Windows 8.1
: fe1c3238-432a-43a1-8e25-97e7d1ef10f3
set " _key=M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK " & :: Core
exit /b
: 78558a64-dc19-43fe-a0d0-8075b2a370a3
set " _key=7B9N3-D94CG-YTVHR-QBPX3-RJP64 " & :: Core N
exit /b
: c72c6a1d-f252-4e7e-bdd1-3fca342acb35
set " _key=BB6NG-PQ82V-VRDPW-8XVD2-V8P66 " & :: Core Single Language
exit /b
: db78b74f-ef1c-4892-abfe-1e66b8231df6
set " _key=NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3 " & :: Core China
exit /b
: ffee456a-cd87-4390-8e07-16146c672fd0
set " _key=XYTND-K6QKT-K2MRH-66RTM-43JKP " & :: Core ARM
exit /b
: c06b6981-d7fd-4a35-b7b4-054742b7af67
set " _key=GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 " & :: Pro
exit /b
: 7476d79f-8e48-49b4-ab63-4d0b813a16e4
set " _key=HMCNV-VVBFX-7HMBH-CTY9B-B4FXY " & :: Pro N
exit /b
: 096ce63d-4fac-48a9-82a9-61ae9e800e5f
set " _key=789NJ-TQK6T-6XTH8-J39CJ-J8D3P " & :: Pro with Media Center
exit /b
: 81671aaf-79d1-4eb1-b004-8cbbe173afea
set " _key=MHF9N-XY6XB-WVXMC-BTDCT-MKKG7 " & :: Enterprise
exit /b
: 113e705c-fa49-48a4-beea-7dd879b46b14
set " _key=TT4HM-HN7YT-62K67-RGRQJ-JFFXW " & :: Enterprise N
exit /b
: 0ab82d54-47f4-4acb-818c-cc5bf0ecb649
set " _key=NMMPB-38DD4-R2823-62W8D-VXKJB " & :: Embedded Industry Pro
exit /b
: cd4e2d9f-5059-4a50-a92d-05d5bb1267c7
set " _key=FNFKF-PWTVT-9RC8H-32HB2-JB34X " & :: Embedded Industry Enterprise
exit /b
: f7e88590-dfc7-4c78-bccb-6f3865b99d1a
set " _key=VHXM3-NR6FT-RY6RT-CK882-KW2CJ " & :: Embedded Industry Automotive
exit /b
: e9942b32-2e55-4197-b0bd-5ff58cba8860
set " _key=3PY8R-QHNP9-W7XQD-G6DPH-3J2C9 " & :: with Bing
exit /b
: c6ddecd6-2354-4c19-909b-306a3058484e
set " _key=Q6HTR-N24GM-PMJFP-69CD8-2GXKR " & :: with Bing N
exit /b
: b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c
set " _key=KF37N-VDV38-GRRTV-XH8X6-6F3BB " & :: with Bing Single Language
exit /b
: ba998212-460a-44db-bfb5-71bf09d1c68b
set " _key=R962J-37N87-9VVK2-WJ74P-XTMHR " & :: with Bing China
exit /b
: e58d87b5-8126-4580-80fb-861b22f79296
set " _key=MX3RK-9HNGX-K3QKC-6PJ3F-W8D7B " & :: Pro for Students
exit /b
: cab491c7-a918-4f60-b502-dab75e334f40
set " _key=TNFGH-2R6PB-8XM3K-QYHX2-J4296 " & :: Pro for Students N
exit /b
: : Windows Server 2012 R2
: b3ca044e-a358-4d68-9883-aaa2941aca99
set " _key=D2N9P-3P6X9-2R39C-7RTCD-MDVJX " & :: Standard
exit /b
: 00091344-1ea4-4f37-b789-01750ba6988c
set " _key=W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9 " & :: Datacenter
exit /b
: 21db6ba4-9a7b-4a14-9e29-64a60c59301d
set " _key=KNC87-3J2TX-XB4WP-VCPJV-M4FWM " & :: Essentials
exit /b
: b743a2be-68d4-4dd3-af32-92425b7bb623
set " _key=3NPTF-33KPT-GGBPR-YX76B-39KDD " & :: Cloud Storage
exit /b
: : Windows 8
: c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60
set " _key=BN3D2-R7TKB-3YPBD-8DRP2-27GG4 " & :: Core
exit /b
: 197390a0-65f6-4a95-bdc4-55d58a3b0253
set " _key=8N2M2-HWPGY-7PGT9-HGDD8-GVGGY " & :: Core N
exit /b
: 8860fcd4-a77b-4a20-9045-a150ff11d609
set " _key=2WN2H-YGCQR-KFX6K-CD6TF-84YXQ " & :: Core Single Language
exit /b
: 9d5584a2-2d85-419a-982c-a00888bb9ddf
set " _key=4K36P-JN4VD-GDC6V-KDT89-DYFKP " & :: Core China
exit /b
: af35d7b7-5035-4b63-8972-f0b747b9f4dc
set " _key=DXHJF-N9KQX-MFPVR-GHGQK-Y7RKV " & :: Core ARM
exit /b
: a98bcd6d-5343-4603-8afe-5908e4611112
set " _key=NG4HW-VH26C-733KW-K6F98-J8CK4 " & :: Pro
exit /b
: ebf245c1-29a8-4daf-9cb1-38dfc608a8c8
set " _key=XCVCF-2NXM9-723PB-MHCB7-2RYQQ " & :: Pro N
exit /b
: a00018a3-f20f-4632-bf7c-8daa5351c914
set " _key=GNBB8-YVD74-QJHX6-27H4K-8QHDG " & :: Pro with Media Center
exit /b
: 458e1bec-837a-45f6-b9d5-925ed5d299de
set " _key=32JNW-9KQ84-P47T8-D8GGY-CWCK7 " & :: Enterprise
exit /b
: e14997e7-800a-4cf7-ad10-de4b45b578db
set " _key=JMNMF-RHW7P-DMY6X-RF3DR-X2BQT " & :: Enterprise N
exit /b
: 10018baf-ce21-4060-80bd-47fe74ed4dab
set " _key=RYXVT-BNQG7-VD29F-DBMRY-HT73M " & :: Embedded Industry Pro
exit /b
: 18db1848-12e0-4167-b9d7-da7fcda507db
set " _key=NKB3R-R2F8T-3XCDP-7Q2KW-XWYQ2 " & :: Embedded Industry Enterprise
exit /b
: : Windows Server 2012
: f0f5ec41-0d55-4732-af02-440a44a3cf0f
set " _key=XC9B7-NBPP2-83J2H-RHMBY-92BT4 " & :: Standard
exit /b
: d3643d60-0c42-412d-a7d6-52e6635327f6
set " _key=48HP8-DN98B-MYWDG-T2DCC-8W83P " & :: Datacenter
exit /b
: 7d5486c7-e120-4771-b7f1-7b56c6d3170c
set " _key=HM7DN-YVMH3-46JC3-XYTG7-CYQJJ " & :: MultiPoint Standard
exit /b
: 95fd1c83-7df5-494a-be8b-1300e1c9d1cd
set " _key=XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G " & :: MultiPoint Premium
exit /b
: : Windows 7
: b92e9980-b9d5-4821-9c94-140f632f6312
set " _key=FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4 " & :: Professional
exit /b
: 54a09a0d-d57b-4c10-8b69-a842d6590ad5
set " _key=MRPKT-YTG23-K7D7T-X2JMM-QY7MG " & :: Professional N
exit /b
: 5a041529-fef8-4d07-b06f-b59b573b32d2
set " _key=W82YF-2Q76Y-63HXB-FGJG9-GF7QX " & :: Professional E
exit /b
: ae2ee509-1b34-41c0-acb7-6d4650168915
set " _key=33PXH-7Y6KF-2VJC9-XBBR8-HVTHH " & :: Enterprise
exit /b
: 1cb6d605-11b3-4e14-bb30-da91c8e3983a
set " _key=YDRBP-3D83W-TY26F-D46B2-XCKRJ " & :: Enterprise N
exit /b
: 46bbed08-9c7b-48fc-a614-95250573f4ea
set " _key=C29WB-22CC8-VJ326-GHFJW-H9DH4 " & :: Enterprise E
exit /b
: db537896-376f-48ae-a492-53d0547773d0
set " _key=YBYF6-BHCR3-JPKRB-CDW7B-F9BK4 " & :: Embedded POSReady 7
exit /b
: e1a8296a-db37-44d1-8cce-7bc961d59c54
set " _key=XGY72-BRBBT-FF8MH-2GG8H-W7KCW " & :: Embedded Standard
exit /b
: aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395
set " _key=73KQT-CD9G6-K7TQG-66MRP-CQ22C " & :: Embedded ThinPC
exit /b
: : Windows Server 2008 R2
: a78b8bd9-8017-4df5-b86a-09f756affa7c
set " _key=6TPJF-RBVHG-WBW2R-86QPH-6RTM4 " & :: Web
exit /b
: cda18cf3-c196-46ad-b289-60c072869994
set " _key=TT8MH-CG224-D3D7Q-498W2-9QCTX " & :: HPC
exit /b
: 68531fb9-5511-4989-97be-d11a0f55633f
set " _key=YC6KT-GKW9T-YTKYR-T4X34-R7VHC " & :: Standard
exit /b
: 7482e61b-c589-4b7f-8ecc-46d455ac3b87
set " _key=74YFP-3QFB3-KQT8W-PMXWJ-7M648 " & :: Datacenter
exit /b
: 620e2b3d-09e7-42fd-802a-17a13652fe7a
set " _key=489J6-VHDMP-X63PK-3K798-CPX3Y " & :: Enterprise
exit /b
: 8a26851c-1c7e-48d3-a687-fbca9b9ac16b
set " _key=GT63C-RJFQ3-4GMB6-BRFB9-CB83V " & :: Itanium
exit /b
: f772515c-0e87-48d5-a676-e6962c3e1195
set " _key=736RG-XDKJK-V34PF-BHK87-J6X3K " & :: MultiPoint Server ServerEmbeddedSolution
exit /b
: : Office 2019
: 0bc88885-718c-491d-921f-6f214349e79c
set " _key=VQ9DP-NVHPH-T9HJC-J9PDT-KTQRG " & :: Professional Plus C2R-P
exit /b
: fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9
set " _key=XM2V9-DN9HH-QB449-XDGKC-W2RMW " & :: Project Professional C2R-P
exit /b
: 500f6619-ef93-4b75-bcb4-82819998a3ca
set " _key=N2CG9-YD3YK-936X4-3WR82-Q3X4H " & :: Visio Professional C2R-P
exit /b
: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
set " _key=NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP " & :: Professional Plus
exit /b
: 6912a74b-a5fb-401a-bfdb-2e3ab46f4b02
set " _key=6NWWJ-YQWMR-QKGCB-6TMB3-9D9HK " & :: Standard
exit /b
: 2ca2bf3f-949e-446a-82c7-e25a15ec78c4
set " _key=B4NPR-3FKK7-T2MBV-FRQ4W-PKD2B " & :: Project Professional
exit /b
: 1777f0e3-7392-4198-97ea-8ae4de6f6381
set " _key=C4F7P-NCP8C-6CQPT-MQHV9-JXD2M " & :: Project Standard
exit /b
: 5b5cf08f-b81a-431d-b080-3450d8620565
set " _key=9BGNQ-K37YR-RQHF2-38RQ3-7VCBB " & :: Visio Professional
exit /b
: e06d7df3-aad0-419d-8dfb-0ac37e2bdf39
set " _key=7TQNQ-K3YQQ-3PFH7-CCPPM-X4VQ2 " & :: Visio Standard
exit /b
: 9e9bceeb-e736-4f26-88de-763f87dcc485
set " _key=9N9PT-27V4Y-VJ2PD-YXFMF-YTFQT " & :: Access
exit /b
: 237854e9-79fc-4497-a0c1-a70969691c6b
set " _key=TMJWT-YYNMB-3BKTF-644FC-RVXBD " & :: Excel
exit /b
: c8f8a301-19f5-4132-96ce-2de9d4adbd33
set " _key=7HD7K-N4PVK-BHBCQ-YWQRW-XW4VK " & :: Outlook
exit /b
: 3131fd61-5e4f-4308-8d6d-62be1987c92c
set " _key=RRNCX-C64HY-W2MM7-MCH9G-TJHMQ " & :: PowerPoint
exit /b
: 9d3e4cca-e172-46f1-a2f4-1d2107051444
set " _key=G2KWX-3NW6P-PY93R-JXK2T-C9Y9V " & :: Publisher
exit /b
: 734c6c6e-b0ba-4298-a891-671772b2bd1b
set " _key=NCJ33-JHBBY-HTK98-MYCV8-HMKHJ " & :: Skype for Business
exit /b
: 059834fe-a8ea-4bff-b67b-4d006b5447d3
set " _key=PBX3G-NWMT6-Q7XBW-PYJGG-WXD33 " & :: Word
exit /b
: : Office 2016
: 829b8110-0e6f-4349-bca4-42803577788d
set " _key=WGT24-HCNMF-FQ7XH-6M8K7-DRTW9 " & :: Project Professional C2R-P
exit /b
: cbbaca45-556a-4416-ad03-bda598eaa7c8
set " _key=D8NRQ-JTYM3-7J2DX-646CT-6836M " & :: Project Standard C2R-P
exit /b
: b234abe3-0857-4f9c-b05a-4dc314f85557
set " _key=69WXN-MBYV6-22PQG-3WGHK-RM6XC " & :: Visio Professional C2R-P
exit /b
: 361fe620-64f4-41b5-ba77-84f8e079b1f7
set " _key=NY48V-PPYYH-3F4PX-XJRKJ-W4423 " & :: Visio Standard C2R-P
exit /b
: e914ea6e-a5fa-4439-a394-a9bb3293ca09
set " _key=DMTCJ-KNRKX-26982-JYCKT-P7KB6 " & :: MondoR
exit /b
: 9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce
set " _key=HFTND-W9MK4-8B7MJ-B6C4G-XQBR2 " & :: Mondo
exit /b
: d450596f-894d-49e0-966a-fd39ed4c4c64
set " _key=XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99 " & :: Professional Plus
exit /b
: dedfa23d-6ed1-45a6-85dc-63cae0546de6
set " _key=JNRGM-WHDWX-FJJG3-K47QV-DRTFM " & :: Standard
exit /b
: 4f414197-0fc2-4c01-b68a-86cbb9ac254c
set " _key=YG9NW-3K39V-2T3HJ-93F3Q-G83KT " & :: Project Professional
exit /b
: da7ddabc-3fbe-4447-9e01-6ab7440b4cd4
set " _key=GNFHQ-F6YQM-KQDGJ-327XX-KQBVC " & :: Project Standard
exit /b
: 6bf301c1-b94a-43e9-ba31-d494598c47fb
set " _key=PD3PC-RHNGV-FXJ29-8JK7D-RJRJK " & :: Visio Professional
exit /b
: aa2a7821-1827-4c2c-8f1d-4513a34dda97
set " _key=7WHWN-4T7MP-G96JF-G33KR-W8GF4 " & :: Visio Standard
exit /b
: 67c0fc0c-deba-401b-bf8b-9c8ad8395804
set " _key=GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW " & :: Access
exit /b
: c3e65d36-141f-4d2f-a303-a842ee756a29
set " _key=9C2PK-NWTVB-JMPW8-BFT28-7FTBF " & :: Excel
exit /b
: d8cace59-33d2-4ac7-9b1b-9b72339c51c8
set " _key=DR92N-9HTF2-97XKM-XW2WJ-XW3J6 " & :: OneNote
exit /b
: ec9d9265-9d1e-4ed0-838a-cdc20f2551a1
set " _key=R69KK-NTPKF-7M3Q4-QYBHW-6MT9B " & :: Outlook
exit /b
: d70b1bba-b893-4544-96e2-b7a318091c33
set " _key=J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6 " & :: Powerpoint
exit /b
: 041a06cb-c5b8-4772-809f-416d03d16654
set " _key=F47MM-N3XJP-TQXJ9-BP99D-8K837 " & :: Publisher
exit /b
: 83e04ee1-fa8d-436d-8994-d31a862cab77
set " _key=869NQ-FJ69K-466HW-QYCP2-DDBV6 " & :: Skype for Business
exit /b
: bb11badf-d8aa-470e-9311-20eaf80fe5cc
set " _key=WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6 " & :: Word
exit /b
: : Office 2013
: dc981c6b-fc8e-420f-aa43-f8f33e5c0923
set " _key=42QTK-RN8M7-J3C4G-BBGYM-88CYV " & :: Mondo
exit /b
: b322da9c-a2e2-4058-9e4e-f59a6970bd69
set " _key=YC7DK-G2NP3-2QQC3-J6H88-GVGXT " & :: Professional Plus
exit /b
: b13afb38-cd79-4ae5-9f7f-eed058d750ca
set " _key=KBKQT-2NMXY-JJWGP-M62JB-92CD4 " & :: Standard
exit /b
: 4a5d124a-e620-44ba-b6ff-658961b33b9a
set " _key=FN8TT-7WMH6-2D4X9-M337T-2342K " & :: Project Professional
exit /b
: 427a28d1-d17c-4abf-b717-32c780ba6f07
set " _key=6NTH3-CW976-3G3Y2-JK3TX-8QHTT " & :: Project Standard
exit /b
: e13ac10e-75d0-4aff-a0cd-764982cf541c
set " _key=C2FG9-N6J68-H8BTJ-BW3QX-RM3B3 " & :: Visio Professional
exit /b
: ac4efaf0-f81f-4f61-bdf7-ea32b02ab117
set " _key=J484Y-4NKBF-W2HMG-DBMJC-PGWR7 " & :: Visio Standard
exit /b
: 6ee7622c-18d8-4005-9fb7-92db644a279b
set " _key=NG2JY-H4JBT-HQXYP-78QH9-4JM2D " & :: Access
exit /b
: f7461d52-7c2b-43b2-8744-ea958e0bd09a
set " _key=VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB " & :: Excel
exit /b
: fb4875ec-0c6b-450f-b82b-ab57d8d1677f
set " _key=H7R7V-WPNXQ-WCYYC-76BGV-VT7GH " & :: Groove
exit /b
: a30b8040-d68a-423f-b0b5-9ce292ea5a8f
set " _key=DKT8B-N7VXH-D963P-Q4PHY-F8894 " & :: InfoPath
exit /b
: 1b9f11e3-c85c-4e1b-bb29-879ad2c909e3
set " _key=2MG3G-3BNTT-3MFW9-KDQW3-TCK7R " & :: Lync
exit /b
: efe1f3e6-aea2-4144-a208-32aa872b6545
set " _key=TGN6P-8MMBC-37P2F-XHXXK-P34VW " & :: OneNote
exit /b
: 771c3afa-50c5-443f-b151-ff2546d863a0
set " _key=QPN8Q-BJBTJ-334K3-93TGY-2PMBT " & :: Outlook
exit /b
: 8c762649-97d1-4953-ad27-b7e2c25b972e
set " _key=4NT99-8RJFH-Q2VDH-KYG2C-4RD4F " & :: Powerpoint
exit /b
: 00c79ff1-6850-443d-bf61-71cde0de305f
set " _key=PN2WF-29XG2-T9HJ7-JQPJR-FCXK4 " & :: Publisher
exit /b
: d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3
set " _key=6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7 " & :: Word
exit /b
: : Office 2010
: 09ed9640-f020-400a-acd8-d7d867dfd9c2
set " _key=YBJTT-JG6MD-V9Q7P-DBKXJ-38W9R " & :: Mondo
exit /b
: ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c
set " _key=7TC2V-WXF6P-TD7RT-BQRXR-B8K32 " & :: Mondo2
exit /b
: 6f327760-8c5c-417c-9b61-836a98287e0c
set " _key=VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB " & :: Professional Plus
exit /b
: 9da2a678-fb6b-4e67-ab84-60dd6a9c819a
set " _key=V7QKV-4XVVR-XYV4D-F7DFM-8R6BM " & :: Standard
exit /b
: df133ff7-bf14-4f95-afe3-7b48e7e331ef
set " _key=YGX6F-PGV49-PGW3J-9BTGG-VHKC6 " & :: Project Professional
exit /b
: 5dc7bf61-5ec9-4996-9ccb-df806a2d0efe
set " _key=4HP3K-88W3F-W2K3D-6677X-F9PGB " & :: Project Standard
exit /b
: 92236105-bb67-494f-94c7-7f7a607929bd
set " _key=D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ " & :: Visio Premium
exit /b
: e558389c-83c3-4b29-adfe-5e4d7f46c358
set " _key=7MCW8-VRQVK-G677T-PDJCM-Q8TCP " & :: Visio Professional
exit /b
: 9ed833ff-4f92-4f36-b370-8683a4f13275
set " _key=767HD-QGMWX-8QTDB-9G3R2-KHFGJ " & :: Visio Standard
exit /b
: 8ce7e872-188c-4b98-9d90-f8f90b7aad02
set " _key=V7Y44-9T38C-R2VJK-666HK-T7DDX " & :: Access
exit /b
: cee5d470-6e3b-4fcc-8c2b-d17428568a9f
set " _key=H62QG-HXVKF-PP4HP-66KMR-CW9BM " & :: Excel
exit /b
: 8947d0b8-c33b-43e1-8c56-9b674c052832
set " _key=QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4 " & :: Groove (SharePoint Workspace)
exit /b
: ca6b6639-4ad6-40ae-a575-14dee07f6430
set " _key=K96W8-67RPQ-62T9Y-J8FQJ-BT37T " & :: InfoPath
exit /b
: ab586f5c-5256-4632-962f-fefd8b49e6f4
set " _key=Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX " & :: OneNote
exit /b
: ecb7c192-73ab-4ded-acf4-2399b095d0cc
set " _key=7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ " & :: Outlook
exit /b
: 45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a
set " _key=RC8FX-88JRY-3PF7C-X8P67-P4VTT " & :: Powerpoint
exit /b
: b50c4f75-599b-43e8-8dcd-1081a7967241
set " _key=BFK7F-9MYHM-V68C7-DRQ66-83YTP " & :: Publisher
exit /b
: 2d0882e7-a4e7-423b-8ccc-70d91e0158b1
set " _key=HVHB3-C6FV7-KQX9W-YQG79-CRY7T " & :: Word
exit /b
: ea509e87-07a1-4a45-9edc-eba5a39f36af
set " _key=D6QFG-VBYP2-XQHM7-J97RH-VVRCK " & :: Small Business Basics
exit /b
: TheEnd
if %Unattend% EQU 0 echo Press any key to exit.
%_Pause%
exit /b 0
2021-05-13 16:07:02 +00:00
: :========================================================================================================================================