Bazı programların internete erişmesi sorun yaratabilyor. Bu yüzden uygulamanın internete erişimini kısıtlamak gerekiyor. Bunu yapmanın en kolay yolu da uygulamanın hem çalıştırılabilir (exe) hem de kütüphane (dll) dosyalarının internete erişimini Windows Güvenlik Duvarı’ndan yasaklamak. Bunu yapmak için hazır bir toplu işlem dosyası (Batch Script) hazırladım. Bu dosya hem otomatik olarak yönetici izni isteyen hem de bulunduğu klasörü ve alt klasörlerini tarayarak tüm .exe ve .dll dosyalarının internet erişimini engelleyen bir batch script. Kodları aşağıda bulabilirsiniz.

Script, çalıştırıldığında kendisini yönetici olarak yeniden başlatmaya çalışacak, böylece güvenlik duvarı kurallarını oluşturmak için gereken izinleri otomatik olarak alacaktır.

Batch Script Kodu

@echo off
setlocal enabledelayedexpansion

:: ===================================================================
:: Scripti Yönetici olarak Calistirma Kontrolu
:: ===================================================================
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
    ECHO Yonetici izni gerekiyor. Script'i yonetici olarak yeniden baslatmaya calisiyorum...
    powershell -Command "Start-Process '%0' -Verb RunAs"
    EXIT
)

:: ===================================================================
:: Ana Islem
:: ===================================================================
ECHO.
ECHO Internet erisimi engelleme islemi baslatiliyor...
ECHO Lutfen bekleyin.
ECHO.

:: Script'in bulundugu klasoru otomatik olarak al
set "TARGET_DIR=%~dp0"

:: Kural sayaci ve basari/fail sayaclari
set /a rule_count=0
set /a success_count=0
set /a fail_count=0

:: Belirtilen klasorde ve alt klasorlerdeki tum .exe ve .dll dosyalarini bul
for /R "%TARGET_DIR%" %%F in (*.exe *.dll) do (
    
    :: Her dosya icin benzersiz bir kural adi olustur (dosya yolundaki \ karakterini _ ile degistirir)
    set "safe_path=%%~pF"
    set "safe_path=!safe_path:\=_!"
    set "RULE_NAME=Block Outbound for !safe_path!%%~nxF"
    
    :: Eski bir kural varsa onu sil (hata verirse sessizce gec)
    netsh advfirewall firewall delete rule name="!RULE_NAME!" >nul 2>&1
    
    :: Yeni kurali ekle (cikis islemlerini engelle)
    echo Isleniyor: %%F
    netsh advfirewall firewall add rule name="!RULE_NAME!" dir=out program="%%F" action=block enable=yes profile=any
    
    :: Islemin basarili olup olmadigini kontrol et
    if !errorlevel! equ 0 (
        echo    -> BASARILI: Kural olusturuldu.
        set /a success_count+=1
    ) else (
        echo    -> HATA: Kural olusturulamadi.
        set /a fail_count+=1
    )
    set /a rule_count+=1
    echo.
)

:: ===================================================================
:: Islem Sonucu
:: ===================================================================
ECHO ========================================
ECHO Islem Tamamlandi.
ECHO Toplam !rule_count! dosya islenmistir.
ECHO Basarili: !success_count!
ECHO Basarisiz: !fail_count!
ECHO ========================================
ECHO.
ECHO Engellenen kurallari kaldirmak icin:
ECHO netsh advfirewall firewall delete rule name="Block Outbound for ..."
ECHO.
PAUSE

Nasıl Kullanılır?

  1. Kopyalayın: Yukarıdaki kodun tamamını kopyalayın.
  2. Metin Belgesi Oluşturun: Masaüstünde veya herhangi bir yerde yeni bir metin belgesi (.txt) açın ve içine yapıştırın.
  3. Kaydedin: Dosyayı Farklı Kaydet seçeneği ile kaydedin. Kayıt türünü “Tüm Dosyalar” olarak değiştirin ve dosya adına firewall_blocker.bat gibi bir isim verin (.bat uzantısı çok önemli).
  4. Taşıyın: Oluşturduğunuz firewall_blocker.bat dosyasını, içindeki programların internet erişimini engellemek istediğiniz ana klasörün içine taşıyın.
  5. Çalıştırın: firewall_blocker.bat dosyasına çift tıklayın. Windows, “Kullanıcı Hesabı Denetimi (UAC)” penceresi açarak yönetici izni isteyecektir. Evet‘e tıklayarak devam edin.

Script, bulunduğu klasör ve tüm alt klasörlerdeki .exe ve .dll dosyalarını tek tek bulacak, her biri için Windows Güvenlik Duvarı’na bir kural ekleyerek bu programların internete çıkış yapmasını (outbound) engelleyecektir.

Script’in Özellikleri ve Açıklamaları

  • Otomatik Yönetici İzni: NET SESSION komutu ile scriptin yönetici haklarıyla çalışıp çalışmadığını kontrol eder. Eğer çalışmıyorsa, powershell kullanarak kendisini yönetici olarak yeniden başlatır. Bu, kullanıcının manuel olarak sağ tıkıp “Yönetici olarak çalıştır” demesine gerek kalmamasını sağlar.
  • Otomatik Klasör Tespiti: set "TARGET_DIR=%~dp0" komutu, script’in hangi klasörde olduğunu otomatik olarak algılar ve bu klasörü hedef olarak belirler.
  • Özyinelemeli Arama: for /R "%TARGET_DIR%" %%F in (...) döngüsü, TARGET_DIR olarak belirlenen klasörün içindeki ve tüm alt klasörlerindeki belirtilen uzantılı (*.exe, *.dll) dosyaları bulur.
  • Benzersiz Kural Adı: Aynı isimde farklı klasörlerde bulunan dosyaların (örneğin, C:\ProgramA\app.exe ve C:\ProgramB\app.exe) çakışmaması için her kula için benzersiz bir isim oluşturulur. !safe_path!%%~nxF yapısı, dosyanın yolunu ve adını birleştirerek benzersiz bir metin oluşturur.
  • Idempotent (Tekrar Çalıştırılabilir): Script her çalıştığında, eski kuralları silip yenilerini oluşturur. Bu sayede scripti birden çok kez çalıştırsanız bile kural çakışması veya hata almazsınız.
  • Detaylı Geri Bildirim: Hangi dosyanın işlendiğini, işlemin başarılı olup olmadığını ve sonunda toplam bir özeti ekrana yazdırır. Bu, işlemin şeffaf olmasını sağlar.
  • PAUSE Komutu: İşlem bittiğinde komut istemi penceresinin hemen kapanmasını engeller, böylece sonuçları görebilirsiniz.

Önemli Notlar

  • Bu script, programların dışarıya (internet veya ağa) olan bağlantılarını engeller. Genellikle Windows Güvenlik Duvarı varsayılan olarak içeriye yapılan bağlantıları zaten engellediği için bu, çoğu senaryo için yeterlidir.
  • Bir programın internet erişimini tekrar açmak isterseniz, komut istemini (CMD) Yönetici olarak açıp şu komutu çalıştırabilirsiniz:
netsh advfirewall firewall delete rule name="Block Outbound for _alt_klasor_dosyaadi.exe"

(Kural adını script çıktısından kopyalayabilirsiniz.)

  • Bazı antivirüs programları, güvenlik duvarı ayarlarının değiştirilmesini engelleyebilir veya kendi kurallarını önceliklendirebilir. Eğer bir hata alırsanız, antivirüs ayarlarınızı kontrol etmekte fayda var.

İşinize yaraması dileğiyle.