@echo off & setlocal enableextensions
title Resetar AnyDesk

:: Verifica se o script está rodando como administrador (checa se a chave existe no registro)
reg query HKEY_USERS\S-1-5-19 >NUL || (
    echo Por favor, execute como administrador.
    pause >NUL
    exit
)

chcp 437 
:: Define o código de página

call :stop_any

:: Remove arquivos de configuração do AnyDesk
del /f "%ALLUSERSPROFILE%\AnyDesk\service.conf"
del /f "%APPDATA%\AnyDesk\service.conf"

:: Salva o user.conf atual no TEMP
copy /y "%APPDATA%\AnyDesk\user.conf" "%temp%\"

:: Remove miniaturas antigas
rd /s /q "%temp%\thumbnails" 2>NUL

:: Copia as miniaturas atuais para o TEMP
xcopy /c /e /h /r /y /i /k "%APPDATA%\AnyDesk\thumbnails" "%temp%\thumbnails"

:: Remove todos os arquivos da pasta do AnyDesk (tanto do perfil do sistema quanto do usuário)
del /f /a /q "%ALLUSERSPROFILE%\AnyDesk\*"
del /f /a /q "%APPDATA%\AnyDesk\*"

call :start_any

:lic
:: Aguarda até o arquivo system.conf conter a linha "ad.anynet.id="
:wait_lic
find "ad.anynet.id=" "%ALLUSERSPROFILE%\AnyDesk\system.conf" >nul 2>&1
if %errorlevel% neq 0 (
    timeout /t 1 >nul
    goto wait_lic
)

:: Restaura os arquivos de configuração
call :stop_any

move /y "%temp%\user.conf" "%APPDATA%\AnyDesk\user.conf" >nul 2>&1
xcopy /c /e /h /r /y /i /k "%temp%\thumbnails" "%APPDATA%\AnyDesk\thumbnails" >nul 2>&1
rd /s /q "%temp%\thumbnails" >nul 2>&1

call :start_any

echo *********
echo Concluído.
echo(
goto :eof


:: ================================
:: START ANYDESK
:: ================================
:start_any
echo Iniciando serviço AnyDesk...

:: Se já estiver rodando, não tenta iniciar de novo
sc query AnyDesk | find "RUNNING" >nul
if %errorlevel%==0 (
    echo Serviço já está em execução.
    goto open_any
)

sc start AnyDesk >nul 2>&1

:: Aguarda até 15 segundos para subir
set count=0
:wait_start
sc query AnyDesk | find "RUNNING" >nul
if %errorlevel%==0 goto open_any

timeout /t 1 >nul
set /a count+=1
if %count% lss 15 goto wait_start

echo Falha ao iniciar serviço.
goto :eof


:open_any
echo Abrindo executável...

set "AnyDesk1=%ProgramFiles(x86)%\AnyDesk\AnyDesk.exe"
set "AnyDesk2=%ProgramFiles%\AnyDesk\AnyDesk.exe"

if exist "%AnyDesk1%" start "" "%AnyDesk1%"
if exist "%AnyDesk2%" start "" "%AnyDesk2%"

exit /b


:: ================================
:: STOP ANYDESK
:: ================================
:stop_any
echo Parando serviço AnyDesk...

:: Se já estiver parado
sc query AnyDesk | find "STOPPED" >nul
if %errorlevel%==0 goto kill_proc

sc stop AnyDesk >nul 2>&1

:: Aguarda até parar
set count=0
:wait_stop
sc query AnyDesk | find "STOPPED" >nul
if %errorlevel%==0 goto kill_proc

timeout /t 1 >nul
set /a count+=1
if %count% lss 15 goto wait_stop

echo Serviço não respondeu corretamente.

:kill_proc
taskkill /f /im "AnyDesk.exe" >nul 2>&1
exit /b