KMS-VL-ALL.cmd Convert-Office.cmd

KMS-VL-ALL.cmd

@echo off
set /a _Debug=0
::=============================================================
:: 获取管理员权限
fltmc 1>nul 2>nul || (
  cd /d "%~dp0"
  cmd /u /c echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0", "", "runas", 1 > "%temp%GetAdmin.vbs"
  "%temp%GetAdmin.vbs"
  del /f /q "%temp%GetAdmin.vbs" 1>nul 2>nul
  exit
)
::=============================================================
:: No Debug, Define the nul suppressors
if %_Debug% EQU 0 (
  set "_Nul_1=1>nul"
  set "_Nul_2=2>nul"
  set "_Nul_2e=2^>nul"
  set "_Nul_1_2=1>nul 2>nul"
  goto :Begin
)
:: Debug, Clear all nul suppressors, Relaunch script redirecting output to log file
if %_Debug% NEQ 0 (
  set "_Nul_1="
  set "_Nul_2="
  set "_Nul_2e="
  set "_Nul_1_2="
  echo.
  echo Running in Debug Mode...
  echo The window will be closed when finished
)
if "%1" NEQ "" (
  @echo on
  goto :Begin
)
cd /d "%~dp0"
call "%~s0" debug >"%~sdp0KMS_VL_ALL_Debug.log" 2>&1
::=============================================================
:Begin
:: 设置脚本标题;颜色[背景]十六进制(0 至 F)中的[文本]
title KMS-VL-ALL-7.0RC [2018-03-28]
:: color 07
::===================
:: 获取完整合规的脚本文件名称
set "_FileName=%~f0"
::===================
:: 获取脚本所在的驱动器和路径
set "_FileDir=%~dp0"

