@echo off title REMOVER DLLS CONFLITANTES - RDP - Beepsttore Sistemas - color 0C :: Verificar privilégios de administrador net session >nul 2>&1 if %errorLevel% neq 0 ( echo ============================================ echo EXECUTE COMO ADMINISTRADOR! echo ============================================ echo. echo Clique com botao direito no arquivo .bat echo e selecione "Executar como administrador" echo. pause exit /b 1 ) echo ============================================ echo FINALIZANDO PROCESSOS echo ============================================ echo. :: Matar processos que podem estar usando as DLLs taskkill /F /IM fbserver.exe 2>&1 taskkill /F /IM fbguard.exe 2>&1 taskkill /F /IM java.exe 2>&1 taskkill /F /IM javaw.exe 2>&1 :: Parar serviços do Firebird net stop FirebirdServerDefaultInstance 2>&1 net stop FirebirdGuardianDefaultInstance 2>&1 echo. echo ============================================ echo REMOVENDO REGISTROS DAS DLLs echo ============================================ echo. :: Remover registros específicos das DLLs for %%d in (capicom fbclient gds32 ib_util iconv libeay32 msvcr71 msxml5 ssleay32 zlib1) do ( reg query "HKLM\SOFTWARE\Classes\%%d.dll" >nul 2>&1 && ( echo Removendo registro: %%d.dll reg delete "HKLM\SOFTWARE\Classes\%%d.dll" /f 2>&1 ) reg query "HKLM\SOFTWARE\WOW6432Node\Classes\%%d.dll" >nul 2>&1 && ( echo Removendo registro: %%d.dll (32 bits) reg delete "HKLM\SOFTWARE\WOW6432Node\Classes\%%d.dll" /f 2>&1 ) ) echo. echo ============================================ echo REMOVENDO DLLs DO SYSTEM32 echo ============================================ echo. call :RemoveDLL "C:\Windows\System32\capicom.dll" call :RemoveDLL "C:\Windows\System32\fbclient.dll" call :RemoveDLL "C:\Windows\System32\gds32.dll" call :RemoveDLL "C:\Windows\System32\ib_util.dll" call :RemoveDLL "C:\Windows\System32\iconv.dll" call :RemoveDLL "C:\Windows\System32\libeay32.dll" call :RemoveDLL "C:\Windows\System32\msvcr71.dll" call :RemoveDLL "C:\Windows\System32\msxml5.dll" call :RemoveDLL "C:\Windows\System32\ssleay32.dll" call :RemoveDLL "C:\Windows\System32\zlib1.dll" echo. echo ============================================ echo REMOVENDO DLLs DO SYSWOW64 echo ============================================ echo. call :RemoveDLL "C:\Windows\SysWOW64\capicom.dll" call :RemoveDLL "C:\Windows\SysWOW64\fbclient.dll" call :RemoveDLL "C:\Windows\SysWOW64\gds32.dll" call :RemoveDLL "C:\Windows\SysWOW64\ib_util.dll" call :RemoveDLL "C:\Windows\SysWOW64\iconv.dll" call :RemoveDLL "C:\Windows\SysWOW64\libeay32.dll" call :RemoveDLL "C:\Windows\SysWOW64\msvcr71.dll" call :RemoveDLL "C:\Windows\SysWOW64\msxml5.dll" call :RemoveDLL "C:\Windows\SysWOW64\ssleay32.dll" call :RemoveDLL "C:\Windows\SysWOW64\zlib1.dll" echo. echo ============================================ echo COPIANDO NOVAS DLLs echo ============================================ echo. :: Verificar se a pasta de origem existe if not exist "C:\app.tmp\dlls" ( echo. echo ============================================ echo ERRO: PASTA NAO ENCONTRADA! echo ============================================ echo. echo A pasta C:\app.tmp\dlls nao existe! echo. echo Certifique-se de que a pasta com as DLLs echo esta no local correto antes de continuar. echo. pause exit /b 1 ) echo Origem das DLLs: C:\app.tmp\dlls echo. echo Copiando DLLs para System32... echo. :: Copiar para System32 for %%d in (capicom.dll fbclient.dll gds32.dll ib_util.dll iconv.dll libeay32.dll msvcr71.dll msxml5.dll ssleay32.dll zlib1.dll) do ( if exist "C:\app.tmp\dlls\%%d" ( copy /y "C:\app.tmp\dlls\%%d" "C:\Windows\System32\%%d" 2>&1 if %errorLevel% equ 0 ( echo [OK] %%d copiado para System32 ) else ( echo [FALHA] Erro ao copiar %%d para System32 ) ) else ( echo [AVISO] %%d nao encontrado na pasta de origem ) ) echo. echo Copiando DLLs para SysWOW64... echo. :: Copiar para SysWOW64 for %%d in (capicom.dll fbclient.dll gds32.dll ib_util.dll iconv.dll libeay32.dll msvcr71.dll msxml5.dll ssleay32.dll zlib1.dll) do ( if exist "C:\app.tmp\dlls\%%d" ( copy /y "C:\app.tmp\dlls\%%d" "C:\Windows\SysWOW64\%%d" 2>&1 if %errorLevel% equ 0 ( echo [OK] %%d copiado para SysWOW64 ) else ( echo [FALHA] Erro ao copiar %%d para SysWOW64 ) ) else ( echo [AVISO] %%d nao encontrado na pasta de origem ) ) :: Registrar as DLLs novamente (opcional) echo. echo Registrando as novas DLLs... echo. for %%d in (capicom.dll fbclient.dll gds32.dll ib_util.dll iconv.dll libeay32.dll msvcr71.dll msxml5.dll ssleay32.dll zlib1.dll) do ( if exist "C:\Windows\System32\%%d" ( regsvr32 /s "C:\Windows\System32\%%d" echo [OK] %%d registrado ) ) echo. echo ============================================ echo OPERACAO CONCLUIDA COM SUCESSO! echo ============================================ echo. echo DLLs removidas e substituidas com sucesso! echo. echo beep let's go :)! echo. echo Pressione qualquer tecla para sair... pause >nul exit /b 0 :RemoveDLL set "dll_path=%~1" if not exist "%dll_path%" ( echo [OK] DLL nao encontrada: %dll_path% exit /b 0 ) echo Removendo: %dll_path% :: Tentar desregistrar primeiro regsvr32 /u "%dll_path%" /s 2>&1 :: Tomar posse do arquivo takeown /f "%dll_path%" 2>&1 :: Dar permissão total icacls "%dll_path%" /grant "%USERNAME%":F /grant Administradores:F 2>&1 :: Remover atributos attrib -r -s -h "%dll_path%" 2>&1 :: Tentar deletar del /f /q "%dll_path%" 2>&1 if %errorLevel% equ 0 ( echo [OK] DLL removida: %dll_path% ) else ( echo [FALHA] Nao foi possivel remover: %dll_path% ) exit /b 0