Parce que c'est impossible.
Le registre a plusieurs nœuds racine, mais seulement deux intéressants: LocalMachine et CurrentUser . Normalement, le programme d'installation écrit des valeurs dans LocalMachine et le programme en cours d'exécution écrit UNIQUEMENT dans CurrentUser (en fait, à moins que le programme d'installation ne respecte les autorisations, le programme en cours d'exécution ne peut pas écrire dans LocalMachine.)
Bien que conserver les restes dans LocalMachine soit de la paresse, comme le soulignent les autres réponses, il n'est pas possible de nettoyer la partie utilisateur.
Si un programme est installé par machine (la plupart) et que plusieurs utilisateurs l'utilisent, que doit faire le programme de désinstallation? Il pourrait supprimer en toute sécurité les paramètres utilisateur du compte actuel, mais le compte actuel pourrait ne pas être votre compte. (Cela se produit si vous avez démarré le programme de désinstallation à partir d'un compte non administrateur, puis entré les informations d'identification d'un compte administrateur - la configuration s'exécute maintenant sous ce compte, pas le premier).
Et les autres utilisateurs? Il pourrait essayer d'énumérer tous les utilisateurs, mais leurs clés de registre pourraient ne pas être chargées. (Windows est paresseux et ne charge que ce dont il a besoin.)
Mais vous ne devriez même pas essayer celui-là. Si vous utilisez des profils itinérants, par exemple pour les services Terminal Server, puis supprimez tous les paramètres lors de la désinstallation, vous pourriez vraiment gâcher et supprimer des éléments qui sont encore en cours d'utilisation.
Un serveur de terminaux est essentiellement une machine Windows où plusieurs utilisateurs se connectent en même temps et utilisent des applications.
Supposons que deux serveurs Terminal Server exécutent une application. Vous désinstallez l'application sur TS1, maintenant tous les paramètres pour tous les utilisateurs ont disparu sur TS2 car vous avez des profils itinérants. Oups.
Il en va de même pour les fichiers des répertoires par utilisateur.
Dans la configuration de mon programme d'entreprise, je supprime les éléments par machine mais ne touche pas aux éléments par utilisateur, pas même à l'utilisateur exécutant actuellement la configuration.