Windows Hata Kodları ve CMD ile Sorun Giderme Rehberi

Bir Windows Server yöneticisi olarak günün birinde karşınıza çıkan hata kodları bazen hem can sıkıcı hem de korkutucu olabiliyor. “0x80070005” mı, “Error 1053” mi, yoksa “0xC0000034” mi? Bu kodların ne anlama geldiğini bilmeden rastgele çözüm aramak hem zaman kaybettirir hem de sorunu daha da büyütebilir. Bu yazıda Windows hata kodlarını anlamlandırma, CMD araçlarıyla sistematik sorun giderme ve gerçek hayatta karşılaşılan senaryolara pratik çözümler üretme konularını ele alacağım.

Windows Hata Kodlarını Anlamak

Windows hata kodları ilk bakışta anlamsız görünen hexadecimal veya decimal sayılar gibi görünse de aslında son derece organize bir yapıya sahip. Temel olarak iki formatta karşılaşırsınız.

Decimal (Ondalık) Hata Kodları: 1053, 1067, 5 gibi sayılar. Bunlar genellikle Windows servisleri ve temel sistem hatalarında karşınıza çıkar.

Hexadecimal Hata Kodları: 0x80070005, 0xC0000034, 0x800704CF gibi “0x” ile başlayan kodlar. Bu format daha çok Windows Update, DISM, sistem bileşenleri ve driver hatalarında kullanılır.

İlginç bir detay: 0x8007005 formatındaki bir hata kodunda “8007” kısmı “Win32 error” kategorisini, son dört karakter ise spesifik hatayı temsil eder. Örneğin 0x80070005’teki son dört karakter olan “0005”, Win32 hata kodu 5’e, yani “Access Denied” hatasına karşılık gelir.

net helpmsg Komutu ile Hata Çözümleme

CMD’nin en az bilinen ama en kullanışlı araçlarından biri net helpmsg komutudur. Decimal hata kodu alındığında bu komut size anlamlı bir açıklama sunar.

net helpmsg 5
net helpmsg 1053
net helpmsg 1067
net helpmsg 1722

Örneğin net helpmsg 1053 çalıştırdığınızda “The service did not respond to the start or control request in a timely fashion” mesajını alırsınız. Bu, servisin başlatma sırasında zaman aşımına uğradığını gösterir ve hemen registry’de zaman aşımı değerini artırmanız gerektiğini anlarsınız.

Sık Karşılaşılan Hata Kodları ve CMD Çözümleri

Error 5: Access Denied (0x80070005)

Bu, Windows dünyasında en sık karşılaşılan hatalardan biridir. Servis başlatma, dosya kopyalama, registry düzenleme sırasında karşınıza çıkar.

REM Servis izinlerini kontrol etmek için
sc qc "ServisAdi"
sc sdshow "ServisAdi"

REM Dosya/klasör izinlerini kontrol etmek için
icacls "C:ProblematicFolder"

REM İzin vermek için
icacls "C:ProblematicFolder" /grant "NETWORK SERVICE:(OI)(CI)F" /T
icacls "C:ProblematicFolder" /grant Administrators:F /T

Gerçek dünya senaryosu: IIS üzerinde çalışan bir uygulama logları yazamıyor ve Event Viewer’da 0x80070005 görüyorsunuz. icacls ile kontrol ettiğinizde IIS_IUSRS grubunun log dizinine yazma izni olmadığını fark edersiniz. Yukarıdaki komutu uyguladıktan sonra sorun çözülür.

Error 1053: Servis Zaman Aşımı

Servisler başlarken veya dururken bu hatayla karşılaşabilirsiniz. Registry’de servis başlangıç zaman aşımını artırmak çoğu zaman işe yarar.

REM Servisin mevcut durumunu kontrol et
sc query "ServisAdi"

REM Servis loglarını event viewer'dan çek
wevtutil qe System /q:"*[System[Provider[@Name='Service Control Manager']]]" /f:text /c:20

REM Registry ile zaman asimini artir (milisaniye cinsinden, varsayilan 30000)
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl" /v ServicesPipeTimeout /t REG_DWORD /d 180000 /f

Bu değişiklikten sonra sistemi yeniden başlatmanız gerekir. 180000 milisaniye yani 3 dakika genellikle yavaş başlayan servisler için yeterli olur.

Error 1067: Servis Beklenmedik Şekilde Sonlandı

Bu hata genellikle servis binary’sinin bozulduğunu veya gerekli bağımlılıkların eksik olduğunu gösterir.

