Pourquoi les désinstalleurs normaux ne suppriment-ils pas les valeurs du registre ?

En prolongement de Comment supprimer les traces résiduelles d’un logiciel désinstallé du registre ? – chaque fois que je désinstalle un programme puis que je le cherche ensuite via RegEdit, il est encore là !

Pourquoi la majorité des applications Windows tiennent-elles tant à laisser de petites traces d’elles-mêmes dans le registre ? Est-ce la faute de Windows ou des développeurs ?


Source : Super User

Parce que c’est impossible.

Le registre a plusieurs noeuds racines, 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 modifie les permissions, le programme en cours d’exécution ne peut pas écrire dans LocalMachine.)

Bien que laisser des 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 (ce qui est le cas de la plupart) et que plusieurs utilisateurs l’utilisent, que devrait faire le désinstalleur ? 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 désinstalleur depuis un compte non admin puis entré les identifiants d’un compte admin – le programme d’installation s’exécute maintenant sous ce compte, pas le premier).

Qu’en est-il des 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 les choses dont il a besoin.)

Mais vous ne devriez même pas essayer cela. Si vous utilisez des profils itinérants, par exemple pour les services de terminal, et supprimez ensuite tous les paramètres à la désinstallation, vous pourriez vraiment tout gâcher et supprimer des choses qui sont en fait encore utilisées.

Un serveur de terminaux est essentiellement une machine Windows où plusieurs utilisateurs se connectent en même temps et utilisent des applications.

Disons que vous avez deux serveurs de terminaux exécutant une application. Vous désinstallez l’application sur TS1, maintenant tous les paramètres pour tous les utilisateurs ont disparu sur TS2 parce que vous avez des profils itinérants. Oups.

Le même principe s’applique également aux fichiers dans les répertoires par utilisateur.

Dans le programme d’installation du logiciel de mon entreprise, je supprime les éléments par machine mais ne touche pas aux éléments par utilisateur, pas même ceux de l’utilisateur exécutant actuellement le programme d’installation.