::===================
:: 设置脚本任务名称
set "_TaskName=KMS_VL_ALL"
::===================
:: 设置启用扩展和延迟扩展变量
setlocal EnableExtensions EnableDelayedExpansion
::=============================================================
:: 以下参数可以是 0 (在线模式 - 用于外部 KMS 服务器) | 1 (离线模式 - 用于内部 KMS 服务器)
set /a _OfflineMode=1
::===================
:: 以下参数可以是 0 (删除自动续期任务或手动模式) | 1 (创建自动续期任务)
set /a _Task=0
::===================
:: 以下参数可以是 ONSTART | ONLOGON | MINUTE(1 - 1439) | HOURLY(1 - 23) | DAILY(1 - 365) | WEEKLY(1 - 52) | MONTHLY(1 - 12)
set "_TaskFrequency=ONLOGON"
:: 以下参数可以是上述范围之内的数值
set /a _TaskModifier=1
::=============================================================
:: 设置 KMS 服务器参数
::===================
:: 自定义 Windows ePID
set "_WindowsEPID=03612-00206-471-452343-03-1033-14393.0000-1082017"
:: 自定义 Windows 10 Enterprise G/GN ePID
set "_WindowsGEPID=03612-00206-471-452343-03-1033-14393.0000-1082017"
::===================
:: 自定义 Office 2010 ePID
set "_Office2010EPID=03612-00096-199-303490-03-1033-14393.0000-1082017"
::===================
:: 自定义 Office 2013 ePID
set "_Office2013EPID=03612-00206-234-394838-03-1033-14393.0000-1082017"
::===================
:: 自定义 Office 2016 ePID
set "_Office2016EPID=03612-00206-437-938923-03-1033-14393.0000-1082017"
::===================
:: 可以从真实的 KMS 服务器主机获取自定义硬件 ID
set "_HardwareID=3A1C049600B60076"
::===================
:: 以下参数可以是 0 (用户自定义 ePID) | 1 (每个会话的随机 ePID) | 2 (每个请求的随机 ePID)
set /a _RandomLevel=0
::===================
:: 以下参数可以是 (15 到 43200) 分钟;默认 - 2 小时,最大 - 30 天
set /a _KMSActivationInterval=43200
::===================
:: 以下参数可以是 (15 到 43200) 分钟;默认 - 7 天,最大 - 30 天
set /a _KMSRenewalInterval=43200
::=============================================================
:: 设置 KMS 客户端参数
::===================
:: _KMSHost 参数可以是 (0-255.0-255.0-255.0-255),但不是 127.x.x.x 或本地主机 IP [离线模式];KMS 服务器名称/IP [在线模式]
set "_KMSHost=172.16.0.4"
set "_KMSLocalHost=127.0.0.2"
::===================
:: 以下参数可以是 (1 到 65535) [离线模式]; 1688 [在线模式]
set /a _KMSPort=1686
::=============================================================
:: 设置 DLL Hook 的注册表项
set "_regKey=HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options"
::=============================================================
:: 设置 SPP 和 OSPP 的注册表项
set "_hkSPP=HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatform"
set "_huSPP=HKEY_USERSS-1-5-20SoftwareMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatform"
set "_hkOSPP=HKLMSOFTWAREMicrosoftOfficeSoftwareProtectionPlatform"
::=============================================================
:: 设置 KMS 正版凭证验证参数
::===================
:: 以下参数可以是 0 (启用正版凭证) | 1 (禁用正版凭证)
set /a _KMSNoGenTicket=1
::===================
:: 用于设置 KMS 正版许可证的注册表项
set "_KMSGenuineKey=HKLMSOFTWAREPoliciesMicrosoftWindows NTCurrentVersionSoftware Protection Platform"
::=============================================================
:: 前往脚本所在路径
pushd "!_FileDir!"
::===================
start "" /b "!_FileDir!32-bitkms10.exe"
:: 检查是否已安装[ 在 Windows XP SP3 或更高版本上的 Office 2010 ] 或 [ Office 2013 或更高版本在 Windows 7 / Server 2008 R2 上 ]
wmic path OfficeSoftwareProtectionService get Version %_Nul_1_2% && (
  set /a _OSPS=1
) || (
  set /a _OSPS=0
)
::===================
:: 检查 Office 2016 产品是否已实际安装
for %%A in (14,15,16) do (
  call :OfficeDetect %%A
)
::===================
:: 获取已安装的操作系统架构版本;操作系统语言环境独立于 Windows XP / Server 2003 及以上版本
for /f "tokens=2 delims==" %%G in ('wmic path Win32_Processor get AddressWidth /value') do (
  set "_OSarch=%%G-位"
)
::===================
:: Visual Studio 激活密钥
call :VisualStudio "12.0" "InstallDir" "" "87DQC-G8CYR-CRPJ4-QX9K8-RFV2B" "06181" "2013 Ultimate"
call :VisualStudio "14.0" "InstallDir" "" "HM6NR-QXX7C-DFW2Y-8B82K-WTYJV" "07060" "2015 Enterprise"
call :VisualStudio "SxSVS7" "15.0" "Common7IDE" "NJVYC-BMHX2-G77MM-4XJMR-6Q8QF" "08860" "2017 Enterprise"
::===================
:: 获取 Windows 操作系统内部版本号
for /f "tokens=2 delims==" %%G in ('wmic path Win32_OperatingSystem get BuildNumber /value') do (
  set /a _WinBuild=%%G
)
::===================
:: 定义已安装版本为Windows 10 -1607- 及以上版本
if %_WinBuild% LSS 14393 goto :Main
:: 获取基于活动 CBS 包的版本,或者退回到 Dism CurrentEdition
set "_CBS=HKLMSOFTWAREMicrosoftWindowsCurrentVersionComponent Based ServicingPackages"
set "_Pattern=Microsoft-Windows-*Edition~31bf3856ad364e35"
set "_EditionPkg=NUL"
for /f "tokens=8 delims=" %%A in ('reg query "%_CBS%" /f "%_Pattern%" /k %_Nul_2e% ^| find /i "CurrentVersion"') do (
  reg query "%_CBS%\%%A" /v "CurrentState" %_Nul_2% | find /i "0x70" %_Nul_1% && (
    for /f "tokens=3 delims=-~" %%B in ('echo %%A') do set "_EditionPkg=%%B"
  )
)
if /i "%_EditionPkg:~-7%"=="Edition" (
  set "_Edition=%_EditionPkg:~0,-7%"
) else (
  for /f "tokens=3 delims=: " %%A in ('dism /English /Online /Get-CurrentEdition %_Nul_2e% ^| find /i "Current Edition :"') do (
    set "_Edition=%%A"
  )
)
:: 根据当前已安装的产品密钥获取版本
for /f "tokens=2 delims==" %%A in ('"wmic path SoftwareLicensingProduct where (Name like 'Windows%%' and PartialProductKey is not NULL) get LicenseFamily /value"') do (
  set "_EditionWMI=%%A"
)
if not defined _EditionWMI goto :Main
:: Exclude Windows 10 S
for %%A in (Cloud,CloudN) do (
  if /i "%_EditionWMI%"=="%%A" goto :Main
)
set _Edition=%_EditionWMI%
::===================
:Main
:: 根据 Windows 内部版本号转到对应的主模块
if %_WinBuild% GEQ 9600 (
  REM 在 echo 消息中没有附带内容或括号
    echo.&echo 当前操作系统:Windows 10
  goto :Win8.1AndLater
) else if %_WinBuild% GEQ 2600 (
    echo.&echo 当前操作系统:Windows XP/7/8
  goto :Win8AndEarlier
) else (
    echo KMS_VL_ALL 不支持当前操作系统.
  echo.
    echo 5 秒后自动退出...
  ping 127.0.0.1 -n 6 %_Nul_1_2%
  exit
)
::=============================================================
:Close
:: 创建/删除基于参数的自动续期任务;兼容 Windows XP SP3 及以上版本
if %_Task% EQU 1 (
  schtasks /query /fo list %_Nul_2% | findstr /i "%_TaskName%" %_Nul_1% && (
    schtasks /delete /tn "%_TaskName%" /f %_Nul_1_2%
  )
  if /i %_TaskFrequency% EQU ONSTART (
    schtasks /create /tn "%_TaskName%" /ru "SYSTEM" /sc "%_TaskFrequency%" /tr "!_FileName!" %_Nul_1_2% && (
      echo.
      echo 自动续期任务已创建。
    )
  ) else if /i %_TaskFrequency% EQU ONLOGON (
    schtasks /create /tn "%_TaskName%" /ru "SYSTEM" /sc "%_TaskFrequency%" /tr "!_FileName!" %_Nul_1_2% && (
      echo.
      echo 自动续期任务已创建。
    )
  ) else (
    schtasks /create /tn "%_TaskName%" /ru "SYSTEM" /sc "%_TaskFrequency%" /mo "%_TaskModifier%" /tr "!_FileName!" %_Nul_1_2% && (
      echo.
      echo 自动续期任务已创建。
    )
  )
) else (
  schtasks /query /fo list %_Nul_2% | findstr /i "%_TaskName%" %_Nul_1% && (
    schtasks /delete /tn "%_TaskName%" /f %_Nul_1_2%
    echo.
    echo 自动续期任务已删除。
  )
)
echo.
echo 5 秒后自动退出...
ping 127.0.0.1 -n 6 %_Nul_1_2%
exit
::=============================================================
:Win8.1AndLater
if %_OfflineMode% EQU 1 (
  REM 停止‘sppsvc’和‘osppsvc’
  call :StopService "sppsvc"
  if %_OSPS% NEQ 0 (
    call :StopService "osppsvc"
  )
  REM 基于系统底层架构,复制 DLL 注入文件到 system32 文件夹
  robocopy "%_OSarch%" "%SystemRoot%system32" SppExtComObjHook.dll SppExtComObjPatcher.exe /njh /njs %_Nul_1_2%
  REM Create registry keys for DLL Hook
  call :CreateIFEOEntry "SppExtComObj.exe"
  if %_OSPS% NEQ 0 (
    call :CreateIFEOEntry "osppsvc.exe"
  )
  REM 为 VLMCSD 添加防火墙规则并启动 KMS 服务器
  call :AddFirewallRule
  call :StartKMS
)
::===================
:: 启用/禁用 Windows 8.1 及以上版本的 KMS 正版凭据验证
if %_WinBuild% GEQ 9600 (
  call :KMSGenuineTicket
)
::===================
:: 调用 Windows 和 Office 的主激活功能
call :SLSActivation
if %_OSPS% NEQ 0 (
  call :OSPSActivation
)
if %_OfflineMode% EQU 1 (
  REM 停止 KMS 服务器并移除 VLMCSD 防火墙规则
  call :StopKMS
  call :RemoveFirewallRule
  REM S停止‘sppsvc’和‘osppsvc’
  call :StopService "sppsvc"
  if %_OSPS% NEQ 0 (
    call :StopService "osppsvc"
  )
  REM 从 system32 文件夹中删除 DLL 注入文件
  del /f /q "%SystemRoot%system32SppExtComObjPatcher.exe" %_Nul_1_2%
  del /f /q "%SystemRoot%system32SppExtComObjHook.dll" %_Nul_1_2%
  REM 移除 DLL Hook 的注册表项
  call :RemoveIFEOEntry "SppExtComObj.exe"
  if %_OSPS% NEQ 0 (
    call :RemoveIFEOEntry "osppsvc.exe"
  )
  REM 启动‘sppsvc’
  sc start sppsvc trigger=timer;sessionid=0 %_Nul_1_2%
)
call :Close
::=============================================================
:Win8AndEarlier
:: 如果没有 Office 2010 产品被安装在 Windows XP SP3/Server 2003 R2 上,程序自动退出。
if %_OSPS% EQU 0 (
  if %_WinBuild% LSS 6000 (
    echo.
    echo 未检测到 Office 2010 产品……
    call :Close
  )
)
::===================
if %_OfflineMode% EQU 1 (
  REM 本机 IP 地址可以用于 Windows 8 及以下版本
  set "_KMSHost=%_KMSLocalHost%"
  REM Windows Vista 不支持 SetKeyManagementServicePort,因此还原为默认的 KMS 端口
  if %_WinBuild% LSS 7600 (
    set /a _KMSPort=1688
  )
  REM 为 VLMCSD 添加防火墙规则并启动 KMS 服务器
  call :AddFirewallRule
  call :StartKMS
)
::===================
:: 调用 Windows 和 Office 的激活主程序
if %_WinBuild% GEQ 6000 (
  call :SLSActivation
)
if %_OSPS% NEQ 0 (
  call :OSPSActivation
)
::===================
if %_OfflineMode% EQU 1 (
  REM 停止 KMS 服务器并移除 VLMCSD 的防火墙规则
  call :StopKMS
  call :RemoveFirewallRule
)
call :Close
::=============================================================
:AddFirewallRule
:: 添加 VLMCSD 的 KMS 规则到 Windows 防火墙;兼容 Windows XP SP3 及以上版本
if %_WinBuild% LSS 6000 (
  netsh firewall delete allowedprogram "!_FileDir!32-bitvlmcsd.exe" %_Nul_1_2%
  netsh firewall add allowedprogram "!_FileDir!32-bitvlmcsd.exe" "vlmcsd" %_Nul_1_2%
) else (
  netsh advfirewall firewall delete rule name="vlmcsd" %_Nul_1_2%
  netsh advfirewall firewall add rule name="vlmcsd" dir=in action=allow profile=any program="!_FileDir!32-bitvlmcsd.exe" %_Nul_1_2%
)
exit /b
::=============================================================
:RemoveFirewallRule
:: 从 Windows 防火墙移除 VLMCSD 的 KMS 规则
if %_WinBuild% LSS 6000 (
  netsh firewall delete allowedprogram "!_FileDir!32-bitvlmcsd.exe" %_Nul_1_2%
) else (
  netsh advfirewall firewall delete rule name="vlmcsd" %_Nul_1_2%
)
exit /b
::=============================================================
:StartKMS
:: 启动 VLMCSD 的 KMS 服务器
if %_RandomLevel% EQU 0 (
  start "" /b "!_FileDir!32-bitvlmcsd.exe" -P %_KMSPort% -0 %_Office2010EPID% -3 %_Office2013EPID% -6 %_Office2016EPID% -w %_WindowsEPID% -G %_WindowsGEPID% -H %_HardwareID% -R %_KMSRenewalInterval% -A %_KMSActivationInterval% -T0 -e %_Nul_1_2%
) else (
  start "" /b "!_FileDir!32-bitvlmcsd.exe" -r %_RandomLevel% -P %_KMSPort% -H %_HardwareID% -R %_KMSRenewalInterval% -A %_KMSActivationInterval% -T0 -e %_Nul_1_2%
)
::===================
:: 令人难以置信的 BUG 修复;Windows Vista 及以下版本需要一些时间才能启动 KMS 服务器防止激活;所以为它添加延迟以成功启动
if %_WinBuild% LSS 7600 (
  ping 127.0.0.1 -n 12 %_Nul_1_2%
)
exit /b
::=============================================================
:StopKMS
:: 停止使用 VLMCSD 的 KMS 服务器
taskkill /im "vlmcsd.exe" /t /f %_Nul_1_2%
exit /b
::=============================================================
:KMSGenuineTicket
:: 启用/禁用基于在用户的参数的 KMS 正版凭据验证注册密钥
reg add "%_KMSGenuineKey%" /v NoGenTicket /t REG_DWORD /d %_KMSNoGenTicket% /f %_Nul_1_2%
exit /b
::=============================================================
:CreateIFEOEntry
:: 创建基于参数的 DLL 注入注册序列
reg add "%_regKey%\%~1" /f /v "Debugger" /t REG_SZ /d "SppExtComObjPatcher.exe" %_Nul_1_2%
REM 由于我们使用外部 KMS 服务器,因此将 KMS_Emulation 设置为 0;1 用于注入文件中的内部 KMS 服务器
reg add "%_regKey%\%~1" /f /v "KMS_Emulation" /t REG_DWORD /d 0 %_Nul_1_2%
exit /b
::=============================================================
:RemoveIFEOEntry
:: 移除基于参数的 DLL 注入注册序列
if '%~1' NEQ 'osppsvc.exe' (
  reg delete "%_regKey%\%~1" /f %_Nul_1_2%
)
if '%~1' EQU 'osppsvc.exe' (
  reg delete "%_regKey%\%~1" /f /v "Debugger" %_Nul_1_2%
  reg delete "%_regKey%\%~1" /f /v "KMS_Emulation" %_Nul_1_2%
)
exit /b
::=============================================================
:StopService
:: 停止基于参数的服务
sc query "%1" | findstr /i "STOPPED" %_Nul_1_2% || (
  net stop "%1" /y %_Nul_1_2%
)
sc query "%1" | findstr /i "STOPPED" %_Nul_1_2% || (
  sc stop "%1" %_Nul_1_2%
)
exit /b
::=============================================================
:SLSActivation
reg delete "%_hkSPP%55c92734-d682-4d71-983e-d6ec3f16059f" /f %_Nul_1_2%
reg delete "%_hkSPP%ff1ce15-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
set "_MicrosoftProduct=SoftwareLicensingProduct"
set "_MicrosoftService=SoftwareLicensingService"
::===================
:: 检测 Office 2013 [批量许可] 及以上版本是否已被安装
wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%') get Name /value %_Nul_2% | findstr /i "Office" %_Nul_1% && (
  set /a _OfficeVL=1
) || (
  set /a _OfficeVL=0
  if %_WinBuild% GEQ 9200 (
    echo.
    echo 未检测到 Office 2013 及以上版本的 VL 产品;零售版本需要先转换为 VL 版本。
  )
)
::===================
:: 检查已安装的 Windows 是否支持 KMS 激活;如果没有 VolumeLicensed 的 Windows 或 Office 则退出
wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%') get Name /value %_Nul_2% | findstr /i "Windows" %_Nul_1% || (
  echo.
  echo 无法检测到支持 KMS 客户端的 Windows 版本……
  if %_OfficeVL% EQU 0 (
    exit /b
  )
)
::===================
:: 检查是否为 Windows 安装了 GVLK
wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%' and PartialProductKey is not NULL) get Name /value %_Nul_2% | findstr /i "Windows" %_Nul_1% && (
  set /a _WindowsGVLK=1
) || (
  set /a _WindowsGVLK=0
)
::===================
:: 调用普通核心激活组件
call :CommonSLSandOSPS
reg delete "%_hkSPP%55c92734-d682-4d71-983e-d6ec3f16059f" /f %_Nul_1_2%
reg delete "%_hkSPP%ff1ce15-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
reg delete "%_huSPP%55c92734-d682-4d71-983e-d6ec3f16059f" /f %_Nul_1_2%
reg delete "%_huSPP%ff1ce15-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
exit /b
::=============================================================
:OSPSActivation
reg delete "%_hkOSPP%59a52881-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
reg delete "%_hkOSPP%ff1ce15-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
set "_MicrosoftProduct=OfficeSoftwareProtectionProduct"
set "_MicrosoftService=OfficeSoftwareProtectionService"
::===================
:: 判断安装的 Office 产品是零售版还是批量授权版本;如果没有检测到批量授权版本的 Office 将退出
wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%') get Name %_Nul_1_2% || (
  if %_WinBuild% LSS 9200 (
    echo.
    echo 未检测到 Office 2010 及以上版本 VL 产品;零售版本需要先转换为批量授权。
    exit /b
  ) else (
    echo.
    echo 未检测到 Office 2010 VL 产品;零售版本需要先转换为批量授权。
    exit /b
  )
)
::===================
:: 调用普通核心激活组件
call :CommonSLSandOSPS
reg delete "%_hkOSPP%59a52881-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
reg delete "%_hkOSPP%ff1ce15-a989-479d-af46-f275c6370663" /f %_Nul_1_2%
exit /b
::=============================================================
:CommonSLSandOSPS
:: 获取 SoftwareLicensingService 或 OfficeSoftwareProtectionService 的版本信息以设置‘KMSHost’和‘KMSPort’参数
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftService% get Version /value"') do (
  set "_ver=%%G"
)
wmic path %_MicrosoftService% where version='%_ver%' call SetKeyManagementServiceMachine MachineName="%_KMSHost%" %_Nul_1_2%
wmic path %_MicrosoftService% where version='%_ver%' call SetKeyManagementServicePort %_KMSPort% %_Nul_1_2%
:: 这仅适用于 SoftwareLicensingService 版本 6.2 及更高版本;不适用于 OfficeSoftwareProtectionService
wmic path %_MicrosoftService% where version='%_ver%' call SetVLActivationTypeEnabled 2 %_Nul_1_2%
::===================
:: 对于所有支持 SoftwareLicensingProduct 或 OfficeSoftwareProtectionProduct 的 KMS 客户端,调用‘CheckProduct’
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%') get ID /value"') do (
  set "_ActivationID=%%G"
  call :CheckProduct !_ActivationID!
)
::===================
:: 从 KMS 客户端清除 KMS 服务器信息
wmic path %_MicrosoftService% where version='%_ver%' call ClearKeyManagementServiceMachine %_Nul_1_2%
wmic path %_MicrosoftService% where version='%_ver%' call ClearKeyManagementServicePort %_Nul_1_2%
:: 这部分参数仅限 SoftwareLicensingService 6.2 及以上版本可用;对于 OfficeSoftwareProtectionService 无效
wmic path %_MicrosoftService% where version='%_ver%' call ClearVLActivationTypeEnabled %_Nul_1_2%
wmic path %_MicrosoftService% where version='%_ver%' call DisableKeyManagementServiceDnsPublishing 1 %_Nul_1_2%
wmic path %_MicrosoftService% where version='%_ver%' call DisableKeyManagementServiceHostCaching 1 %_Nul_1_2%
exit /b
::=============================================================
:CheckProduct
:: 如果已检测到 KMS 客户端早期已经激活或者已有 GVLK,调用激活功能
wmic path %_MicrosoftProduct% where ID='%1' get LicenseStatus | findstr "1" %_Nul_1_2% && (
  call :Activate %1
  exit /b
)
wmic path %_MicrosoftProduct% where (PartialProductKey is not NULL) get ID | findstr /i "%1" %_Nul_1_2% && (
  call :Activate %1
  exit /b
)
::===================
:: 跳过不必要的产品
set /a _OfficeSLP=0
wmic path %_MicrosoftProduct% where ID='%1' get Name /value | findstr /i "Office" %_Nul_1% && (
  set /a _OfficeSLP=1
)
if %_OfficeSLP% EQU 0 (
  if %_WindowsGVLK% EQU 1 (
    exit /b
  )
)
:: 对于多版本 Windows 10 SKU-IDs 程序将不再执行
for %%G in (
  b71515d9-89a2-4c60-88c8-656fbcca7f3a
  5b2add49-b8f4-42e0-a77c-adad4efeeeb1
  af43f7f0-3b1e-4266-a123-1fdb53f4323b
  075aca1f-05d7-42e5-a3ce-e349e7be7078
  2cf5af84-abab-4ff0-83f8-f040fb2576eb
  11a37f09-fb7f-4002-bd84-f3ae71d11e90
  43f2ab05-7c87-4d56-b27c-44d0f9a3dabd
  6ae51eeb-c268-4a21-9aae-df74c38b586d
  ff808201-fec6-4fd4-ae16-abbddade5706
  34260150-69ac-49a3-8a0d-4a403ab55763
  903663f7-d2ab-49c9-8942-14aa9e0a9c72
  4dfd543d-caa6-4f69-a95f-5ddfe2b89567
  5fe40dd6-cf1f-4cf2-8729-92121ac2e997
  2cc171ef-db48-4adc-af09-7c574b37f139
) do (
  if /i '%1' EQU '%%G' (
    exit /b
  )
)
::===================
:: 如果检测到的 KMS 客户端没有 GVLK,将检查永久激活,然后安装 GVLK 并激活它
for /f "tokens=3 delims==, " %%G in ('"wmic path %_MicrosoftProduct% where ID='%1' get Name /value"') do (
  set "_ProductName=%%G"
)
if '%_ProductName%' EQU '19' (
  if %_Office16% EQU 0 (
    exit /b
  )
  call :CheckOffice19 %1
  exit /b
) else if '%_ProductName%' EQU '16' (
  if %_Office16% EQU 0 (
    exit /b
  )
  call :CheckOffice16 %1
  exit /b
) else if '%_ProductName%' EQU '15' (
  if %_Office15% EQU 0 (
    exit /b
  )
  call :CheckOffice15 %1
  exit /b
) else if '%_ProductName%' EQU '14' (
  if %_Office14% EQU 0 (
    exit /b
  )
  call :CheckOffice14 %1
  exit /b
)
::===================
:: Windows 10 -1607- 没有预组合版本
if not defined _Edition (
  call :CheckWindows %1
  exit /b
)
:: 对于五合一的 Windows 10 安装程序,程序将不再执行
if /i '%1' EQU '2de67392-b7a7-462a-b1ca-108dd189f588' (
  if /i %_Edition% NEQ Professional (
    exit /b
  )
)
if /i '%1' EQU 'a80b5abf-76ad-428b-b05d-a47d2dffeebf' (
  if /i %_Edition% NEQ ProfessionalN (
    exit /b
  )
)
if /i '%1' EQU '82bbc092-bc50-4e16-8e18-b74fc486aec3' (
  if /i %_Edition% NEQ ProfessionalWorkstation (
    exit /b
  )
)
if /i '%1' EQU '4b1571d3-bafb-4b40-8087-a961be2caf65' (
  if /i %_Edition% NEQ ProfessionalWorkstationN (
    exit /b
  )
)
if /i '%1' EQU '3f1afc82-f8ac-4f6c-8005-1d233e606eee' (
  if /i %_Edition% NEQ ProfessionalEducation (
    exit /b
  )
)
if /i '%1' EQU '5300b18c-2e33-4dc2-8291-47ffcec746dd' (
  if /i %_Edition% NEQ ProfessionalEducationN (
    exit /b
  )
)
if /i '%1' EQU '73111121-5638-40f6-bc11-f1d7b0d64300' (
  if /i %_Edition% NEQ Enterprise (
    exit /b
  )
)
if /i '%1' EQU 'e272e3e2-732f-4c65-a8f0-484747d0d947' (
  if /i %_Edition% NEQ EnterpriseN (
    exit /b
  )
)
if /i '%1' EQU 'e0c42288-980c-4788-a014-c080d2e1926e' (
  if /i %_Edition% NEQ Education (
    exit /b
  )
)
if /i '%1' EQU '3c102355-d027-42c6-ad23-2e7ef8a02585' (
  if /i %_Edition% NEQ EducationN (
    exit /b
  )
)
if /i '%1' EQU 'e4db50ea-bda1-4566-b047-0ca50abc6f07' (
  if /i %_Edition% NEQ ServerRdsh (
    exit /b
  )
)
if /i '%1' EQU '58e97c99-f377-4ef1-81d5-4ad5522b5fd8' (
  if /i %_Edition% NEQ Core (
    exit /b
  )
)
if /i '%1' EQU 'cd918a57-a41b-4c82-8dce-1a538e221a83' (
  if /i %_Edition% NEQ CoreSingleLanguage (
    exit /b
  )
)
call :CheckWindows %1
exit /b
::=============================================================
:CheckWindows
wmic path %_MicrosoftProduct% where (LicenseStatus='1' and GracePeriodRemaining='0') get Name %_Nul_2% | findstr /i "Windows" %_Nul_1% && (
  echo.
  echo 检测到 Windows 已被永久激活。
  exit /b
)
::===================
:: 如果 Windows 没有永久激活,则安装 GVLK 并激活
call :SelectKey %1
exit /b
::=============================================================
:CheckOffice19
if /i '%app%' equ '0bc88885-718c-491d-921f-6f214349e79c' (
  call :CheckOffice "%1" "19ProPlus2019XC2RVL_MAKC2R" "Office ProPlus 2019 C2R"
  exit /b
)
if /i '%app%' equ 'fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9' (
  call :CheckOffice "%1" "19ProjectPro2019XC2RVL_MAKC2R" "Project Pro 2019 C2R"
  exit /b
)
if /i '%app%' equ '500f6619-ef93-4b75-bcb4-82819998a3ca' (
  call :CheckOffice "%1" "19VisioPro2019XC2RVL_MAKC2R" "Visio Pro 2019 C2R"
  exit /b
)
call :SelectKey %1
exit /b
::=============================================================
:CheckOffice16
if /i '%app%' equ '9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce' (
  call :CheckOffice "%1" "16MondoVL_MAK" "Office Mondo 2016"
  exit /b
)
if /i '%app%' equ 'd450596f-894d-49e0-966a-fd39ed4c4c64' (
  call :CheckOffice "%1" "16ProPlusVL_MAK" "Office ProPlus 2016"
  exit /b
)
if /i '%app%' equ 'dedfa23d-6ed1-45a6-85dc-63cae0546de6' (
  call :CheckOffice "%1" "16StandardVL_MAK" "Office Standard 2016"
  exit /b
)
if /i '%app%' equ '4f414197-0fc2-4c01-b68a-86cbb9ac254c' (
  call :CheckOffice "%1" "16ProjectProVL_MAK" "Project Pro 2016"
  exit /b
)
if /i '%app%' equ 'da7ddabc-3fbe-4447-9e01-6ab7440b4cd4' (
  call :CheckOffice "%1" "16ProjectStdVL_MAK" "Project Standard 2016"
  exit /b
)
if /i '%app%' equ '6bf301c1-b94a-43e9-ba31-d494598c47fb' (
  call :CheckOffice "%1" "16VisioProVL_MAK" "Visio Pro 2016"
  exit /b
)
if /i '%app%' equ 'aa2a7821-1827-4c2c-8f1d-4513a34dda97' (
  call :CheckOffice "%1" "16VisioStdVL_MAK" "Visio Standard 2016"
  exit /b
)
if /i '%app%' equ '829b8110-0e6f-4349-bca4-42803577788d' (
  call :CheckOffice "%1" "16ProjectProXC2RVL_MAKC2R" "Project Pro 2016 C2R"
  exit /b
)
if /i '%app%' equ 'cbbaca45-556a-4416-ad03-bda598eaa7c8' (
  call :CheckOffice "%1" "16ProjectStdXC2RVL_MAKC2R" "Project Standard 2016 C2R"
  exit /b
)
if /i '%app%' equ 'b234abe3-0857-4f9c-b05a-4dc314f85557' (
  call :CheckOffice "%1" "16VisioProXC2RVL_MAKC2R" "Visio Pro 2016 C2R"
  exit /b
)
if /i '%app%' equ '361fe620-64f4-41b5-ba77-84f8e079b1f7' (
  call :CheckOffice "%1" "16VisioStdXC2RVL_MAKC2R" "Visio Standard 2016 C2R"
  exit /b
)
call :SelectKey %1
exit /b
::=============================================================
:CheckOffice15
if /i '%app%' equ 'dc981c6b-fc8e-420f-aa43-f8f33e5c0923' (
  call :CheckOffice "%1" "MondoVL_MAK" "Office Mondo 2013"
  exit /b
)
if /i '%app%' equ 'b322da9c-a2e2-4058-9e4e-f59a6970bd69' (
  call :CheckOffice "%1" "ProPlusVL_MAK" "Office ProPlus 2013"
  exit /b
)
if /i '%app%' equ 'b13afb38-cd79-4ae5-9f7f-eed058d750ca' (
  call :CheckOffice "%1" "StandardVL_MAK" "Office Standard 2013"
  exit /b
)
if /i '%app%' equ '4a5d124a-e620-44ba-b6ff-658961b33b9a' (
  call :CheckOffice "%1" "ProjectProVL_MAK" "Project Pro 2013"
  exit /b
)
if /i '%app%' equ '427a28d1-d17c-4abf-b717-32c780ba6f07' (
  call :CheckOffice "%1" "ProjectStdVL_MAK" "Project Standard 2013"
  exit /b
)
if /i '%app%' equ 'e13ac10e-75d0-4aff-a0cd-764982cf541c' (
  call :CheckOffice "%1" "VisioProVL_MAK" "Visio Pro 2013"
  exit /b
)
if /i '%app%' equ 'ac4efaf0-f81f-4f61-bdf7-ea32b02ab117' (
  call :CheckOffice "%1" "VisioStdVL_MAK" "Visio Standard 2013"
  exit /b
)
call :SelectKey %1
exit /b
::=============================================================
:CheckOffice14
set "vPrem="
set "vPro="
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Name like '%%OfficeVisioPrem-MAK%%') get LicenseStatus /value" %_Nul_2e%') do (
  set /a _vPrem=%%G
)
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Name like '%%OfficeVisioPro-MAK%%') get LicenseStatus /value" %_Nul_2e%') do (
  set /a _vPro=%%G
)
if /i '%app%' equ '09ed9640-f020-400a-acd8-d7d867dfd9c2' (
  call :CheckOffice "%1" "Mondo-MAK" "Office Mondo 2010"
  exit /b
)
if /i '%app%' equ '6f327760-8c5c-417c-9b61-836a98287e0c' (
  call :CheckOffice "%1" "ProPlus-MAK" "Office ProPlus 2010" "ProPlusAcad-MAK" "Office Professional Academic 2010"
  exit /b
)
if /i '%app%' equ '9da2a678-fb6b-4e67-ab84-60dd6a9c819a' (
  call :CheckOffice "%1" "Standard-MAK" "Office Standard 2010"
  exit /b
)
if /i '%app%' equ 'ea509e87-07a1-4a45-9edc-eba5a39f36af' (
  call :CheckOffice "%1" "SmallBusBasics-MAK" "Office Home and Business 2010"
  exit /b
)
if /i '%app%' equ 'df133ff7-bf14-4f95-afe3-7b48e7e331ef' (
  call :CheckOffice "%1" "ProjectPro-MAK" "Project Pro 2010"
  exit /b
)
if /i '%app%' equ '5dc7bf61-5ec9-4996-9ccb-df806a2d0efe' (
  call :CheckOffice "%1" "ProjectStd-MAK" "Project Standard 2010"
  exit /b
)
if /i '%app%' equ '92236105-bb67-494f-94c7-7f7a607929bd' (
  call :CheckOffice "%1" "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 :CheckOffice "%1" "VisioPro-MAK" "Visio Pro 2010" "VisioStd-MAK" "Visio Standard 2010"
  exit /b
)
if defined _vPro exit /b
if /i '%app%' equ '9ed833ff-4f92-4f36-b370-8683a4f13275' (
  call :CheckOffice "%1" "VisioStd-MAK" "Visio Standard 2010"
  exit /b
)
call :SelectKey %1
exit /b
::=============================================================
:CheckOffice
set ls=0
set ls2=0
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Name like '%%Office%~2%%') get LicenseStatus /VALUE" %_Nul_2e%') do (
  set /a ls=%%G
)
if "%~4" NEQ "" (
  for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Name like '%%Office%~4%%') get LicenseStatus /VALUE" %_Nul_2e%') do (
    set /a ls2=%%G
  )
  if "!ls2!" EQU "1" (
    echo 检测到 %5 已被永久 MAK 激活。
    exit /b
  )
)
if "!ls!" EQU "1" (
  echo 检测到 %3 已被永久 MAK 激活。
  exit /b
)
:: 如果 Office 产品没有被永久激活,则安装 GVLK 并激活
call :SelectKey %1
exit /b
::=============================================================
:OfficeDetect
set _Office%1=0
for /f "tokens=2*" %%G in ('"reg query HKLMSOFTWAREMicrosoftOffice%1.0CommonInstallRoot /v Path" %_Nul_2e%') do if exist "%%HOSPP.VBS" (
  set _Office%1=1
)
for /f "tokens=2*" %%G in ('"reg query HKLMSOFTWAREWow6432NodeMicrosoftOffice%1.0CommonInstallRoot /v Path" %_Nul_2e%') do if exist "%%HOSPP.VBS" (
  set _Office%1=1
)
if exist "%ProgramFiles%Microsoft OfficeOffice%1OSPP.VBS" (
  set _Office%1=1
)
if exist "%ProgramFiles(x86)%Microsoft OfficeOffice%1OSPP.VBS" (
  set _Office%1=1
)
exit /b
::=============================================================
:VisualStudio
:: 如果安装了多个 Visual Studio 版本,则清除变量以避免冲突
set "_VS="
if "%_OSarch%" EQU "64-bit" (
  set "_H64=SOFTWAREWOW6432Node"
) else (
  set "_H64=SOFTWARE"
)
for /f "skip=2 tokens=2*" %%G in ('"reg query HKLM\%_H64%MicrosoftVisualStudio\%~1 /v %~2" %_Nul_2e%') do (
  set "_VS=%%H%~3"
)
if not exist "%_VS%StorePID.exe" (
  exit /b
)
start "" /b "%_VS%StorePID.exe" %~4 %~5 && (
  echo Visual Studio %~6 激活成功。
  echo.
) || (
  echo Visual Studio %~6 激活失败。
  echo.
)
exit /b
::=============================================================
:Activate
:: 清除任何手动设置的 KMSHostIP 和带有 /skms 或 /sethst 参数的 KMSPort ;因为它们覆盖了 KMSHostIP 和设置为 SLS 或 OSPS 的 KMSPort 参数
wmic path %_MicrosoftProduct% where ID='%1' call ClearKeyManagementServiceMachine %_Nul_1_2%
wmic path %_MicrosoftProduct% where ID='%1' call ClearKeyManagementServicePort %_Nul_1_2%
::===================
:: 调用相应的 KMS 客户端激活方式
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where ID='%1' get Name /value"') do (
  echo.
  echo 正在尝试激活 %%G
)
wmic path %_MicrosoftProduct% where ID='%1' call Activate %_Nul_1_2%
SET ERRORCODE=%ERRORLEVEL%
::===================
:: 获取 KMS 客户端剩余宽限期限
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where ID='%1' get GracePeriodRemaining /value"') do (
  set /a _gprMinutes=%%G
  set /a _gprDays=%%G/1440
)
::===================
if %_gprMinutes% EQU 43200 (
  if %_WinBuild% EQU 9200 (
    echo Windows 8 核心版/专业版(含 WMC)激活成功
    echo 剩余期限: %_gprDays% 天 ^(%_gprMinutes% 分钟^)
    exit /b
  )
)
if %_gprMinutes% EQU 64800 (
  echo Windows 核心版/专业版(含 WMC)激活成功
  echo 剩余期限: %_gprDays% 天 ^(%_gprMinutes% 分钟^)
  exit /b
)
if %_gprMinutes% EQU 216000000 (
  if %_WinBuild% GEQ 15063 (
    echo Windows 10 企业版 G/GN 激活成功
    echo 剩余期限: %_gprDays% 天 ^(%_gprMinutes% 分钟^)
    exit /b
  )
)
if %_gprMinutes% EQU 259200 (
  echo 激活成功
) else (
  call cmd /c exit /b %ERRORCODE%
  echo 激活失败: 0x%=ExitCode%
)
echo Remaining Period: %_gprDays% days ^(%_gprMinutes% minutes^)
exit /b
::=============================================================
:SelectKey
:: 基于激活 ID (SKU-ID) 选择对应的通用批量许可密钥并安装它,如果能找到
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where ID='%1' get Name /value"') do (
  set "_Name=%%G"
  echo.
  echo 正在搜索用于 %%G 的通用批量许可密钥
  goto :%1 %_Nul_2% || goto :KeyNotFound
)
::=============================================================
:: Office 2019 Professional Plus C2R-P
:0bc88885-718c-491d-921f-6f214349e79c
set "_key=VQ9DP-NVHPH-T9HJC-J9PDT-KTQRG"
goto :InstallKey
:: Project 2019 Professional C2R-P
:fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9
set "_key=XM2V9-DN9HH-QB449-XDGKC-W2RMW"
goto :InstallKey
:: Visio 2019 Professional C2R-P
:500f6619-ef93-4b75-bcb4-82819998a3ca
set "_key=N2CG9-YD3YK-936X4-3WR82-Q3X4H"
goto :InstallKey
::=============================================================
:: Office 2016 Mondo
:9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce
set "_key=HFTND-W9MK4-8B7MJ-B6C4G-XQBR2"
goto :InstallKey
:: Office 2016 Professional Plus
:d450596f-894d-49e0-966a-fd39ed4c4c64
set "_key=XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99"
goto :InstallKey
:: Office 2016 Standard
:dedfa23d-6ed1-45a6-85dc-63cae0546de6
set "_key=JNRGM-WHDWX-FJJG3-K47QV-DRTFM"
goto :InstallKey
:: Project 2016 Professional
:4f414197-0fc2-4c01-b68a-86cbb9ac254c
set "_key=YG9NW-3K39V-2T3HJ-93F3Q-G83KT"
goto :InstallKey
:: Project 2016 Standard
:da7ddabc-3fbe-4447-9e01-6ab7440b4cd4
set "_key=GNFHQ-F6YQM-KQDGJ-327XX-KQBVC"
goto :InstallKey
:: Visio 2016 Professional
:6bf301c1-b94a-43e9-ba31-d494598c47fb
set "_key=PD3PC-RHNGV-FXJ29-8JK7D-RJRJK"
goto :InstallKey
:: Visio 2016 Standard
:aa2a7821-1827-4c2c-8f1d-4513a34dda97
set "_key=7WHWN-4T7MP-G96JF-G33KR-W8GF4"
goto :InstallKey
:: Access 2016
:67c0fc0c-deba-401b-bf8b-9c8ad8395804
set "_key=GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW"
goto :InstallKey
:: Excel 2016
:c3e65d36-141f-4d2f-a303-a842ee756a29
set "_key=9C2PK-NWTVB-JMPW8-BFT28-7FTBF"
goto :InstallKey
:: OneNote 2016
:d8cace59-33d2-4ac7-9b1b-9b72339c51c8
set "_key=DR92N-9HTF2-97XKM-XW2WJ-XW3J6"
goto :InstallKey
:: Outlook 2016
:ec9d9265-9d1e-4ed0-838a-cdc20f2551a1
set "_key=R69KK-NTPKF-7M3Q4-QYBHW-6MT9B"
goto :InstallKey
:: PowerPoint 2016
:d70b1bba-b893-4544-96e2-b7a318091c33
set "_key=J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6"
goto :InstallKey
:: Publisher 2016
:041a06cb-c5b8-4772-809f-416d03d16654
set "_key=F47MM-N3XJP-TQXJ9-BP99D-8K837"
goto :InstallKey
:: Skype for Business 2016
:83e04ee1-fa8d-436d-8994-d31a862cab77
set "_key=869NQ-FJ69K-466HW-QYCP2-DDBV6"
goto :InstallKey
:: Word 2016
:bb11badf-d8aa-470e-9311-20eaf80fe5cc
set "_key=WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6"
goto :InstallKey
:: Project 2016 Professional C2R-P
:829b8110-0e6f-4349-bca4-42803577788d
set "_key=WGT24-HCNMF-FQ7XH-6M8K7-DRTW9"
goto :InstallKey
:: Project 2016 Standard C2R-P
:cbbaca45-556a-4416-ad03-bda598eaa7c8
set "_key=D8NRQ-JTYM3-7J2DX-646CT-6836M"
goto :InstallKey
:: Visio 2016 Professional C2R-P
:b234abe3-0857-4f9c-b05a-4dc314f85557
set "_key=69WXN-MBYV6-22PQG-3WGHK-RM6XC"
goto :InstallKey
:: Visio 2016 Standard C2R-P
:361fe620-64f4-41b5-ba77-84f8e079b1f7
set "_key=NY48V-PPYYH-3F4PX-XJRKJ-W4423"
goto :InstallKey
:: Office 2016 MondoR Automation
:e914ea6e-a5fa-4439-a394-a9bb3293ca09
set "_key=DMTCJ-KNRKX-26982-JYCKT-P7KB6"
goto :InstallKey
::=============================================================
:: Office 2013 Mondo
:dc981c6b-fc8e-420f-aa43-f8f33e5c0923
set "_key=42QTK-RN8M7-J3C4G-BBGYM-88CYV"
goto :InstallKey
:: Office 2013 Professional Plus
:b322da9c-a2e2-4058-9e4e-f59a6970bd69
set "_key=YC7DK-G2NP3-2QQC3-J6H88-GVGXT"
goto :InstallKey
:: Office 2013 Standard
:b13afb38-cd79-4ae5-9f7f-eed058d750ca
set "_key=KBKQT-2NMXY-JJWGP-M62JB-92CD4"
goto :InstallKey
:: Project 2013 Professional
:4a5d124a-e620-44ba-b6ff-658961b33b9a
set "_key=FN8TT-7WMH6-2D4X9-M337T-2342K"
goto :InstallKey
:: Project 2013 Standard
:427a28d1-d17c-4abf-b717-32c780ba6f07
set "_key=6NTH3-CW976-3G3Y2-JK3TX-8QHTT"
goto :InstallKey
:: Visio 2013 Professional
:e13ac10e-75d0-4aff-a0cd-764982cf541c
set "_key=C2FG9-N6J68-H8BTJ-BW3QX-RM3B3"
goto :InstallKey
:: Visio 2013 Standard
:ac4efaf0-f81f-4f61-bdf7-ea32b02ab117
set "_key=J484Y-4NKBF-W2HMG-DBMJC-PGWR7"
goto :InstallKey
:: Access 2013
:6ee7622c-18d8-4005-9fb7-92db644a279b
set "_key=NG2JY-H4JBT-HQXYP-78QH9-4JM2D"
goto :InstallKey
:: Excel 2013
:f7461d52-7c2b-43b2-8744-ea958e0bd09a
set "_key=VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB"
goto :InstallKey
:: OneDrive for Business 2013 (Groove)
:fb4875ec-0c6b-450f-b82b-ab57d8d1677f
set "_key=H7R7V-WPNXQ-WCYYC-76BGV-VT7GH"
goto :InstallKey
:: InfoPath 2013
:a30b8040-d68a-423f-b0b5-9ce292ea5a8f
set "_key=DKT8B-N7VXH-D963P-Q4PHY-F8894"
goto :InstallKey
:: Lync 2013
:1b9f11e3-c85c-4e1b-bb29-879ad2c909e3
set "_key=2MG3G-3BNTT-3MFW9-KDQW3-TCK7R"
goto :InstallKey
:: OneNote 2013
:efe1f3e6-aea2-4144-a208-32aa872b6545
set "_key=TGN6P-8MMBC-37P2F-XHXXK-P34VW"
goto :InstallKey
:: Outlook 2013
:771c3afa-50c5-443f-b151-ff2546d863a0
set "_key=QPN8Q-BJBTJ-334K3-93TGY-2PMBT"
goto :InstallKey
:: PowerPoint 2013
:8c762649-97d1-4953-ad27-b7e2c25b972e
set "_key=4NT99-8RJFH-Q2VDH-KYG2C-4RD4F"
goto :InstallKey
:: Publisher 2013
:00c79ff1-6850-443d-bf61-71cde0de305f
set "_key=PN2WF-29XG2-T9HJ7-JQPJR-FCXK4"
goto :InstallKey
:: Word 2013
:d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3
set "_key=6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7"
goto :InstallKey
::=============================================================
:: Office 2010 Professional Plus
:6f327760-8c5c-417c-9b61-836a98287e0c
set "_key=VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB"
goto :InstallKey
:: Office 2010 Standard
:9da2a678-fb6b-4e67-ab84-60dd6a9c819a
set "_key=V7QKV-4XVVR-XYV4D-F7DFM-8R6BM"
goto :InstallKey
:: Office 2010 Starter Retail
:2745e581-565a-4670-ae90-6bf7c57ffe43
set "_key=VXHHB-W7HBD-7M342-RJ7P8-CHBD6"
goto :InstallKey
:: Access 2010
:8ce7e872-188c-4b98-9d90-f8f90b7aad02
set "_key=V7Y44-9T38C-R2VJK-666HK-T7DDX"
goto :InstallKey
:: Excel 2010
:cee5d470-6e3b-4fcc-8c2b-d17428568a9f
set "_key=H62QG-HXVKF-PP4HP-66KMR-CW9BM"
goto :InstallKey
:: SharePoint Workspace 2010 (Groove)
:8947d0b8-c33b-43e1-8c56-9b674c052832
set "_key=QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4"
goto :InstallKey
:: InfoPath 2010
:ca6b6639-4ad6-40ae-a575-14dee07f6430
set "_key=K96W8-67RPQ-62T9Y-J8FQJ-BT37T"
goto :InstallKey
:: OneNote 2010
:ab586f5c-5256-4632-962f-fefd8b49e6f4
set "_key=Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX"
goto :InstallKey
:: Outlook 2010
:ecb7c192-73ab-4ded-acf4-2399b095d0cc
set "_key=7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ"
goto :InstallKey
:: PowerPoint 2010
:45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a
set "_key=RC8FX-88JRY-3PF7C-X8P67-P4VTT"
goto :InstallKey
:: Project 2010 Professional
:df133ff7-bf14-4f95-afe3-7b48e7e331ef
set "_key=YGX6F-PGV49-PGW3J-9BTGG-VHKC6"
goto :InstallKey
:: Project 2010 Standard
:5dc7bf61-5ec9-4996-9ccb-df806a2d0efe
set "_key=4HP3K-88W3F-W2K3D-6677X-F9PGB"
goto :InstallKey
:: Publisher 2010
:b50c4f75-599b-43e8-8dcd-1081a7967241
set "_key=BFK7F-9MYHM-V68C7-DRQ66-83YTP"
goto :InstallKey
:: Word 2010
:2d0882e7-a4e7-423b-8ccc-70d91e0158b1
set "_key=HVHB3-C6FV7-KQX9W-YQG79-CRY7T"
goto :InstallKey
:: Visio 2010 Premium
:92236105-bb67-494f-94c7-7f7a607929bd
set "_key=D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ"
goto :InstallKey
:: Visio 2010 Professional
:e558389c-83c3-4b29-adfe-5e4d7f46c358
set "_key=7MCW8-VRQVK-G677T-PDJCM-Q8TCP"
goto :InstallKey
:: Visio 2010 Standard
:9ed833ff-4f92-4f36-b370-8683a4f13275
set "_key=767HD-QGMWX-8QTDB-9G3R2-KHFGJ"
goto :InstallKey
:: Office 2010 Home and Business
:ea509e87-07a1-4a45-9edc-eba5a39f36af
set "_key=D6QFG-VBYP2-XQHM7-J97RH-VVRCK"
goto :InstallKey
:: Office 2010 Mondo
:09ed9640-f020-400a-acd8-d7d867dfd9c2
set "_key=YBJTT-JG6MD-V9Q7P-DBKXJ-38W9R"
goto :InstallKey
:: Office 2010 Mondo
:ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c
set "_key=7TC2V-WXF6P-TD7RT-BQRXR-B8K32"
goto :InstallKey
::=============================================================
:: Windows 10 Remote Server
:e4db50ea-bda1-4566-b047-0ca50abc6f07
set "_key=7NBT4-WGBQX-MP4H7-QXFF8-YP3KX"
goto :InstallKey
:: Windows 10 Professional
:2de67392-b7a7-462a-b1ca-108dd189f588
set "_key=W269N-WFGWX-YVC9B-4J6C9-T83GX"
goto :InstallKey
:: Windows 10 Professional N
:a80b5abf-76ad-428b-b05d-a47d2dffeebf
set "_key=MH37W-N47XK-V7XM9-C7227-GCQG9"
goto :InstallKey
:: Windows 10 Professional Education
:3f1afc82-f8ac-4f6c-8005-1d233e606eee
set "_key=6TP4R-GNPTD-KYYHQ-7B7DP-J447Y"
goto :InstallKey
:: Windows 10 Professional Education N
:5300b18c-2e33-4dc2-8291-47ffcec746dd
set "_key=YVWGF-BXNMC-HTQYQ-CPQ99-66QFC"
goto :InstallKey
:: Windows 10 Enterprise
:73111121-5638-40f6-bc11-f1d7b0d64300
set "_key=NPPR9-FWDCX-D2C8J-H872K-2YT43"
goto :InstallKey
:: Windows 10 Enterprise N
:e272e3e2-732f-4c65-a8f0-484747d0d947
set "_key=DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4"
goto :InstallKey
:: Windows 10 Professional Workstation
:82bbc092-bc50-4e16-8e18-b74fc486aec3
set "_key=NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J"
goto :InstallKey
:: Windows 10 Professional Workstation N
:4b1571d3-bafb-4b40-8087-a961be2caf65
set "_key=9FNHH-K3HBT-3W4TD-6383H-6XYWF"
goto :InstallKey
:: Windows 10 Education
:e0c42288-980c-4788-a014-c080d2e1926e
set "_key=NW6C2-QMPVW-D7KKK-3GKT6-VCFB2"
goto :InstallKey
:: Windows 10 Education N
:3c102355-d027-42c6-ad23-2e7ef8a02585
set "_key=2WH4N-8QGBV-H22JP-CT43Q-MDWWJ"
goto :InstallKey
:: Windows 10 Enterprise 2015 LTSB
:7b51a46c-0c04-4e8f-9af4-8496cca90d5e
set "_key=WNMTR-4C88C-JK8YV-HQ7T2-76DF9"
goto :InstallKey
:: Windows 10 Enterprise 2015 LTSB N
:87b838b7-41b6-4590-8318-5797951d8529
set "_key=2F77B-TNFGY-69QQF-B8YKP-D69TJ"
goto :InstallKey
:: Windows 10 Enterprise 2016 LTSB
:2d5a5a60-3040-48bf-beb0-fcd770c20ce0
set "_key=DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ"
goto :InstallKey
:: Windows 10 Enterprise 2016 LTSB N
:9f776d83-7156-45b2-8a5c-359b9c9f22a3
set "_key=QFFDN-GRT3P-VKWWX-X7T3R-8B639"
goto :InstallKey
:: Windows 10 Enterprise G
:e0b2d383-d112-413f-8a80-97f373a5820c
set "_key=YYVX9-NTFWV-6MDM3-9PT4T-4M68B"
goto :InstallKey
:: Windows 10 Enterprise G N
:e38454fb-41a4-4f59-a5dc-25080e354730
set "_key=44RPN-FTY23-9VTTB-MP9BX-T84FV"
goto :InstallKey
:: Windows 10 Home
:58e97c99-f377-4ef1-81d5-4ad5522b5fd8
set "_key=TX9XD-98N7V-6WMQ6-BX7FG-H8Q99"
goto :InstallKey
:: Windows 10 Home N
:7b9e1751-a8da-4f75-9560-5fadfe3d8e38
set "_key=3KHY7-WNT83-DGQKR-F7HPR-844BM"
goto :InstallKey
:: Windows 10 Home Single Language
:cd918a57-a41b-4c82-8dce-1a538e221a83
set "_key=7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH"
goto :InstallKey
:: Windows 10 Home Country Specific
:a9107544-f4a0-4053-a96a-1479abdef912
set "_key=PVMJN-6DFY6-9CCP6-7BKTT-D3WVR"
goto :InstallKey
::===================
:: Windows Server 2016 Essentials
:2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283
set "_key=JCKRF-N37P4-C2D82-9YXRT-4M63B"
goto :InstallKey
:: Windows Server 2016 Standard
:8c1c5410-9f39-4805-8c9d-63a07706358f
set "_key=WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY"
goto :InstallKey
:: Windows Server 2016 Datacenter
:21c56779-b449-4d20-adfc-eece0e1ad74b
set "_key=CB7KF-BWN84-R7R2Y-793K2-8XDDG"
goto :InstallKey
:: Windows Server 2016 Standard ACor
:61c5ef22-f14f-4553-a824-c4b31e84b100
set "_key=PTXN8-JFHJM-4WC78-MPCBR-9W4KR"
goto :InstallKey
:: Windows Server 2016 Datacenter ACor
:e49c08e7-da82-42f8-bde2-b570fbcae76c
set "_key=2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG"
goto :InstallKey
:: Windows Server 2016 Cloud Storage
:7b4433f4-b1e7-4788-895a-c45378d38253
set "_key=QN4C6-GBJD2-FB422-GHWJK-GJG2R"
goto :InstallKey
:: Windows Server 2016 Azure Core
:3dbf341b-5f6c-4fa7-b936-699dce9e263f
set "_key=VP34G-4NPPG-79JTQ-864T4-R3MQX"
goto :InstallKey
:: Windows Server 2016 ARM64
:43d9af6e-5e86-4be8-a797-d072a046896c
set "_key=K9FYF-G6NCK-73M32-XMVPY-F9DRR"
goto :InstallKey
::=============================================================
:: Windows 8.1 Professional
:c06b6981-d7fd-4a35-b7b4-054742b7af67
set "_key=GCRJD-8NW9H-F2CDX-CCM8D-9D6T9"
goto :InstallKey
:: Windows 8.1 Professional N
:7476d79f-8e48-49b4-ab63-4d0b813a16e4
set "_key=HMCNV-VVBFX-7HMBH-CTY9B-B4FXY"
goto :InstallKey
:: Windows 8.1 Enterprise
:81671aaf-79d1-4eb1-b004-8cbbe173afea
set "_key=MHF9N-XY6XB-WVXMC-BTDCT-MKKG7"
goto :InstallKey
:: Windows 8.1 Enterprise N
:113e705c-fa49-48a4-beea-7dd879b46b14
set "_key=TT4HM-HN7YT-62K67-RGRQJ-JFFXW"
goto :InstallKey
:: Windows 8.1 Professional WMC
:096ce63d-4fac-48a9-82a9-61ae9e800e5f
set "_key=789NJ-TQK6T-6XTH8-J39CJ-J8D3P"
goto :InstallKey
:: Windows 8.1 Core
:fe1c3238-432a-43a1-8e25-97e7d1ef10f3
set "_key=M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK"
goto :InstallKey
:: Windows 8.1 Core N
:78558a64-dc19-43fe-a0d0-8075b2a370a3
set "_key=7B9N3-D94CG-YTVHR-QBPX3-RJP64"
goto :InstallKey
:: Windows 8.1 Core ARM
:ffee456a-cd87-4390-8e07-16146c672fd0
set "_key=XYTND-K6QKT-K2MRH-66RTM-43JKP"
goto :InstallKey
:: Windows 8.1 Core Single Language
:c72c6a1d-f252-4e7e-bdd1-3fca342acb35
set "_key=BB6NG-PQ82V-VRDPW-8XVD2-V8P66"
goto :InstallKey
:: Windows 8.1 Core Country Specific
:db78b74f-ef1c-4892-abfe-1e66b8231df6
set "_key=NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3"
goto :InstallKey
:: Windows 8.1 Embedded Industry
:0ab82d54-47f4-4acb-818c-cc5bf0ecb649
set "_key=NMMPB-38DD4-R2823-62W8D-VXKJB"
goto :InstallKey
:: Windows 8.1 Embedded Industry Enterprise
:cd4e2d9f-5059-4a50-a92d-05d5bb1267c7
set "_key=FNFKF-PWTVT-9RC8H-32HB2-JB34X"
goto :InstallKey
:: Windows 8.1 Embedded Industry Automotive
:f7e88590-dfc7-4c78-bccb-6f3865b99d1a
set "_key=VHXM3-NR6FT-RY6RT-CK882-KW2CJ"
goto :InstallKey
:: Windows 8.1 Core Connected (with Bing)
:e9942b32-2e55-4197-b0bd-5ff58cba8860
set "_key=3PY8R-QHNP9-W7XQD-G6DPH-3J2C9"
goto :InstallKey
:: Windows 8.1 Core Connected N (with Bing)
:c6ddecd6-2354-4c19-909b-306a3058484e
set "_key=Q6HTR-N24GM-PMJFP-69CD8-2GXKR"
goto :InstallKey
:: Windows 8.1 Core Connected Single Language (with Bing)
:b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c
set "_key=KF37N-VDV38-GRRTV-XH8X6-6F3BB"
goto :InstallKey
:: Windows 8.1 Core Connected Country Specific (with Bing)
:ba998212-460a-44db-bfb5-71bf09d1c68b
set "_key=R962J-37N87-9VVK2-WJ74P-XTMHR"
goto :InstallKey
:: Windows 8.1 Professional Student
:e58d87b5-8126-4580-80fb-861b22f79296
set "_key=MX3RK-9HNGX-K3QKC-6PJ3F-W8D7B"
goto :InstallKey
:: Windows 8.1 Professional Student N
:cab491c7-a918-4f60-b502-dab75e334f40
set "_key=TNFGH-2R6PB-8XM3K-QYHX2-J4296"
goto :InstallKey
::===================
:: Windows Server 2012 R2 Standard
:b3ca044e-a358-4d68-9883-aaa2941aca99
set "_key=D2N9P-3P6X9-2R39C-7RTCD-MDVJX"
goto :InstallKey
:: Windows Server 2012 R2 Datacenter
:00091344-1ea4-4f37-b789-01750ba6988c
set "_key=W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9"
goto :InstallKey
:: Windows Server 2012 R2 Essentials
:21db6ba4-9a7b-4a14-9e29-64a60c59301d
set "_key=KNC87-3J2TX-XB4WP-VCPJV-M4FWM"
goto :InstallKey
:: Windows Server 2012 R2 Cloud Storage
:b743a2be-68d4-4dd3-af32-92425b7bb623
set "_key=3NPTF-33KPT-GGBPR-YX76B-39KDD"
goto :InstallKey
::=============================================================
:: Windows 8 Professional
:a98bcd6d-5343-4603-8afe-5908e4611112
set "_key=NG4HW-VH26C-733KW-K6F98-J8CK4"
goto :InstallKey
:: Windows 8 Professional N
:ebf245c1-29a8-4daf-9cb1-38dfc608a8c8
set "_key=XCVCF-2NXM9-723PB-MHCB7-2RYQQ"
goto :InstallKey
:: Windows 8 Enterprise
:458e1bec-837a-45f6-b9d5-925ed5d299de
set "_key=32JNW-9KQ84-P47T8-D8GGY-CWCK7"
goto :InstallKey
:: Windows 8 Enterprise N
:e14997e7-800a-4cf7-ad10-de4b45b578db
set "_key=JMNMF-RHW7P-DMY6X-RF3DR-X2BQT"
goto :InstallKey
:: Windows 8 Professional WMC
:a00018a3-f20f-4632-bf7c-8daa5351c914
set "_key=GNBB8-YVD74-QJHX6-27H4K-8QHDG"
goto :InstallKey
:: Windows 8 Core
:c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60
set "_key=BN3D2-R7TKB-3YPBD-8DRP2-27GG4"
goto :InstallKey
:: Windows 8 Core N
:197390a0-65f6-4a95-bdc4-55d58a3b0253
set "_key=8N2M2-HWPGY-7PGT9-HGDD8-GVGGY"
goto :InstallKey
:: Windows 8 Core Single Language
:8860fcd4-a77b-4a20-9045-a150ff11d609
set "_key=2WN2H-YGCQR-KFX6K-CD6TF-84YXQ"
goto :InstallKey
:: Windows 8 Core Country Specific
:9d5584a2-2d85-419a-982c-a00888bb9ddf
set "_key=4K36P-JN4VD-GDC6V-KDT89-DYFKP"
goto :InstallKey
:: Windows 8 Core ARM
:af35d7b7-5035-4b63-8972-f0b747b9f4dc
set "_key=DXHJF-N9KQX-MFPVR-GHGQK-Y7RKV"
goto :InstallKey
:: Windows 8 Embedded Industry Professional
:10018baf-ce21-4060-80bd-47fe74ed4dab
set "_key=RYXVT-BNQG7-VD29F-DBMRY-HT73M"
goto :InstallKey
:: Windows 8 Embedded Industry Enterprise
:18db1848-12e0-4167-b9d7-da7fcda507db
set "_key=NKB3R-R2F8T-3XCDP-7Q2KW-XWYQ2"
goto :InstallKey
::===================
:: Windows Server 2012 Standard
:f0f5ec41-0d55-4732-af02-440a44a3cf0f
set "_key=XC9B7-NBPP2-83J2H-RHMBY-92BT4"
goto :InstallKey
:: Windows Server 2012 Datacenter
:d3643d60-0c42-412d-a7d6-52e6635327f6
set "_key=48HP8-DN98B-MYWDG-T2DCC-8W83P"
goto :InstallKey
:: Windows Server 2012 MultiPoint Standard
:7d5486c7-e120-4771-b7f1-7b56c6d3170c
set "_key=HM7DN-YVMH3-46JC3-XYTG7-CYQJJ"
goto :InstallKey
:: Windows Server 2012 MultiPoint Premium
:95fd1c83-7df5-494a-be8b-1300e1c9d1cd
set "_key=XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G"
goto :InstallKey
::=============================================================
:: Windows 7 Professional
:b92e9980-b9d5-4821-9c94-140f632f6312
set "_key=FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4"
goto :InstallKey
:: Windows 7 Professional N
:54a09a0d-d57b-4c10-8b69-a842d6590ad5
set "_key=MRPKT-YTG23-K7D7T-X2JMM-QY7MG"
goto :InstallKey
:: Windows 7 Professional E
:5a041529-fef8-4d07-b06f-b59b573b32d2
set "_key=W82YF-2Q76Y-63HXB-FGJG9-GF7QX"
goto :InstallKey
:: Windows 7 Enterprise
:ae2ee509-1b34-41c0-acb7-6d4650168915
set "_key=33PXH-7Y6KF-2VJC9-XBBR8-HVTHH"
goto :InstallKey
:: Windows 7 Enterprise N
:1cb6d605-11b3-4e14-bb30-da91c8e3983a
set "_key=YDRBP-3D83W-TY26F-D46B2-XCKRJ"
goto :InstallKey
:: Windows 7 Enterprise E
:46bbed08-9c7b-48fc-a614-95250573f4ea
set "_key=C29WB-22CC8-VJ326-GHFJW-H9DH4"
goto :InstallKey
::===================
:: Windows Server 2008 R2 Web
:a78b8bd9-8017-4df5-b86a-09f756affa7c
set "_key=6TPJF-RBVHG-WBW2R-86QPH-6RTM4"
goto :InstallKey
:: Windows Server 2008 R2 HPC edition
:cda18cf3-c196-46ad-b289-60c072869994
set "_key=TT8MH-CG224-D3D7Q-498W2-9QCTX"
goto :InstallKey
:: Windows Server 2008 R2 Standard
:68531fb9-5511-4989-97be-d11a0f55633f
set "_key=YC6KT-GKW9T-YTKYR-T4X34-R7VHC"
goto :InstallKey
:: Windows Server 2008 R2 Enterprise
:620e2b3d-09e7-42fd-802a-17a13652fe7a
set "_key=489J6-VHDMP-X63PK-3K798-CPX3Y"
goto :InstallKey
:: Windows Server 2008 R2 Datacenter
:7482e61b-c589-4b7f-8ecc-46d455ac3b87
set "_key=74YFP-3QFB3-KQT8W-PMXWJ-7M648"
goto :InstallKey
:: Windows Server 2008 R2 for Itanium-based Systems
:8a26851c-1c7e-48d3-a687-fbca9b9ac16b
set "_key=GT63C-RJFQ3-4GMB6-BRFB9-CB83V"
goto :InstallKey
:: Windows MultiPoint Server 2010
:f772515c-0e87-48d5-a676-e6962c3e1195
set "_key=736RG-XDKJK-V34PF-BHK87-J6X3K"
goto :InstallKey
::===================
:: Windows 7 Embedded POS Ready
:db537896-376f-48ae-a492-53d0547773d0
set "_key=YBYF6-BHCR3-JPKRB-CDW7B-F9BK4"
goto :InstallKey
:: Windows 7 Embedded ThinPC
:aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395
set "_key=73KQT-CD9G6-K7TQG-66MRP-CQ22C"
goto :InstallKey
:: Windows 7 Embedded Standard
:e1a8296a-db37-44d1-8cce-7bc961d59c54
set "_key=XGY72-BRBBT-FF8MH-2GG8H-W7KCW"
goto :InstallKey
::=============================================================
:: Windows Vista Business
:4f3d1606-3fea-4c01-be3c-8d671c401e3b
set "_key=YFKBB-PQJJV-G996G-VWGXY-2V3X8"
goto :InstallKey
:: Windows Vista Business N
:2c682dc2-8b68-4f63-a165-ae291d4cf138
set "_key=HMBQG-8H2RH-C77VX-27R82-VMQBT"
goto :InstallKey
:: Windows Vista Enterprise
:cfd8ff08-c0d7-452b-9f60-ef5c70c32094
set "_key=VKK3X-68KWM-X2YGT-QR4M6-4BWMV"
goto :InstallKey
:: Windows Vista Enterprise N
:d4f54950-26f2-4fb4-ba21-ffab16afcade
set "_key=VTC42-BM838-43QHV-84HX6-XJXKV"
goto :InstallKey
::===================
:: Windows Server 2008 Web
:ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b
set "_key=WYR28-R7TFJ-3X2YQ-YCY4H-M249D"
goto :InstallKey
:: Windows Server 2008 Standard
:ad2542d4-9154-4c6d-8a44-30f11ee96989
set "_key=TM24T-X9RMF-VWXK6-X8JC9-BFGM2"
goto :InstallKey
:: Windows Server 2008 Standard without Hyper-V
:2401e3d0-c50a-4b58-87b2-7e794b7d2607
set "_key=W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ"
goto :InstallKey
:: Windows Server 2008 Enterprise
:c1af4d90-d1bc-44ca-85d4-003ba33db3b9
set "_key=YQGMW-MPWTJ-34KDK-48M3W-X4Q6V"
goto :InstallKey
:: Windows Server 2008 Enterprise without Hyper-V
:8198490a-add0-47b2-b3ba-316b12d647b4
set "_key=39BXF-X8Q23-P2WWT-38T2F-G3FPG"
goto :InstallKey
:: Windows Server 2008 HPC (Compute Cluster)
:7afb1156-2c1d-40fc-b260-aab7442b62fe
set "_key=RCTX3-KWVHP-BR6TB-RB6DM-6X7HP"
goto :InstallKey
:: Windows Server 2008 Datacenter
:68b6e220-cf09-466b-92d3-45cd964b9509
set "_key=7M67G-PC374-GR742-YH8V4-TCBY3"
goto :InstallKey
:: Windows Server 2008 Datacenter without Hyper-V
:fd09ef77-5647-4eff-809c-af2b64659a45
set "_key=22XQ2-VRXRG-P8D42-K34TD-G3QQC"
goto :InstallKey
:: Windows Server 2008 for Itanium-Based Systems
:01ef176b-3e0d-422a-b4f8-4ea880035e8f
set "_key=4DWFP-JF3DJ-B7DTH-78FJB-PDRHK"
goto :InstallKey
::=============================================================
:KeyNotFound
:: 如果当前 SKU-ID 的 GVLK 没有找到,默认情况下,会尝试用可能存在于操作系统中的 GVLK 激活
echo.
echo 名称为 %_Name% 的 GVLK
echo 未找到 SKU-ID 为 %1 
echo.
echo 如果本次激活失败了,请手动为该产品输入对应的 GVLK 并重新运行 KMS_VL_ALL
call :Activate %1
exit /b
::=============================================================
:InstallKey
:: 调用 InstallProductKey 使用 SLS/OSPS 方式安装 GVLK
echo 正在安装序列……
wmic path %_MicrosoftService% where version='%_ver%' call InstallProductKey ProductKey="%_key%" %_Nul_1_2%
call :Activate %1
::=============================================================