REM Servis bagimliliklarini kontrol et
sc qc "ServisAdi"

REM Uygulamayla ilgili event loglarini ara
wevtutil qe Application /q:"*[System[Level=2]]" /f:text /c:30

REM Windows sistem dosyalarini kontrol et
sfc /scannow

REM Servis binary dosyasinin varligini kontrol et
sc qc "ServisAdi" | findstr BINARY_PATH_NAME

Windows Update Hataları: 0x800704CF ve 0x80073712

Windows Update sorunları özellikle kurumsal ortamlarda baş ağrısı yaratır. 0x80073712 hatası genellikle bozuk Windows Update bileşenlerine işaret eder.

REM Windows Update servislerini sifirla
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver

REM Gecici guncelleme dosyalarini temizle
ren C:WindowsSoftwareDistribution SoftwareDistribution.old
ren C:WindowsSystem32catroot2 catroot2.old

REM Servisleri yeniden baslat
net start wuauserv
net start cryptSvc
net start bits
net start msiserver

Bu işlem Windows Update önbelleğini temizler. Eğer sorun devam ederse DISM ve SFC ikilisini kullanmanın zamanı gelmiş demektir.

DISM ve SFC: Sistem Dosyası Sorunları İçin Temel Araçlar

Windows Server ortamlarında sistem dosyası bozulmaları ciddi sorunlara yol açabilir. Bu durumda önce SFC, ardından DISM kullanmanızı öneririm.

REM Sistem dosyalarini tara ve onar
sfc /scannow

REM SFC sonucunu log dosyasina kaydet
sfc /scannow > C:sfc_log.txt

REM SFC sorunu cozemezse DISM devreye girer
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth

REM DISM'in internete erisimi yoksa lokal kaynak kullan
DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:D:sourcesinstall.wim:1 /LimitAccess

Gerçek dünya senaryosu: Bir Windows Server 2019 makinede anlamsız BSoD’lar yaşıyorsunuz. Event Viewer’da kernel-power ve ntfs hataları görüyorsunuz. sfc /scannow çalıştırdığınızda “Windows Resource Protection found corrupt files but was unable to fix some of them” mesajı alıyorsunuz. Bu durumda DISM ile sistem imajını onarıp ardından SFC’yi tekrar çalıştırmanız gerekir. Büyük çoğunlukla bu ikili sorucu çözüyor.

Event Viewer Olmadan CMD ile Log Analizi

Birçok yönetici sorun giderme sürecinde doğrudan Event Viewer GUI’sine atlarken aslında CMD üzerinden çok daha hızlı ve filtrelenmiş sonuçlar elde edebilirsiniz.

REM Son 1 saatteki kritik sistem hatalarini listele
wevtutil qe System /q:"*[System[(Level=1 or Level=2) and TimeCreated[timediff(@SystemTime) <= 3600000]]]" /f:text /c:50

REM Belirli bir Event ID'yi ara (4625: Basarisiz oturum acma)
wevtutil qe Security /q:"*[System[EventID=4625]]" /f:text /c:20

REM Application loglarindan hatalar
wevtutil qe Application /q:"*[System[Level=2]]" /f:text /c:25 > C:app_errors.txt

REM Belirli bir kaynaktan gelen loglari filtrele
wevtutil qe System /q:"*[System[Provider[@Name='Microsoft-Windows-Kernel-Power']]]" /f:text /c:15

Bu komutlar özellikle remote sunuculara bağlı olduğunuzda veya GUI olmayan Server Core kurulumlarında son derece değerlidir.

Ağ Bağlantısı Sorunlarında CMD Araçları

0x800704CF: Ağ Konumuna Ulaşılamıyor

Bu hata genellikle DNS veya ağ yapılandırma sorunlarına işaret eder.

REM Temel ag tanilama adimlari
ipconfig /all
ipconfig /flushdns
ipconfig /release
ipconfig /renew

REM DNS cozunurluğunu test et
nslookup google.com
nslookup update.microsoft.com

REM Ag baglanti testleri
ping -t 8.8.8.8
tracert update.microsoft.com

REM Firewall durumunu kontrol et
netsh advfirewall show allprofiles

REM Proxy ayarlarini kontrol et (WSUS ortamlarinda onemli)
netsh winhttp show proxy
bitsadmin /util /getieproxy NETWORKSERVICE

Proxy arkasındaki kurumsal ortamlarda Windows Update sorunları sıkça yaşanır. netsh winhttp show proxy çalıştırdığınızda “Direct access (no proxy server)” görüyorsanız ama şirket proxy’si kullanılıyorsa problem burada gizlidir.

