@echo off
chcp 949 > nul
setlocal enabledelayedexpansion
title µµ±³À°Ã» Office Á¤Ç° ÀÎÁõ µµ±¸ (MAK)
mode con cols=120 lines=30
color 1F

REM ============================================================
REM  ÀÚ½Ä(½Â°ÝµÈ) ÇÁ·Î¼¼½º °¨Áö
REM ============================================================
if /i "%~1"=="--elevated" goto :_elevated_child

REM ============================================================
REM  ÃÖÃÊ ½ÇÇà - °ü¸®ÀÚ ±ÇÇÑ È®ÀÎ
REM ============================================================
fsutil dirty query %systemdrive% >nul 2>&1
if %errorlevel% EQU 0 goto :_isAdmin

REM ----- ºñ°ü¸®ÀÚ: ½Â°Ý ¿äÃ» -----
echo.
echo   ============================================================
echo     °ü¸®ÀÚ ±ÇÇÑÀÌ ÇÊ¿äÇÕ´Ï´Ù. UAC Ã¢¿¡¼­ [¿¹]¸¦ ´­·¯ ÁÖ¼¼¿ä.
echo   ============================================================
echo.
echo   PowerShell + cmd /k ¹æ½ÄÀ¸·Î »õ ÄÜ¼ÖÀ» ½ÃÀÛÇÕ´Ï´Ù...
echo.

powershell.exe -NoProfile -Command "try { Start-Process cmd.exe -ArgumentList @('/k', '\"%~f0\"', '--elevated') -WorkingDirectory '%~dp0' -Verb RunAs -ErrorAction Stop } catch { Write-Host ('PS error: ' + $_.Exception.Message); exit 1 }"
if %errorlevel% NEQ 0 (
    echo.
    echo   PowerShell È£ÃâÀÌ ½ÇÆÐÇß½À´Ï´Ù.
    pause
    exit /b 1
)

echo   ½Â°Ý ¿äÃ» Àü¼Û ¿Ï·á. »õ ÄÜ¼Ö Ã¢À» È®ÀÎÇÏ¼¼¿ä.
timeout /t 5 /nobreak >nul
exit /b

REM ============================================================
REM  ½Â°ÝµÈ ÀÚ½Ä ÇÁ·Î¼¼½º ÁøÀÔÁ¡
REM ============================================================
:_elevated_child
echo.
echo   ============================================================
echo     [½Â°ÝµÈ ÀÚ½Ä ÇÁ·Î¼¼½º] ±ÇÇÑ »óÅÂ È®ÀÎ Áß...
echo   ============================================================
echo.
echo   »ç¿ëÀÚ¸í: %USERNAME%
echo   ½ºÅ©¸³Æ®: %~f0
echo   ÀÛ¾÷Æú´õ: %cd%
echo.

fsutil dirty query %systemdrive% >nul 2>&1
if %errorlevel% NEQ 0 (
    echo   [°æ°í] ÀÚ½Ä ÇÁ·Î¼¼½º°¡ °ü¸®ÀÚ ±ÇÇÑÀ» ¹ÞÁö ¸øÇß½À´Ï´Ù.
    echo.
    echo   °¡´ÉÇÑ ¿øÀÎ:
    echo     - UAC°¡ ºñÈ°¼ºÈ­µÇ¾î ÀÖ´Âµ¥ ÇöÀç °èÁ¤ÀÌ Administrators ±×·ì¿¡ ¼ÓÇÏÁö ¾ÊÀ½
    echo     - ±×·ì Á¤Ã¥ÀÌ ±ÇÇÑ ½Â°ÝÀ» Â÷´Ü
    echo     - AppLocker/SmartScreenÀÌ ½ºÅ©¸³Æ® ½ÇÇàÀ» Â÷´Ü
    echo.
    echo   ÇØ°á ¹æ¹ý:
    echo     - °ü¸®ÀÚ °èÁ¤À¸·Î ·Î±×ÀÎÇÑ µÚ ´Ù½Ã ½ÇÇà
    echo     - Office.cmd ¸¶¿ì½º ¿À¸¥ÂÊ Å¬¸¯ÇÏ¿© "°ü¸®ÀÚ ±ÇÇÑÀ¸·Î ½ÇÇà" ¼±ÅÃ
    echo.
    echo   ÀÌ Ã¢Àº ÀÚµ¿À¸·Î ´ÝÈ÷Áö ¾Ê½À´Ï´Ù. È®ÀÎ ÈÄ Á÷Á¢ ´Ý¾Æ ÁÖ¼¼¿ä.
    echo.
    pause
    goto :eof
)

