RSS

Tag Archives: 0x8007000D

KB5122882 0x8007000D Hatası: Windows Server 2022 Kesin Çözümü

Windows Server 2022 üzerinde KB5122882 toplu güncellemesini kurmaya çalışırken sürekli 0x8007000D hatasıyla karşılaştım. Microsoft bu kodu “The data is invalid / Veriler geçersiz” olarak tanımlıyor; ancak bu vaka klasik Windows Update önbelleği bozulmasından daha derin çıktı.

Windows Update bileşenlerini sıfırlamak, DISM ve SFC çalıştırmak, güncellemeyi Microsoft Update Catalog üzerinden indirip çevrimdışı kurmak sorunu çözmedi. Kesin teşhis ancak CBS.log içindeki delta hydration hataları incelendiğinde kondu.

Bu yazıda sorunun başından sonuna kadar uyguladığım adımları, işe yaramayan standart yöntemleri ve güncellemeyi başarıyla kurduran çözümü derledim.

Ortam ve belirti

  • İşletim sistemi: Windows Server 2022 Standard, 21H2
  • Başlangıç derlemesi: 20348.2461
  • Hedef güncelleme: KB5122882
  • Hedef derleme: 20348.5622
  • Hata kodu: 0x8007000D / Error 13

Windows Update kurulumu belirli bir noktaya kadar ilerliyor, ardından “Veriler geçersiz” hatasıyla geri dönüyordu. Yeniden başlatma bekleyen bir işlem yoktu ve ilk sağlık kontrollerinde component store bozulması görünmüyordu.

İlk uygulanan standart onarımlar

İlk şüphe Windows Update önbelleğiydi. İlgili servisleri durdurup SoftwareDistribution ve catroot2 klasörlerini yeniden oluşturdum:

net stop wuauserv
net stop bits
net stop cryptsvc

ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old

net start cryptsvc
net start bits
net start wuauserv

Ardından sunucuyu yeniden başlatıp sistem dosyalarını denetledim:

DISM /Online /Cleanup-Image /ScanHealth
sfc /scannow

İlk SFC turu bazı dosyaları düzeltti. İkinci tur temiz tamamlandı. Buna rağmen KB5122882, Windows Update üzerinden yeniden denendiğinde yine 0x8007000D ile başarısız oldu.

Çevrimdışı MSU kurulumu da başarısız oldu

Bir sonraki adım Microsoft Update Catalog’dan resmi MSU paketini indirip Windows Update istemcisini devreden çıkarmaktı:

wusa.exe C:\Temp\KB5122882.msu /quiet /norestart

Aynı hata devam edince MSU paketini açıp doğrudan DISM ile eklemeyi denedim:

DISM /Online /Add-Package /PackagePath:C:\Temp\KB5122882 /NoRestart

Bu deneme de yüzde 100’e kadar ilerleyip 0x8007000D ile sonuçlandı. Böylece problemin Windows Update önbelleğinden veya yalnızca WUSA katmanından kaynaklanmadığı kesinleşti.

Asıl ipucu CBS.log içindeydi

Windows dizinindeki Logs/CBS/CBS.log dosyasındaki son hataları süzdüğümde aşağıdaki yapıda kayıtlar gördüm:

Hydration failed for component ...
on file ... with NTSTATUS -1073283059
Matching Component = ...
FileHasForwardReverseDeltas = false
GenerateReverseDelta = true

Hatalar tek bir dosyaya bağlı değildi. Lisanslama, kullanıcı arabirimi, ses, kimlik doğrulama ve Terminal Services bileşenlerinde hem amd64 hem de wow64 dosyaları etkileniyordu. Örnekler arasında şunlar vardı:

  • DefaultPpd-csvlk-pack-ppdlic.xrm-ms
  • twinui.appcore.dll.mun
  • sppcomapi.dll ve sppcomapi.dll.mun
  • LicensingUI.exe ve slui.exe
  • SpeechUX.dll, SpeechUXWiz.exe ve SPTIP.DLL
  • eappgnui.dll ve dsdmo.dll
  • rdvvmtransport.dll

Kök neden: delta hydration zinciri

Windows toplu güncelleme paketleri her dosyanın tamamını taşımak yerine bazı bileşenlerde ileri ve geri delta dosyaları kullanabiliyor. CBS, mevcut dosyadan hedef sürümü üretmeye çalışırken bu delta zincirini kuramadığı için paketi “veri geçersiz” hatasıyla durduruyordu.