REM Proxy ayarlarini yapılandır
netsh winhttp set proxy proxy-server="http://proxy.sirket.local:8080" bypass-list="*.sirket.local;localhost"

REM IE proxy ayarlarini WinHTTP ile esitle
netsh winhttp import proxy source=ie

Disk ve Depolama Hataları

Chkdsk ile Disk Sorunlarını Giderme

Disk hataları birçok sistem sorunun altında yatan gerçek neden olabilir. NTFS hataları, bozuk sektörler, file system tutarsızlıkları sistem loglarında farklı hata kodlarıyla kendini gösterebilir.

REM Disk durumunu kontrol et (yeniden baslama gerekmez)
chkdsk C:

REM Hatalari onar (C: surucusu icin yeniden baslama gerekir)
chkdsk C: /f

REM Bozuk sektorleri tara ve onar
chkdsk C: /f /r /x

REM CHKDSK sonuclarini event log'dan oku
wevtutil qe Application /q:"*[System[Provider[@Name='Microsoft-Windows-Chkdsk']]]" /f:text /c:5

Üretim sunucularında chkdsk /f /r komutunu çalıştırmadan önce mutlaka bakım penceresi planlayın. Bu işlem diskin boyutuna göre saatler alabilir ve sistem yeniden başlatma gerektirir.

Diskpart ile Disk Yönetimi

REM Diskpart ile disk durumunu kontrol et
diskpart
list disk
list volume
select volume 2
detail volume
exit

Servis Yönetiminde İleri Seviye CMD Kullanımı

Servis sorunlarını çözürken sadece net start/stop yetmez. sc komutu çok daha fazla kontrol sağlar.

REM Servis baslangic tipini degistir
sc config "ServisAdi" start= auto
sc config "ServisAdi" start= demand
sc config "ServisAdi" start= disabled

REM Servis hata davranisini ayarla (3 basarisiz denemede yeniden baslat)
sc failure "ServisAdi" reset= 86400 actions= restart/60000/restart/60000/restart/60000

REM Servis hesabini degistir
sc config "ServisAdi" obj= "NT AUTHORITYNetworkService"

REM Servisin calisan process ID'sini bul
sc queryex "ServisAdi"

REM Process'i zorla sonlandir (son care)
taskkill /PID 1234 /F

REM Servise bagli tum processleri listele
tasklist /svc | findstr "ServisAdi"

Gerçek dünya senaryosu: Bir SQL Server servisi her gece 02:00’da duruyor ve sabah iş yükü geldiğinde kimse veritabanına bağlanamıyor. sc failure komutuyla servisi her başarısızlıkta otomatik yeniden başlayacak şekilde yapılandırırsınız. Ancak asıl sorunu bulmak için wevtutil ile o saatte neler yaşandığını incelemeniz gerekir.

Sistem Bilgisi Toplama ve Tanılama

Bir sorunu uzak destek alarak çözmeye çalışırken veya bir değişiklik öncesi baseline almak istediğinizde şu komutlar hayat kurtarır.

REM Kapsamli sistem raporu olustur (HTML formatinda)
msinfo32 /report C:sistem_raporu.txt

REM Sadece donanim bilgisi
systeminfo

REM Yeni yüklenen programları listele
wmic product get name,version,installdate

REM Calistirilabilir tum processleri ve kaynak kullanimi
tasklist /v

REM En fazla CPU kullanan processleri bul
wmic process get name,ProcessID,UserModeTime,KernelModeTime /format:csv > C:cpu_usage.csv

REM Memory dump ayarlari ve kilitlenme tarihcesi
wmic recoveros get DebugInfoType, MiniDumpDirectory, AutoReboot

Hata Kodlarını Hızlıca Çözmek için certutil Numarası

Hexadecimal hata kodlarını anlamlandırmak için certutil komutunu kullanabilirsiniz. Bu az bilinen ama son derece pratik bir numaradır.

REM Hexadecimal hata kodunu anlamlandir
certutil -error 0x80070005
certutil -error 0x80073712
certutil -error 0x8007000E

certutil -error 0x80070005 çalıştırdığınızda “Access is denied.” açıklamasını ve Windows ile HRESULT karşılıklarını göreceksiniz. Bu komut özellikle COM hataları, Windows Update ve sistem bileşeni hatalarında güzel sonuçlar verir.

Performans Sorunlarında CMD Tabanlı Analiz

