Pourquoi les mises à jour Windows 7 mettent-elles autant de temps à s'installer ?

J’ai installé Windows 7 sur un vieux portable hier soir, pour pouvoir expérimenter avec la programmation de l’API Win32. J’ai lancé la mise à jour il y a environ 5 heures. Le téléchargement des mises à jour a pris environ 30 minutes, mais à l’heure actuelle, l’installation est toujours en cours, et seulement à 58 %.

Pourquoi cela prend-il autant de temps, et que puis-je faire pour accélérer le processus ?

Le portable est un HP Pavilion dv6701us, avec 2 Go de RAM, un disque dur SATA de 120 Go et un processeur Pentium D dual core, pour information.

Mise à jour (18 juillet 2015) :
J’ai maintenant observé ce comportement sur chaque machine Windows 7 de mon foyer, 32 et 64 bits. Cela semble presque invariant par rapport à la RAM, la vitesse du CPU et le nombre de coeurs, même SSD vs. HDD. Tous les systèmes Windows 7 que j’ai vus se mettre à jour prennent plus de 8 heures pour installer environ 200 mises à jour.

Y a-t-il quelqu’un pour qui Windows Update n’est pas spectaculairement lent ?

Mise à jour (19 juillet 2015) : voici le lien vers le fichier xperf compressé :

https://drive.google.com/file/d/0B7EgLkt64WtaWWc5YTJicThLNFk/view?usp=sharing

Mise à jour (14 septembre 2015) :

Je n’étais pas entièrement satisfait de la réponse ci-dessous - Microsoft peut-il vraiment livrer quelque chose d’aussi cassé ? - alors j’ai décidé d’essayer avec Sysinternals procmon. Voici ce que je vois, encore et encore, pendant que Windows Update est bloqué et ne commence même pas le téléchargement :

High Resolution Date & Time:    9/14/2015 8:24:12.9744097 PM
Event Class:    Registry
Operation:  RegOpenKey
Result: NAME NOT FOUND
Path:   HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate
TID:    3376
Duration:   0.0000183
Desired Access: Query Value

Cette clé WindowsUpdate n’existe pas. Il est possible qu’elle soit censée ne pas exister ; mais je soupçonne fortement le contraire, vu qu’elle est accédée encore et encore par le processus hôte de service de l’utilitaire de mise à jour, dans ce qui semble être une boucle infinie. La question dans ce cas serait : quelles entrées/valeurs devrait-elle contenir ?

Google/Bing n’a jusqu’à présent rien donné, mais je vais continuer à chercher.

Mise à jour 2 (14 septembre 2015) :

J’ai essayé le correctif d’ici :
https://support.microsoft.com/en-us/kb/2700567

Il a affirmé corriger certaines choses, y compris quelque chose concernant l’enregistrement du service de mise à jour manquant ou corrompu (!). Bizarre. C’est une installation fraîche de Windows 7 SP1.

… Cependant, Windows Update est toujours tout aussi leeeent qu’avant, tournant à 50 % de la puissance CPU disponible tout en semblant pour tout observateur être bloqué dans une boucle infinie.

Je ne comprends tout simplement pas. Windows a 90 % de la base d’utilisateurs de bureau, il ne peut pas être aussi horrible par défaut… Je vais continuer à investiguer.

Depuis Windows Vista, les mises à jour arrivent sous forme de fichiers différentiels. Ainsi, pendant l’installation, Windows doit créer les vrais fichiers à partir des différences. C’est intensif en CPU et prend du temps, surtout sur de très vieux CPU comme votre Pentium D.

Dans votre fichier xperf fourni, vous avez une utilisation CPU élevée de TrustedInstaller parce qu’il doit créer un pending.xml. Cela signifie que les fichiers mis à jour étaient en cours d’utilisation et devaient être mis à jour pendant l’arrêt/le démarrage, ce qui résulte en ce dialogue :

Ici, le CPU est occupé à écrire les données XML

wcp.dll!Windows::ServicingAPI::CCSITransaction::GeneratePendingTransactionContent

et à écrire des données dans le registre

wcp.dll!Windows::Rtl::SystemImplementation::CKey_IRtlKeyTearoff::CreateNewKey.

Mais le plus gros problème est que vous essayez d’installer 5 mises à jour .NET Framework :

Maintenant Windows est occupé parce que le service d’optimisation .NET mscorsvw.exe tourne pour compiler les fichiers .NET mis à jour en code machine afin d’améliorer les performances et réduire l’utilisation mémoire des applications .NET.

C’est également très intensif en CPU et votre Intel Atom CPU N270 @ 1.60GHz est trop lent.

Microsoft a fourni un script pour accélérer cela.