@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
title Smart Cloud - Usuwanie starego klucza Office

REM ====== UAC Elevation ======
>nul 2>&1 net session
if '%errorlevel%' NEQ '0' (
    echo Wymagane uprawnienia administratora — prosze potwierdzic w oknie UAC...
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B
)

cls
echo =====================================================
echo   Smart Cloud - usuwanie starego klucza Office
echo =====================================================
echo.
echo UWAGA: Po usunieciu Office BEDZIE WYMAGAL nowego klucza.
echo Nowy klucz wpisuje sie w Word: Plik -^> Konto -^> Zmien klucz produktu.
echo.

REM ====== Find OSPP.VBS path ======
set "OFFICE_PATH="
for %%V in (Office16 Office15 Office14) do (
    if exist "C:\Program Files\Microsoft Office\%%V\OSPP.VBS" (
        if not defined OFFICE_PATH set "OFFICE_PATH=C:\Program Files\Microsoft Office\%%V"
    )
    if exist "C:\Program Files (x86)\Microsoft Office\%%V\OSPP.VBS" (
        if not defined OFFICE_PATH set "OFFICE_PATH=C:\Program Files (x86)\Microsoft Office\%%V"
    )
)

if not defined OFFICE_PATH (
    echo BLAD: Nie znaleziono Office na komputerze.
    echo Sprawdz czy Office jest zainstalowany.
    echo.
    pause
    exit /b 1
)

echo Office znaleziony: %OFFICE_PATH%
echo.
echo Wyszukiwanie aktywnych kluczy Office (przez WMI)...
echo.

REM ====== List Office keys via WMI ======
powershell -NoProfile -Command "Get-CimInstance -Query \"SELECT PartialProductKey, Description FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL\" 2>$null | Where-Object { $_.Description -like '*Office*' } | ForEach-Object { Write-Output ($_.PartialProductKey + '|' + $_.Description) }" > "%temp%\office_keys.txt" 2>nul

set "FOUND=0"
for /f "usebackq delims=" %%K in ("%temp%\office_keys.txt") do (
    set /a FOUND+=1
)

if !FOUND! EQU 0 (
    echo Nie znaleziono zadnego aktywnego klucza Office.
    echo Office moze byc juz bez klucza — wpisz nowy bezposrednio:
    echo Word -^> Plik -^> Konto -^> Zmien klucz produktu
    echo.
    del "%temp%\office_keys.txt" 2>nul
    pause
    exit /b 0
)

echo Znaleziono kluczy: !FOUND!
echo.
set "IDX=0"
for /f "usebackq tokens=1,* delims=|" %%L in ("%temp%\office_keys.txt") do (
    set /a IDX+=1
    echo   [!IDX!] %%L  ^(%%M^)
)
echo.
set /p CONFIRM="Usunac WSZYSTKIE powyzsze klucze Office? [T/n]: "
if /i "!CONFIRM!"=="n" (
    echo Anulowano.
    del "%temp%\office_keys.txt" 2>nul
    pause
    exit /b 0
)

echo.
echo Usuwanie...
cd /d "%OFFICE_PATH%"
set "REMOVED=0"
for /f "usebackq tokens=1 delims=|" %%L in ("%temp%\office_keys.txt") do (
    echo - Usuwam klucz konczacy sie na: %%L
    cscript //nologo ospp.vbs /unpkey:%%L 2>nul | findstr /C:"successful" >nul
    if !errorlevel! EQU 0 (
        set /a REMOVED+=1
    )
)
del "%temp%\office_keys.txt" 2>nul

echo.
echo =====================================================
echo   USUNIETO !REMOVED! z !FOUND! kluczy
echo =====================================================
echo.
echo NASTEPNY KROK:
echo   1. Otworz Word
echo   2. Plik -^> Konto -^> Zmien klucz produktu
echo   3. Wklej nowy klucz z naszego maila
echo.
pause
endlocal