Yüksek CPU veya memory kullanımı gibi performans sorunlarında GUI olmasa da durumu analiz edebilirsiniz.

REM CPU ve memory durumunu ozetle
wmic cpu get loadpercentage
wmic OS get FreePhysicalMemory,TotalVisibleMemorySize

REM En fazla memory kullanan processleri sirala
tasklist /v | sort /r /+65

REM Ag baglanti durumunu kontrol et
netstat -ano
netstat -b

REM Belirli bir porta bağlı processleri bul
netstat -ano | findstr :443
netstat -ano | findstr :1433

REM Performans sayaclari ile 60 saniye veri topla
typeperf "Processor(_Total)% Processor Time" "MemoryAvailable MBytes" -sc 60 -o C:perf_log.csv

Gerçek dünya senaryosu: Bir terminal server’da kullanıcılar yavaşlıktan şikayet ediyor. tasklist /v ile baktığınızda bir kullanıcının session’ında çalışan bir process’in anormal derecede CPU tükettiğini görüyorsunuz. netstat -ano ile de bu process’in beklenmedik dış bağlantılar kurduğunu fark ediyorsunuz. Hem performans sorununu hem de potansiyel güvenlik olayını tek CMD oturumunda tespit etmiş oluyorsunuz.

Otomatik Sorun Giderme Scripti Oluşturmak

Tekrar eden sorun giderme adımlarını bir batch script haline getirmek hem zamandan tasarruf sağlar hem de tutarlı sonuçlar verir.

@echo off
echo ============================================
echo Windows Sorun Giderme Raporu
echo %date% %time%
echo ============================================

echo [1] Sistem Bilgisi
systeminfo | findstr /C:"OS Name" /C:"OS Version" /C:"Total Physical Memory" /C:"Available Physical Memory"

echo.
echo [2] Disk Durumu
wmic logicaldisk get caption,freespace,size,volumename

echo.
echo [3] Kritik Servisler
sc query wuauserv | findstr STATE
sc query windefend | findstr STATE
sc query EventLog | findstr STATE

echo.
echo [4] Son 10 Sistem Hatasi
wevtutil qe System /q:"*[System[Level=2]]" /f:text /c:10

echo.
echo [5] Ag Baglantisi
ping -n 2 8.8.8.8 | findstr /C:"TTL" /C:"timed out"

echo.
echo Rapor tamamlandi.
echo ============================================

pause

Bu scripti sysdiag.bat olarak kaydedip sorun yaşanan makinede admin olarak çalıştırırsanız hızlı bir genel bakış elde edersiniz. Scripti ihtiyacınıza göre genişletebilir, çıktıyı bir dosyaya yönlendirerek kayıt altına alabilirsiniz.

Önemli Registry Lokasyonları

CMD üzerinden sorun giderirken sıkça başvurduğunuz registry lokasyonları vardır.

  • HKLMSYSTEMCurrentControlSetServices: Tüm servis yapılandırmaları
  • HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management: Sayfa dosyası ve memory ayarları
  • HKLMSOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdate: Windows Update yapılandırması
  • HKLMSYSTEMCurrentControlSetControlCrashControl: BSoD ve dump ayarları
  • HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon: Otomatik oturum açma ve logon ayarları
REM Registry sorgulama ornekleri
reg query "HKLMSYSTEMCurrentControlSetServiceswuauserv" /v Start
reg query "HKLMSYSTEMCurrentControlSetControl" /v ServicesPipeTimeout
reg query "HKLMSYSTEMCurrentControlSetControlCrashControl" /v CrashDumpEnabled

Sonuç

Windows hata kodları başta gizemli görünse de sistematik bir yaklaşımla büyük çoğunluğu CMD üzerinden çözülebilir. Önemli olan hangi aracı ne zaman kullanacağını bilmek: net helpmsg ve certutil -error ile hata kodunu anlamlandırmak, wevtutil ile logları filtrelemek, sfc ve DISM ile sistem bütünlüğünü korumak, sc ile servis davranışlarını yönetmek.

Her sorun giderme senaryosunda önce neyi çözmeye çalıştığınızı netleştirin, logları inceleyin, küçük adımlarla ilerleyin ve yaptığınız değişiklikleri mutlaka kayıt altına alın. Üretim ortamlarında deneme yanılma yönteminden kaçının; önce test ortamında doğrulayın. Bu yazıdaki araçlar ve komutlar düzenli olarak kullandığınız toolkit’inize girerse sorunları çok daha hızlı tespit edip çözüme kavuşturacağınıza eminim.

Yorum yapın