• 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的……..
  • 相关阅读:
    前端学PHP之面向对象系列第一篇——类和对象
    前端学PHP之面向对象系列第三篇——三大特性
    mysql之视图
    PHP中冒号、endif、endwhile、endfor这些都是什么
    abap将内表数据导出为excel文件
    调用、跳转到事务码、报表
    <转>sapjco3.dll already loaded in another classloader错误解决办法
    sap权限检查
    <转>DIALOG条件 CHAIN 语句
    ABAP DOI 下载SMW0的EXCEL和WORD模板
  • 原文地址:https://www.cnblogs.com/jasy/p/14168136.html
Copyright © 2020-2023  润新知