In Windows, what is a "user profile"?
A user profile is a collection of application settings and data associated with a specific security principal (user). For example, if you log in as "henry" to an XP box "MYBOX" that is not part of a domain, you will have a profile associated with the principal "MYBOX\henry". If you had that same username on the domain "MYCORP", that principal would be "MYCORP\henry". There could be both a local "henry" and a domain "henry" that are two completely separate principals and thus have completely separate profiles.
On the filesystem you'd have a hierarchy of directories under C:\Documents and Settings\henry, like this:
- C:\Documents and Settings\henry\My Documents
- C:\Documents and Settings\henry\Application Data
- C:\Documents and Settings\henry\Local Settings
- C:\Documents and Settings\henry\Start Menu
- C:\Documents and Settings\henry\Desktop
- ...etc...
An applications will usually write its temporary files and other user-specific files to its folder under Application Data or Local Settings, for example.
There's also a registry folder associated with each profile on a computer, under the hive HKEY_USERS
. They are named by the SID (security identifier), a long string of numbers and characters used internally by Windows to uniquely identify each security principal. If you use regedit you can browse through HKEY_USERS
and see this. Applications will store user-specific settings here as well.
Logging into a box for the first time as a specific user automatically creates a profile if none is present. If you log in using a domain account and your account is set to use a roaming profile, it will download your profile from the server and write it to the local system drive. If you make any changes during your session that cause the timestamp on your profile's NTUSER.DAT file to become newer than that of the server's copy, when you log off the box will copy the updated profile up to the server so that it will "roam" with you if you log into a different workstation later.
A quick way to see which profiles are on a box is to get a directory listing of C:\Documents and Settings, where there is a folder for each user, e.g.:
- C:\Documents and Settings\Administrator
- C:\Documents and Settings\henry (this is the local "henry" account)
- C:\Documents and Settings\henry.MYCORP (this is the domain "henry" account)
- C:\Documents and Settings\domainadmin
- C:\Documents and Settings\betty
There isn't necessarily a single place to look for "profiles on a domain," since whether a profile exists anywhere but a local hard drive is set on a per-user basis in Active Directory. It's a common practice for admins to configure a specific set of folders on a server to hold roaming profiles, such as D:\Profiles. In that case, there might be D:\Profiles\henry, D:\Profiles\betty, etc. But that's not enforced by Windows. They could be all over the place for all it cares, as long as the roaming profile folder for each user corresponds to an actual, readable/writable location on disk.
There's really no such thing as a "profile in a workgroup."
I haven't done much work with copying profiles. I think it would involve copying both the entire file structure under C:\Documents and Settings\henry as well as exporting the appropriate registry key under HKEY_USERS
that corresponds to henry's SID, and then importing it on the destination machine. Setting a user account in a domain to use a roaming proflie is the easiest way I've seen to copy/move a profile from one machine to another.
In a nutshell...
A user's profile is where files and settings relative to a specific user of that particular system are stored. It can be stored locally on the PC / server or, in a domain setting, centrally on a server (via network share) as a "roaming" profile.
The main 2 components of a user profile are the files stored on the file system and the keys in the registry related to that user.
Files are stored in:
- %system root%\Documents and Settings\ for Windows XP and earlier
- %system root%\Users\ for Windows Vista and later
(%system root% is usually C:)
The best / safest way to manipulate profiles is through System Properties (right-click on My Computer and choose Properties, click the Advanced tab, click the Settings button in the User Profiles pane.) From here you can list, delete, copy, move profiles. It's pretty much the same in a workgroup as in a domain. The only difference in a domain setting is with roaming profiles. The location of the stored profile is listed on the user's account in Active Directory (view with Active Directory Users and Computers). System Properties will tell you what type a profile is (local or roaming).
Types of settings that are stored in a user's profile include:
- UI settings (preferences like your wallpaper, screen saver, colors, etc)
- Application settings specific to a user
- IE favorites, cookies and such
- Contents of My Documents (which can be relocated)
- Start Menu items particular to that user
- etc (if it's specific to a user, chances are it's stored in that user's profile)
Upon inspection of the \Documents and Settings folder you will notice a subfolder called All Users. This is where items common to all users of the computer are stored and are merged with a user's individual profile during login. You'll need local administrator rights to modify things under All Users.
You will also notice a file called NTUSER.dat in each login's individual folder. This is where the HKEY_CURRENT_USER registry hive is stored. This becomes editable when the user is logged in and can be modified by registry manipulation tools (eg- regedit / regedt32).