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-mstwinui.appcore.dll.munsppcomapi.dllvesppcomapi.dll.munLicensingUI.exeveslui.exeSpeechUX.dll,SpeechUXWiz.exeveSPTIP.DLLeappgnui.dllvedsdmo.dllrdvvmtransport.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:
- Kurulu tam dosyaya, kurulu bileşenin
rklasöründeki geri delta uygulandı. - Böylece güncellemenin beklediği temel sürüm yeniden üretildi.
- Bu temel sürüme KB5122882 paketindeki
fileri deltası uygulandı. - Üretilen hedef dosyanın SHA-256 değeri, resmi Microsoft manifestindeki
DigestValueile karşılaştırıldı. - 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.5622oldu. Get-HotFix, KB5122882’yi gösterdi.- Paket durumu
Installedolarak 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.