Convert-Office.cmd

@echo off
::=============================================================
chcp 936 >nul
::=============================================================
:: 获取完整合规的脚本文件名称
set "_FileName=%~f0"
::=============================================================
:: 获取脚本所在的驱动器和路径
set "_FileDir=%~dp0"
::=============================================================
setlocal EnableExtensions EnableDelayedExpansion
::=============================================================
:: Get Administrator Rights
fltmc >nul 2>&1 || (
  echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%GetAdmin.vbs"
  echo UAC.ShellExecute "!_FileName!", "", "", "runas", 1 >> "%temp%GetAdmin.vbs"
  cmd /u /c type "%temp%GetAdmin.vbs">"%temp%GetAdminUnicode.vbs"
  cscript //nologo "%temp%GetAdminUnicode.vbs"
  del /f /q "%temp%GetAdmin.vbs" >nul 2>&1
  del /f /q "%temp%GetAdminUnicode.vbs" >nul 2>&1
  exit
)
::=============================================================
:: 前往脚本所在的路径
pushd "!_FileDir!"
::=============================================================
:: 获取 Windows 操作系统内部版本
for /f "tokens=2 delims==" %%G in ('wmic path Win32_OperatingSystem get BuildNumber /value') do (
  set /a _WinBuild=%%G
)
::=============================================================
:: 获取操作系统架构
for /f "tokens=2 delims==" %%G in ('wmic path Win32_Processor get AddressWidth /value') do (
  set "_OSarch=%%G-bit"
)
::=============================================================
:: 设置 SLMGR 别名
set "_SLMGR=%SystemRoot%System32slmgr.vbs"

