内存KMS服务器激活Windows/Office脚本
@echo off
setlocal enabledelayedexpansion
:: 内部KMS服器配置信息
set KMS_SERVER=192.168.1.1
set KMS_PORT=1688
:: 以管理员权限运行
if not "%1"=="UAC" (
echo 请求管理员权限...
mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~s0", "UAC", "", "runas", 1)(window.close)&&exit
)
echo.
echo ========== 开始全自动激活Windows和Office ==========
echo.
:: 自动识别并激活Windows
call :AutoActivateWindows
:: 自动识别并激活Office
call :AutoActivateOffice
:: 最终状态检查
call :CheckStatus
echo 激活流程完成,请检查上方输出结果。
pause
exit
:: ------------------------------------------------
:: 函数:自动激活Windows
:: ------------------------------------------------
:AutoActivateWindows
echo.
echo --- 正在自动激活Windows ---
:: 获取Windows版本并匹配GVLK
for /f "tokens=*" %%a in ('wmic os get caption ^| findstr /i "Windows"') do (
set "WIN_VER=%%a"
echo 检测到系统版本: !WIN_VER!
)
:: 根据版本设置Windows GVLK
if "!WIN_VER!"=="Microsoft Windows 10 专业版" (
set WinGVLK=W269N-WFGWX-YVC9B-4J6C9-T83GX
) else if "!WIN_VER!"=="Microsoft Windows 11 专业版" (
set WinGVLK=W269N-WFGWX-YVC9B-4J6C9-T83GX
) else if "!WIN_VER!"=="Microsoft Windows 10 企业版" (
set WinGVLK=NPPR9-FWDCX-D2C8J-H872K-2YT43
) else (
echo 不支持的系统版本,请手动设置GVLK。
exit /b
)
:: 应用Windows激活命令
cscript //nologo %windir%\system32\slmgr.vbs /skms %KMS_SERVER%:%KMS_PORT%
cscript //nologo %windir%\system32\slmgr.vbs /ipk !WinGVLK!
cscript //nologo %windir%\system32\slmgr.vbs /ato
echo.
goto :EOF
:: ------------------------------------------------
:: 函数:自动激活Office
:: ------------------------------------------------
:AutoActivateOffice
echo.
echo --- 正在自动激活Office ---
:: 遍历可能的Office安装路径
for /d %%a in (
"C:\Program Files\Microsoft Office\Office*"
"C:\Program Files (x86)\Microsoft Office\Office*"
) do (
if exist "%%a\ospp.vbs" (
cd /d "%%a"
echo 检测到Office文件夹: %%a
:: 通过注册表获取Office版本
for /f "tokens=3" %%v in (
'reg query "HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" /v VersionToReport ^| findstr /i "16.0"'
) do set "OFFICE_VER=%%v"
:: 设置Office GVLK
if "!OFFICE_VER!" geq "16.0.12527.0" (
set OfficeGVLK=NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP && echo 匹配到Office 2016/2019
) else if "!OFFICE_VER!" lss "16.0.12527.0" (
set OfficeGVLK=YC7DK-G2NP3-2QQC3-J6H88-GVGXT && echo 匹配到Office 2013
)
:: 执行激活
if defined OfficeGVLK (
cscript //nologo ospp.vbs /inpkey:!OfficeGVLK!
cscript //nologo ospp.vbs /sethst:%KMS_SERVER%
cscript //nologo ospp.vbs /setprt:%KMS_PORT%
cscript //nologo ospp.vbs /act
)
)
)
goto :EOF
:: ------------------------------------------------
:: 函数:检查激活状态
:: ------------------------------------------------
:CheckStatus
echo.
echo --- Windows激活状态 ---
cscript //nologo %windir%\system32\slmgr.vbs /xpr
echo.
echo --- Office激活状态 ---
for /d %%a in (
"C:\Program Files\Microsoft Office\Office*"
"C:\Program Files (x86)\Microsoft Office\Office*"
) do (
if exist "%%a\ospp.vbs" (
cd /d "%%a"
cscript //nologo ospp.vbs /dstatus
)
)
goto :EOF