内存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

文章细节

文章编号:
9
添加日期:
2025-04-30 21:55:54

相关文章