:: 获取 Office C2R 安装路径
for /f "tokens=2*" %%G in ('"reg query HKLMSOFTWAREMicrosoftOfficeClickToRun /v InstallPath" 2^>nul') do (
  set "_OSPP=%%HOffice16OSPP.VBS"
  set "_LicPath=%%H
ootLicenses16"
)

sc query ClickToRunSvc >nul 2>&1

if %ERRORLEVEL% EQU 1060 (
  echo.
  echo 无法检测到 Office ClickToRun 服务……
  goto :end
)

if not exist "%_LicPath%*.xrm-ms" (
  echo.
  echo 无法检测到 Office 2016 授权文件……
  goto :end
)

if %_WinBuild% LSS 9200 if not exist "%_OSPP%" (
  echo.
  echo 无法检测到授权工具 OSPP.VBS……
  goto :end
)
::=============================================================
:Check
set /a _VL=0
set /a _TB=0
set /a _Grace=0

if %_WinBuild% GEQ 9200 (
  set _MicrosoftProduct=SoftwareLicensingProduct
  set _MicrosoftService=SoftwareLicensingService
) else (
  set _MicrosoftProduct=OfficeSoftwareProtectionProduct
  set _MicrosoftService=OfficeSoftwareProtectionService
)

for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftService% get version /format:list" 2^>nul') do (
  set "_ver=%%G"
)