echo   °ü¸®ÀÚ ±ÇÇÑ È®ÀÎ ¿Ï·á.
echo.
goto :_isAdmin

:_isAdmin
cd /d "%~dp0"

REM ============================================================
REM  ospp.vbs °æ·Î ÀÚµ¿ Å½»ö
REM ============================================================
set "OSPP="
if exist "C:\Program Files\Microsoft Office\Office16\ospp.vbs"        set "OSPP=C:\Program Files\Microsoft Office\Office16\ospp.vbs"
if exist "C:\Program Files (x86)\Microsoft Office\Office16\ospp.vbs"  set "OSPP=C:\Program Files (x86)\Microsoft Office\Office16\ospp.vbs"

if not defined OSPP (
    echo.
    echo   Office°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê°Å³ª ospp.vbs¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.
    echo   Office Volume License ¹öÀü 2016~2024°¡ ¼³Ä¡µÇ¾î¾ß ÇÕ´Ï´Ù.
    echo.
    echo   È®ÀÎÇÑ °æ·Î:
    echo     C:\Program Files\Microsoft Office\Office16\ospp.vbs
    echo     C:\Program Files [x86]\Microsoft Office\Office16\ospp.vbs
    echo.
    echo   ÀÌ Ã¢Àº ÀÚµ¿À¸·Î ´ÝÈ÷Áö ¾Ê½À´Ï´Ù.
    pause
    goto :eof
)

REM ============================================================
REM  µµ±³À°Ã» MAK ¶óÀÌ¼±½º Å°
REM ============================================================
set "KEY2016=CNFPF-R6QCX-MBBY9-XBJRM-92FHM"
set "KEY2019=G2PYD-NPBPG-9B976-QY6GK-TF6T3"
set "KEY2021=3NPV9-QT2CB-TJ37M-JF9Y2-XTR2X"
set "KEY2024=TFKMN-Y99YY-JD8TX-2P9T6-J2VGD"

:_main
cls
echo.
echo   ============================================================
echo                  µµ±³À°Ã» Office Á¤Ç° ÀÎÁõ µµ±¸ [MAK]
echo   ============================================================
echo.
echo   [ÇöÀç ¼³Ä¡µÈ Office ¶óÀÌ¼±½º Á¤º¸]
cscript //nologo "%OSPP%" /dstatus 2>nul | findstr /i "LICENSE NAME"
cscript //nologo "%OSPP%" /dstatus 2>nul | findstr /i "Last 5"
echo.
echo   ------------------------------------------------------------
echo     1. Office 2016 MAK ÀÎÁõ
echo     2. Office 2019 MAK ÀÎÁõ
echo     3. Office 2021 MAK ÀÎÁõ
echo     4. Office 2024 MAK ÀÎÁõ
echo     5. ¼³Ä¡µÈ Office ÀÚµ¿ °¨Áö ÈÄ ÀÎÁõ [±ÇÀå]
echo     6. ÇöÀç ÀÎÁõ »óÅÂ ÀÚ¼¼È÷ º¸±â
echo     7. Á¾·á
echo   ------------------------------------------------------------
echo.

set "choice="
set /p "choice=   ¹øÈ£ ÀÔ·Â : "

if "%choice%"=="1" ( set "TARGET_VER=2016" & set "TARGET_KEY=%KEY2016%" & goto _activate )
if "%choice%"=="2" ( set "TARGET_VER=2019" & set "TARGET_KEY=%KEY2019%" & goto _activate )
if "%choice%"=="3" ( set "TARGET_VER=2021" & set "TARGET_KEY=%KEY2021%" & goto _activate )
if "%choice%"=="4" ( set "TARGET_VER=2024" & set "TARGET_KEY=%KEY2024%" & goto _activate )
if "%choice%"=="5" goto _autodetect
if "%choice%"=="6" goto _status
if "%choice%"=="7" goto :eof
goto _main

