CMD ile Reg Komutu Kullanarak Registry İşlemleri

Windows ortamında registry, sistemin kalbi gibidir. Uygulama ayarları, donanım yapılandırmaları, kullanıcı tercihleri, servis parametreleri… Hepsi orada saklanır. GUI üzerinden regedit açıp tıklamak kolaydır, ama yüzlerce sunucuda aynı değişikliği yapmak gerektiğinde ya da bir script içinde otomasyona ihtiyaç duyduğunuzda, reg komutu hayat kurtarır. Bu yazıda CMD üzerinden reg aracını kullanarak registry işlemlerini nasıl yapacağınızı, gerçek dünya senaryolarıyla birlikte ele alacağız.

Reg Komutuna Giriş

reg.exe, Windows’un yerleşik komut satırı registry aracıdır. Hem yerel hem de uzak sistemlerde registry okuma, yazma, silme, kopyalama ve dışa aktarma işlemlerini yapabilirsiniz. Ayrıca PowerShell’in yaygınlaşmadığı ya da kısıtlandığı ortamlarda hâlâ birincil araçtır.

Temel komut yapısı şöyledir:

reg [OPERATION] [OPTIONS]

Desteklenen operasyonlar:

  • QUERY: Registry değerlerini sorgular
  • ADD: Yeni anahtar veya değer ekler
  • DELETE: Anahtar veya değer siler
  • COPY: Registry anahtarlarını kopyalar
  • SAVE: Anahtarı .hiv dosyasına kaydeder
  • LOAD: .hiv dosyasından anahtar yükler
  • UNLOAD: Yüklenmiş hive’ı kaldırır
  • RESTORE: Kayıtlı hive’ı geri yükler
  • IMPORT: .reg dosyasını içe aktarır
  • EXPORT: Registry anahtarını .reg dosyasına dışa aktarır
  • FLAGS: Anahtar bayraklarını yönetir
  • COMPARE: İki registry anahtarını karşılaştırır

Registry Hive Yapısı

Registry işlemlerine başlamadan önce hive yapısını bilmek şart. Sık kullanılan kısaltmalar:

  • HKLM: HKEY_LOCAL_MACHINE – Sistem geneli ayarlar
  • HKCU: HKEY_CURRENT_USER – Aktif kullanıcı ayarları
  • HKU: HKEY_USERS – Tüm kullanıcı profilleri
  • HKCR: HKEY_CLASSES_ROOT – Dosya tipi ve COM kayıtları
  • HKCC: HKEY_CURRENT_CONFIG – Donanım profili bilgileri

REG QUERY ile Sorgulama

Sorgulama işlemleri, registry yönetiminin en güvenli ve en sık kullanılan parçasıdır. Önce bak, sonra değiştir mantığıyla çalışın.

Temel Sorgulama

Basit bir değer sorgulamak için:

reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /v ProductName

Bu komut size Windows sürüm adını döndürür. Örnek çıktı:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion
    ProductName    REG_SZ    Windows Server 2022 Standard

Bir anahtarın altındaki tüm değerleri listelemek için /v olmadan çalıştırın:

reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion"

Alt anahtarları da dahil ederek özyinelemeli sorgulama yapmak için /s parametresi kullanın:

reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /s

Belirli Değer Aramak

Bir hive içinde belirli bir değeri isimle aramak için /f (find) parametresini kullanın:

reg query HKLM /f "RemoteDesktop" /s /k
  • /f: Aranacak string
  • /s: Alt anahtarlara da bak
  • /k: Sadece anahtar isimlerinde ara (değerlerde değil)
  • /v: Sadece değer isimlerinde ara
  • /d: Sadece değer verilerinde ara
  • /e: Tam eşleşme iste
  • /t: Belirli veri tipini filtrele (REG_SZ, REG_DWORD, vb.)

Gerçek dünya senaryosu: Bir sunucuda hangi uygulamaların autorun kaydı olduğunu bulmak istiyorsunuz:

reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun"
reg query "HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun"