wmic path %_MicrosoftProduct% where (Description like '%%KMSCLIENT%%' and LicenseFamily != 'Office16MondoR_KMS_Automation') get Name /value 2>nul | findstr /i /C:"Office 16" 1>nul && (
  set /a _VL=1
)

wmic path %_MicrosoftProduct% where (Description like '%%TIMEBASED%%') get Name /value 2>nul | findstr /i /C:"Office 16" 1>nul && (
  set /a _TB=1
)

wmic path %_MicrosoftProduct% where (Description like '%%Grace%%') get Name /format:list 2>nul | findstr /i /C:"Office 16" 1>nul && (
  set /a _Grace=1
)

if %_TB% EQU 0 if %_Grace% EQU 0 if %_VL% EQU 1 (
  echo.
  echo 无需执行转换或清理……
  goto :end
)

echo.
echo 正在清理当前的 Office 16 授权……
cd /d "%~dp0"

%_OSarch%cleanospp.exe >nul 2>&1
::=============================================================
:Ret2VL
echo.
echo 正在安装 Office 16 批量许可证……
cd /d "%_LicPath%"

for /f "delims=" %%G in ('dir /b /on client-issuance-*.xrm-ms') do (
  if %_WinBuild% GEQ 9200 (
    cscript //Nologo //B %_SLMGR% /ilc %%G
  ) else (
    cscript //Nologo //B "%_OSPP%" /inslic:%%G
  )
)

