This article is part of Helge’s Profile Toolkit, a set of posts explaining the knowledge and tools required to tame Windows user profiles.
One of the constants in the Windows universe is the knowledge that user profiles increase in size over time. They tend to accumulate all kinds of junk and become bloated which is especially cumbersome in the case of roaming profiles because all that “weight” is copied across the network time and again, slowing down the logon process.
Profile bloat is the reason why many administrators prefer to set their users up with blank new profiles during migrations, ignoring the bad, but also the good, that is stored in the profiles. An elegant way out of this dilemma – take all, but also the junk, or take nothing, ignoring the good – is to use Profile Migrator for the migration. It creates clean new profiles and migrates only the good stuff over. But that is another topic. Have you ever asked yourself where that junk actually comes from?
Origins of Junk
There are many ways profiles can become fat and ugly. One of them has its roots in missing functionality of (un) installers.
Setup and installation programs, for example Windows Installer, keep track of what they install where. They remove what they installed when the user performs an uninstallation. Sounds good, doesn’t it? Install, use, uninstall, and the system should be clean and pristine again. No. Unfortunately it does not work like that.
The problem lies in the fact that applications typically have computer and user parts. Installations are performed per computer by writing to C:\Program Files and to HKLM. But that is just the initial state of an application. Most programs generate additional data during runtime, be it logs, config files, databases, or whatever. Developers adhering to best practices store that kind of user-specific data in the user profile, a good practice. But here comes the problem:
Uninstallers do not have access to the profiles of all users that might have used the program at some time.
Multiple users may have used a program. The may have local or roaming profiles, their profiles may be loaded during uninstallation or not. Very much is uncertain. The only certainty from an uninstaller’s point of view is that it is pretty much impossible to remove all data the application might have generated from all user profiles.
The consequence? Uninstallers ignore data created by an application in the user profile and leave it where it is. And the pile of junk grows…