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.