@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion

:: Проверка прав администратора
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo [!] Запустите скрипт от имени администратора.
    pause
    exit /b 1
)

echo ============================================
echo   Активация Windows через KMS
echo ============================================
echo.

:: --- Ввод ключа продукта ---
:ask_key
set "PRODUCT_KEY="
set /p "PRODUCT_KEY=Введите ключ продукта: "
if "!PRODUCT_KEY!"=="" (
    echo [!] Ключ не может быть пустым.
    goto ask_key
)

:: --- Ввод адреса KMS-сервера ---
:ask_server
set "KMS_SERVER="
set /p "KMS_SERVER=Введите адрес KMS-сервера (host или host:port): "
if "!KMS_SERVER!"=="" (
    echo [!] Адрес не может быть пустым.
    goto ask_server
)

:: Если порт не указан — добавляем стандартный 1688
echo !KMS_SERVER! | find ":" >nul
if errorlevel 1 set "KMS_SERVER=!KMS_SERVER!:1688"

echo.
echo --------------------------------------------
echo Ключ:   !PRODUCT_KEY!
echo Сервер: !KMS_SERVER!
echo --------------------------------------------
echo.
set "CONFIRM="
set /p "CONFIRM=Всё верно? (y/n): "
if /i not "!CONFIRM!"=="y" (
    echo Отменено.
    pause
    exit /b 0
)

echo.
echo [1/4] Установка ключа продукта...
cscript //nologo %windir%\system32\slmgr.vbs /ipk !PRODUCT_KEY!
if !errorlevel! neq 0 (
    echo [!] Не удалось установить ключ. Проверьте правильность.
    pause
    exit /b 1
)

echo [2/4] Настройка KMS-сервера ^(!KMS_SERVER!^)...
cscript //nologo %windir%\system32\slmgr.vbs /skms !KMS_SERVER!
if !errorlevel! neq 0 (
    echo [!] Не удалось задать KMS-сервер.
    pause
    exit /b 1
)

echo [3/4] Активация...
cscript //nologo %windir%\system32\slmgr.vbs /ato
if !errorlevel! neq 0 (
    echo.
    echo [!] Активация не удалась. Код ошибки: !errorlevel!
    echo     Частые причины:
    echo      0xC004F074 — сервер недоступен или не в домене
    echo      0xC004F015 — неверный тип ключа для KMS
    pause
    exit /b 1
)

echo [4/4] Проверка статуса...
echo.
cscript //nologo %windir%\system32\slmgr.vbs /dli

echo.
echo [OK] Готово.
pause
endlocal