:_autodetect
cscript //nologo "%OSPP%" /dstatus 2>nul > "%temp%\ospp_st.txt"
findstr /i "Office24" "%temp%\ospp_st.txt" >nul && ( set "TARGET_VER=2024" & set "TARGET_KEY=%KEY2024%" & del "%temp%\ospp_st.txt" & goto _activate )
findstr /i "Office21" "%temp%\ospp_st.txt" >nul && ( set "TARGET_VER=2021" & set "TARGET_KEY=%KEY2021%" & del "%temp%\ospp_st.txt" & goto _activate )
findstr /i "Office19" "%temp%\ospp_st.txt" >nul && ( set "TARGET_VER=2019" & set "TARGET_KEY=%KEY2019%" & del "%temp%\ospp_st.txt" & goto _activate )
findstr /i "Office16" "%temp%\ospp_st.txt" >nul && ( set "TARGET_VER=2016" & set "TARGET_KEY=%KEY2016%" & del "%temp%\ospp_st.txt" & goto _activate )
del "%temp%\ospp_st.txt" >nul 2>&1
echo.
echo   Office ¹öÀüÀ» ÀÚµ¿ °¨ÁöÇÏÁö ¸øÇß½À´Ï´Ù. ¸Þ´º¿¡¼­ Á÷Á¢ ¼±ÅÃÇÏ¼¼¿ä.
echo.
pause
goto _main

:_activate
cls
echo.
echo   ============================================================
echo     Office %TARGET_VER% MAK Á¤Ç° ÀÎÁõ ½ÃÀÛ
echo     »ç¿ëÇÒ Å° : %TARGET_KEY%
echo   ============================================================
echo.

echo   [1/3] ±âÁ¸ µî·ÏµÈ Á¦Ç° Å° Á¦°Å Áß...
set "OLDKEY5="
for /f "tokens=*" %%a in ('cscript //nologo "%OSPP%" /dstatus 2^>nul ^| findstr /i "Last 5"') do (
    set "LINE=%%a"
    set "OLDKEY5=!LINE:~-5!"
)
if defined OLDKEY5 (
    echo         ±âÁ¸ Å° ¸¶Áö¸· 5ÀÚ¸® : !OLDKEY5!
    cscript //nologo "%OSPP%" /unpkey:!OLDKEY5!
) else (
    echo         µî·ÏµÈ ±âÁ¸ Å° ¾øÀ½. °Ç³Ê¶Ý´Ï´Ù.
)
echo.

echo   [2/3] »õ MAK Å° ÀÔ·Â Áß...
cscript //nologo "%OSPP%" /inpkey:%TARGET_KEY%
if errorlevel 1 (
    echo.
    echo   Å° ÀÔ·Â¿¡ ½ÇÆÐÇß½À´Ï´Ù.
    echo   ¼³Ä¡µÈ Office ¿¡µð¼Ç°ú Å°°¡ È£È¯µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
    echo.
    pause
    goto _main
)
echo.

echo   [3/3] Microsoft Á¤Ç° ÀÎÁõ ¼­¹ö·Î ¿Â¶óÀÎ ÀÎÁõ ÁøÇà Áß...
echo         ÀÎÅÍ³Ý ¿¬°áÀÌ ÇÊ¿äÇÕ´Ï´Ù. Àá½Ã ±â´Ù·Á ÁÖ¼¼¿ä...
cscript //nologo "%OSPP%" /act
echo.

echo   ============================================================
echo     ÀÎÁõ °á°ú
echo   ============================================================
cscript //nologo "%OSPP%" /dstatus 2>nul | findstr /i "LICENSE NAME"
cscript //nologo "%OSPP%" /dstatus 2>nul | findstr /i "LICENSE STATUS"
cscript //nologo "%OSPP%" /dstatus 2>nul | findstr /i "Last 5"
echo.
echo   * LICENSE STATUS°¡ ---LICENSED--- ·Î Ç¥½ÃµÇ¸é Á¤»ó ÀÎÁõ ¿Ï·áÀÔ´Ï´Ù.
echo.
pause
goto _main

:_status
cls
echo.
echo   ============================================================
echo     ÇöÀç Office ¶óÀÌ¼±½º »óÅÂ [ÀüÃ¼]
echo   ============================================================
echo.
cscript //nologo "%OSPP%" /dstatus
echo.
pause
goto _main