İlginç olan şuydu: mevcut tam dosyanın hash değeri doğruydu. Sorun doğrudan hedef ileri deltasını mevcut dosyaya uygulama aşamasındaydı. Çalışan zincir şu oldu:

  1. Kurulu tam dosyaya, kurulu bileşenin r klasöründeki geri delta uygulandı.
  2. Böylece güncellemenin beklediği temel sürüm yeniden üretildi.
  3. Bu temel sürüme KB5122882 paketindeki f ileri deltası uygulandı.
  4. Üretilen hedef dosyanın SHA-256 değeri, resmi Microsoft manifestindeki DigestValue ile karşılaştırıldı.
  5. Yalnızca hash birebir eşleştiğinde tam dosya açılmış pakete yazıldı ve ilgili ileri delta kaldırıldı.

Delta işlemleri Windows’un kendi msdelta.dll kitaplığındaki ApplyDeltaB fonksiyonuyla yapıldı. Bu aşamada hash kontrolü kritik: üretilen dosya resmi manifestteki değerle eşleşmiyorsa kuruluma devam edilmemeli.

Neden işlem birkaç tur sürdü?

CBS ilk karşılaştığı bozuk delta grubunda kurulumu durduruyordu. İlk bileşenler onarıldıktan sonra paket yeniden çalıştırıldığında bir sonraki grup görünür hale geldi. Bu nedenle akış birkaç kez tekrarlandı:

DISM ile kurmayı dene
→ CBS.log içindeki yeni hydration hatalarını bul
→ İlgili hedef dosyaları üret ve hash doğrula
→ Paketi yeniden kur

Son turda amd64 bileşenler geçildi, ardından aynı dosyaların wow64 karşılıkları ortaya çıktı. Onlar da aynı yöntemle üretildikten sonra paket, önceki hata noktasını geçti ve kurulumu tamamladı.

Başarılı kurulum

Düzeltilmiş ve manifest hashleri doğrulanmış açılmış paket şu komutla tekrar kuruldu:

DISM /Online /Add-Package /PackagePath:C:\Temp\KB5122882-expanded /NoRestart

Bu kez sonuç:

The operation completed successfully.
EXIT=3010

3010, kurulumun başarılı olduğunu ve tamamlanması için yeniden başlatma gerektiğini ifade ediyor. Sunucu yeniden başlatıldı ve Windows giriş ekranına ulaştıktan sonra guest agent üzerinden kontroller yapıldı.

Kurulum sonrası doğrulamalar

Yalnızca “kurulum başarılı” mesajıyla yetinmedim. Paket, derleme, component store ve servisleri ayrı ayrı doğruladım:

Get-HotFix -Id KB5122882

DISM /Online /Get-PackageInfo  /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~20348.5622.1.23

DISM /Online /Cleanup-Image /CheckHealth
sfc /scannow

İlk reboot sonrasında sonuçlar şöyleydi:

  • Windows derlemesi 20348.5622 oldu.
  • Get-HotFix, KB5122882’yi gösterdi.
  • Paket durumu Installed olarak doğrulandı.
  • CBS ve Windows Update reboot bayrakları temizdi.
  • SSH, Terminal Services, IIS ve QEMU Guest Agent servisleri çalışıyordu.

Ancak ilk CheckHealth sonucu component store’u “repairable” olarak işaretledi. Bu nedenle işi burada bırakmadım:

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
DISM /Online /Cleanup-Image /CheckHealth

RestoreHealth başarıyla tamamlandı. Son SFC taraması “Windows Resource Protection did not find any integrity violations” sonucunu verdi. Nihai CheckHealth çıktısı ise:

No component store corruption detected.
The operation completed successfully.

Sonuç

Bu vakada 0x8007000D, ne basit bir Windows Update önbelleği problemi ne de klasik component store bozulmasıydı. Sorun, kurulu bileşenlerle KB5122882 paketindeki ileri deltalar arasındaki hydration zincirinin kurulamamasıydı.

Kesin çözüm; CBS logundan hatalı bileşenleri tespit etmek, kurulu sürümün geri deltasından beklenen temeli üretmek, hedef ileri deltasını bu temele uygulamak ve ortaya çıkan her dosyayı resmi manifest hashine göre doğrulamaktı.

Önemli not: Bu yöntem ileri seviye bir servicing müdahalesidir. Yalnızca Microsoft’tan indirilen resmi ve imzası geçerli paketlerle çalışılmalı, her üretilen dosya manifest hashine göre doğrulanmalı ve işlem öncesinde geri dönüş planı hazırlanmalıdır. Hash doğrulaması olmadan component store içine dosya taşınmamalıdır.

 

Posted by on 12 Eylül 2026 in Bilgisayar, Server

Leave a comment

Tags: , , , , ,