Uzak Sistemde Sorgulama

Ağ üzerindeki başka bir sunucuyu sorgulamak için /m yerine doğrudan makine adını kullanın:

reg query "\SUNUCU01HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /v ProductName

Bu komutun çalışması için Remote Registry servisi hedef sistemde çalışıyor olmalı ve gerekli ağ erişiminiz bulunmalıdır.

REG ADD ile Değer Ekleme ve Değiştirme

reg add, hem yeni anahtar oluşturur hem de mevcut anahtara değer ekler ya da mevcut değeri değiştirir.

Temel Sözdizimi

reg add "ANAHTAR_YOLU" /v "DEGER_ADI" /t VERI_TIPI /d "VERI" /f
  • /v: Değer adı
  • /t: Veri tipi (REG_SZ, REG_DWORD, REG_BINARY, REG_EXPAND_SZ, REG_MULTI_SZ, REG_QWORD)
  • /d: Yazılacak veri
  • /f: Mevcut değerin üzerine sormadan yaz

Gerçek Dünya: RDP Portunu Değiştirme

Varsayılan 3389 portunu değiştirip güvenliği artırmak istediğinizde:

reg add "HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d 3390 /f

DWORD değerler varsayılan olarak decimal girilir. Hex girmek için /d 0xd3e formatını kullanabilirsiniz.

Gerçek Dünya: UAC Seviyesini Ayarlama

Sunucularda UAC davranışını komut satırından ayarlamak:

reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v EnableLUA /t REG_DWORD /d 1 /f
reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 2 /f

Gerçek Dünya: Otomatik Oturum Açma Yapılandırması

Kiosk sistemlerde ya da belirli terminal sunucularda otomatik login ayarı:

reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v AutoAdminLogon /t REG_SZ /d "1" /f
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultUserName /t REG_SZ /d "kiosk_kullanici" /f
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultPassword /t REG_SZ /d "sifre123" /f
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultDomainName /t REG_SZ /d "DOMAIN" /f

Önemli not: Şifre registry’de düz metin olarak saklanır. Sadece izole kiosk ortamlarında kullanın.

Boş Değer ve Default Değer Yazma

Bir anahtarın default değerini ayarlamak için /ve (value empty/default) kullanın:

reg add "HKCR.pdfOpenWithProgids" /ve /t REG_SZ /d "" /f

REG_MULTI_SZ Yazma

Çoklu string değerleri için veri içinde kullanarak satırları ayırın:

reg add "HKLMSYSTEMCurrentControlSetServicesTcpipParameters" /v SearchList /t REG_MULTI_SZ /d "sirket.localdc.sirket.local" /f

REG DELETE ile Silme İşlemleri

Silme işlemlerinde dikkatli olun. Registry’den silinen değerler doğrudan geri gelmez.

Değer Silme

reg delete "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v "GereksizUygulama" /f
  • /f: Onay sormadan sil

Tüm Anahtarı Silme

reg delete "HKLMSOFTWAREKaldirılacakUygulama" /f

Alt anahtarlarla birlikte silmek için:

reg delete "HKLMSOFTWAREKaldirılacakUygulama" /f /va

Aslında alt anahtarları içeren bir anahtarı silmek için /f yeterlidir, reg delete alt ağaçları otomatik siler. /va ise bir anahtarın altındaki tüm değerleri silerken anahtarın kendisini korur.

Gerçek Dünya: Eski Uygulama Kalıntılarını Temizleme

Kaldırılan bir uygulamanın kayıtlarını temizlemek:

reg delete "HKLMSOFTWAREEskiUygulama" /f
reg delete "HKCUSOFTWAREEskiUygulama" /f
reg delete "HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstallEskiUygulama_is1" /f

REG EXPORT ve REG IMPORT

Yedekleme ve dağıtım için en kritik komutlar bunlardır.

Export ile Yedek Alma

Herhangi bir değişiklik yapmadan önce mutlaka ilgili anahtarı export edin:

reg export "HKLMSYSTEMCurrentControlSetControlTerminal Server" "C:backuprdp_backup.reg"

Export dosyası düz metin formatındadır ve regedit ile import edilebilir ya da reg import ile geri yüklenebilir.

Import ile Geri Yükleme

reg import "C:backuprdp_backup.reg"

Gerçek Dünya: Toplu Sunucu Yapılandırması

Bir .reg dosyası hazırlayıp onlarca sunucuya dağıtmak için şu yaklaşımı kullanabilirsiniz:

Önce ayarlar.reg dosyasını oluşturun:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWARESirketPolitikalar]
"MaxLoginAttempts"=dword:00000005
"SessionTimeout"=dword:0000001e
"AuditEnabled"="1"

Sonra bunu her sunucuya push edin:

for /f "tokens=*" %i in (sunucular.txt) do psexec \%i reg import \%ic$ayarlar.reg

Ya da daha temiz bir batch script ile:

@echo off
setlocal
set SUNUCU_LISTESI=sunucular.txt
set REG_DOSYASI=\DAGITIMShareayarlar.reg

for /f "skip=1 tokens=*" %%s in (%SUNUCU_LISTESI%) do (
    echo [%%s] isleniyor...
    reg import %REG_DOSYASI% /reg:64 2>nul
    if %errorlevel% equ 0 (
        echo [%%s] BASARILI
    ) else (
        echo [%%s] HATA >> hatalar.log
    )
)

REG COMPARE ile Karşılaştırma

İki sistem arasındaki ya da iki anahtarın farkını bulmak için:

reg compare "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" "\SUNUCU02HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /s

Çıktı formatını kontrol etmek için /op kullanın:

  • /op 0: Tüm farkları göster (varsayılan)
  • /op 1: Sadece ilk kaynakta olanları göster
  • /op 2: Sadece ikinci kaynakta olanları göster
  • /op 4: Sadece eşleşenleri göster

Bu komut, “altın imaj” ile production sunucusu arasındaki sapmaları bulmak için çok işe yarar.

REG SAVE ve REG RESTORE

Bu komutlar binary hive formatında çalışır ve özellikle offline işlemler için kullanışlıdır.

reg save "HKLMSOFTWAREKritikUygulama" "C:backupkritik_backup.hiv"

Geri yüklemek için:

reg restore "HKLMSOFTWAREKritikUygulama" "C:backupkritik_backup.hiv"

Not: reg restore komutu, anahtar başka bir işlem tarafından kilitliyse çalışmaz. Bu yüzden özellikle SYSTEM anahtarları için offline recovery araçları tercih edilir.

64-bit ve 32-bit Registry Erişimi

Windows’ta 64-bit sistemlerde iki ayrı registry yolu vardır:

  • 64-bit uygulamalar: HKLMSOFTWARE...
  • 32-bit uygulamalar: HKLMSOFTWAREWOW6432Node...

CMD üzerinden hangi görünüme eriştiğinizi kontrol etmek için:

  • /reg:64: 64-bit registry görünümüne zorla
  • /reg:32: 32-bit (WOW6432Node) görünümüne zorla
reg query "HKLMSOFTWARETestUygulama" /reg:64
reg query "HKLMSOFTWARETestUygulama" /reg:32

Bu fark özellikle 32-bit uygulamaların ayarlarını yönetirken kritik öneme sahiptir. Script’lerinizde her zaman açıkça belirtin.

Pratik Script Örnekleri

Sistem Bilgisi Toplama Script’i

@echo off
echo ===== SISTEM KAYIT BILGILERI =====
echo.
echo -- Windows Surumu --
reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /v ProductName
reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersion" /v CurrentBuildNumber
echo.
echo -- Bilgisayar Adi --
reg query "HKLMSYSTEMCurrentControlSetControlComputerNameComputerName" /v ComputerName
echo.
echo -- RDP Durumu --
reg query "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections
echo.
echo -- Zaman Dilimi --
reg query "HKLMSYSTEMCurrentControlSetControlTimeZoneInformation" /v TimeZoneKeyName