if %_WinBuild% GEQ 9200 (
  cscript //Nologo //B %_SLMGR% /ilc pkeyconfig-office.xrm-ms
) else (
  cscript //Nologo //B "%_OSPP%" /inslic:pkeyconfig-office.xrm-ms
)

set SkuIds=(mondo,proplus,projectpro,visiopro,standard,projectstd,visiostd)
set ProSkuIds=(access,excel,onenote,outlook,powerpoint,publisher,skypeforbusiness,word)
set ProSkuId2=(o365proplus,professional)
set StdSkuIds=(excel,onenote,outlook,powerpoint,publisher,word)

for /d %%G in %SkuIds% do (
  set /a _%%G=0
)

for /d %%G in %ProSkuIds% do (
  set /a _%%G=0
)

for /d %%G in %ProSkuId2% do (
  set /a _%%G=0
)

for /f "tokens=2,*" %%G in ('"reg query HKLMSOFTWAREMicrosoftOfficeClickToRunConfiguration /v ProductReleaseIds" 2^>nul') do (
  set "ProductIds=%%H"
)

for /d %%G in %SkuIds% do (
  echo %ProductIds% | findstr /I /C:"%%Gretail" 1>nul && (
    set /a _%%G=1
  )
)

for /d %%G in %ProSkuIds% do (
  echo %ProductIds% | findstr /I /C:"%%Gretail" 1>nul && (
    set /a _%%G=1
  )
)