Güvenlik Sıkılaştırma Script’i

@echo off
echo Guvenlik ayarlari uygulanıyor...

:: SMBv1'i devre disi birak
reg add "HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters" /v SMB1 /t REG_DWORD /d 0 /f
echo [OK] SMBv1 devre disi birakildi

:: LLMNR'yi devre disi birak
reg add "HKLMSOFTWAREPoliciesMicrosoftWindows NTDNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f
echo [OK] LLMNR devre disi birakildi

:: NTLMv1'i devre disi birak
reg add "HKLMSYSTEMCurrentControlSetControlLsa" /v LmCompatibilityLevel /t REG_DWORD /d 5 /f
echo [OK] NTLMv1 devre disi birakildi

:: WDigest kimlik dogrulama devre disi
reg add "HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest" /v UseLogonCredential /t REG_DWORD /d 0 /f
echo [OK] WDigest devre disi birakildi

echo Guvenlik sıkılastırması tamamlandı. Yeniden başlatma gerekebilir.

Hata Kodunu Kontrol Etme

reg komutları errorlevel döndürür. Script’lerinizde bunu kullanın:

reg query "HKLMSOFTWARETestUygulama" /v Version >nul 2>&1
if %errorlevel% equ 0 (
    echo Uygulama kurulu
) else (
    echo Uygulama bulunamadı
)
  • Errorlevel 0: Başarılı
  • Errorlevel 1: Hata oluştu (anahtar/değer bulunamadı, erişim reddedildi, vb.)

Dikkat Edilmesi Gereken Noktalar

Registry işlemlerinde yıllar içinde öğrendiğim bazı kritik dersler:

Her zaman yedek alın. Değişiklik yapmadan önce etkilenen anahtarı export edin. İki satır komut sizi büyük bir felaketten kurtarabilir.

UAC ve yetki kontrolü. HKLM altındaki işlemler için admin haklarına ihtiyacınız var. Script’lerinizi her zaman “Run as Administrator” ile çalıştırın ya da script başına yetki kontrolü ekleyin.

Uzak registry erişimi için Remote Registry servisi. Hedef sistemde RemoteRegistry servisi çalışıyor olmalı. Aktif etmek için:

sc \SUNUCU01 config RemoteRegistry start= auto
sc \SUNUCU01 start RemoteRegistry

Test ortamında deneyin. Özellikle toplu değişiklikler için bir test sunucusunda doğrulama yapın. Registry hataları sistemi açılmaz hale getirebilir.

Özyinelemeli sorgularda sabırlı olun. Büyük anahtarlarda /s ile sorgu yapmak çok fazla çıktı üretebilir. Çıktıyı dosyaya yönlendirin: reg query HKLM /f "password" /s > sonuclar.txt

Sonuç

reg komutu, Windows sistem yöneticisinin araç kutusunda hâlâ önemli bir yer tutuyor. Özellikle PowerShell’in kullanılamadığı ortamlarda, eski sistemlerde ya da basit script’lerde mükemmel bir çözüm sunuyor. Export/Import döngüsüyle güvenli yedek alarak çalışmak, karşılaştırma özelliğiyle sistem tutarsızlıklarını yakalamak ve uzak yönetim kapasitesiyle çok sayıda sunucuyu tek noktadan yönetmek bunların başında geliyor.

PowerShell Get-ItemProperty ve Set-ItemProperty gibi cmdlet’ler daha güçlü olsa da, batch script yazan, legacy ortamlarda çalışan ya da sadece hızlı bir tek satır komut isteyen herkes için reg.exe vazgeçilmez olmaya devam ediyor. Komutları ezberlemek yerine sözdizimini anlamak ve güvenli çalışma alışkanlıkları edinmek, uzun vadede çok daha değerli. Yedek al, test et, uygula. Bu üç adım registry işlemlerinde sizi her zaman güvende tutar.

Yorum yapın