for /d %%G in %ProSkuId2% do (
  echo %ProductIds% | findstr /I /C:"%%Gretail" 1>nul && (
    set /a _%%G=1
  )
)

if %_mondo% EQU 1 (
  call :InsLic mondo
  goto :GVLK
)

for /d %%G in %SkuIds% do (
  if !_%%G! EQU 1 (
    call :InsLic %%G
  )
)

for /d %%G in %ProSkuId2% do (
  if !_%%G! EQU 1 if !_proplus! EQU 0 call :InsLic proplus
)

for /d %%G in %StdSkuIds% do (
  if !_%%G! EQU 1 if !_proplus! EQU 0 if !_standard! EQU 0 if !_professional! EQU 0 call :InsLic %%G
)

for /d %%G in (skypeforbusiness) do (
  if !_%%G! EQU 1 if !_proplus! EQU 0 call :InsLic %%G
)

for /d %%G in (access) do (
  if !_%%G! EQU 1 if !_proplus! EQU 0 !_professional! EQU 0 call :InsLic %%G
)
::=============================================================
:GVLK
echo.
echo 正在安装 KMS 客户端密钥……
echo.
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where (Description like '%%Office 16, VOLUME_KMSCLIENT%%') get ID /value"') do (
  set "ActID=%%G"
  call :InsKey
)
goto :end
::=============================================================
:InsLic
for /f "delims=" %%G in ('dir /b /on %1VL_*.xrm-ms') do (
  if %_WinBuild% GEQ 9200 (
    cscript //Nologo //B %_SLMGR% /ilc %%G
  ) else (
    cscript //Nologo //B "%_OSPP%" /inslic:%%G
  )
)
exit /b
::=============================================================
:InsKey
for /f "tokens=2 delims==" %%G in ('"wmic path %_MicrosoftProduct% where ID='%ActID%' get Name /format:list"') do (
  echo %%G
)
(echo edition = "%ActID%"
echo Set keys = CreateObject ^("Scripting.Dictionary"^)
echo keys.Add "9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce", "HFTND-W9MK4-8B7MJ-B6C4G-XQBR2"
echo keys.Add "d450596f-894d-49e0-966a-fd39ed4c4c64", "XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99"
echo keys.Add "dedfa23d-6ed1-45a6-85dc-63cae0546de6", "JNRGM-WHDWX-FJJG3-K47QV-DRTFM"
echo keys.Add "4f414197-0fc2-4c01-b68a-86cbb9ac254c", "YG9NW-3K39V-2T3HJ-93F3Q-G83KT"
echo keys.Add "da7ddabc-3fbe-4447-9e01-6ab7440b4cd4", "GNFHQ-F6YQM-KQDGJ-327XX-KQBVC"
echo keys.Add "6bf301c1-b94a-43e9-ba31-d494598c47fb", "PD3PC-RHNGV-FXJ29-8JK7D-RJRJK"
echo keys.Add "aa2a7821-1827-4c2c-8f1d-4513a34dda97", "7WHWN-4T7MP-G96JF-G33KR-W8GF4"
echo keys.Add "67c0fc0c-deba-401b-bf8b-9c8ad8395804", "GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW"
echo keys.Add "c3e65d36-141f-4d2f-a303-a842ee756a29", "9C2PK-NWTVB-JMPW8-BFT28-7FTBF"
echo keys.Add "d8cace59-33d2-4ac7-9b1b-9b72339c51c8", "DR92N-9HTF2-97XKM-XW2WJ-XW3J6"
echo keys.Add "ec9d9265-9d1e-4ed0-838a-cdc20f2551a1", "R69KK-NTPKF-7M3Q4-QYBHW-6MT9B"
echo keys.Add "d70b1bba-b893-4544-96e2-b7a318091c33", "J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6"
echo keys.Add "041a06cb-c5b8-4772-809f-416d03d16654", "F47MM-N3XJP-TQXJ9-BP99D-8K837"
echo keys.Add "83e04ee1-fa8d-436d-8994-d31a862cab77", "869NQ-FJ69K-466HW-QYCP2-DDBV6"
echo keys.Add "bb11badf-d8aa-470e-9311-20eaf80fe5cc", "WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6"
echo if keys.Exists^(edition^) then
echo WScript.Echo keys.Item^(edition^)
echo End If)>"%temp%key.vbs"
set "key=Unknown"
for /f %%G in ('cscript /nologo "%temp%key.vbs"') do set key=%%G
del /f /q "%temp%key.vbs" >nul 2>&1
if %key%==Unknown (
  echo.
  echo 无法找到匹配的 KMS 客户端密钥
  exit /b
)
wmic path %_MicrosoftService% where version='%_ver%' call InstallProductKey ProductKey="%key%" >nul 2>&1
exit /b
::=============================================================
:end
echo.
echo.
echo 请按任意键退出脚本……
pause >nul
exit
奶奶问孙子:4+1等于几 孙子说:等于6-1。 奶奶说:你明明知道答案,为什么不说? 孙子说:年轻人不讲5的……..
原文地址:https://www.cnblogs.com/jasy/p/14168136.html