Why don’t all of my folder customizations roam with my profile?


A customer reported some inconsistency in how folder customizations are handled by roaming profiles.

  1. Log onto Server1 with a roaming profile.
  2. Open the following folders and in each one, customize the icon size:
    1. Library\Documents
    2. \\server\share
    3. C:\Temp
  3. Log off from Server1.
  4. Log onto Server2 with the same roaming profile.
  5. Open the same folders and observe:
    1. Library\Documents: Icon size roams.
    2. \\server\share: Icon size roams.
    3. C:\Temp: Icon size does not roam.

Why doesn't the C:\Temp customization roam?

Well, if you think about it, it makes sense that the setting for C:\Temp doesn't roam because C:\Temp doesn't roam either! The C:\Temp on Server1 is not the same directory as the C:\Temp on Server2.

Let's change Step 2 slightly:

  1. Log onto Server1 with a roaming profile.
  2. Open the following folders and in each one, create a file called TEST.
    1. Library\Documents
    2. \\server\share
    3. C:\Temp
  3. Log off from Server1.
  4. Log onto Server2 with the same roaming profile.
  5. Open the same folders and observe:
    1. Library\Documents: TEST is there.
    2. \\server\share: TEST is there.
    3. C:\Temp: TEST is missing.

I think nobody would be surprised at the results of this second experiment. The changes to Library\Documents are there because that folder is part of your roaming profile. The changes to \\server\share are there because it is a global resource. And the changes to C:\Temp are not there because the first one is "C:\Temp on Server1" and the second is "C:\Temp on Server2".

The shell saves icon size customizations in folders differently based on whether it is a global resource (like a network share) or a local resource (available only on the local machine). Settings for local resources do not roam because, well, they're local and have no meaning when roamed to another computer.

The Documents case manages to get the desired effect, but by different means: Settings for libraries are based on how you customized the view via things like the "Arrange by" menu. Those customizations are saved in your roaming profile, and they therefore roam with you.

Comments (15)
  1. alegr1 says:

    Why the H people use C:temp as %TEMP%? Besides from being an eyesore, in a secure enterprise it can be an information disclosure problem.

    Although an award for the worst case of using %TEMP% goes to some first-tier brand Security Manager, which INSTALLS a DLL (some garbage collector) there. If the DLL gets deleted (hehe), it is magically recreated! Luckily, precise application of an ACL can prevent its load.

  2. Dan Bugglin says:

    @alegr1 Raymond probably simplified the path for the purpose of the story.  Unless you think the customer also has a server called "server" with a share called "share"… actually that is a real possibility I suppose.

    Also C:Temp probably isn't %TEMP%, just short for "Temporary folder where I can experiment".

    There's also the case where an arbitrary directory name is not guaranteed to mean the same thing across PCs, so you have a strong case right there to ignore folder customizations in folders Windows doesn't control.  Example: C:Website as the http root of a website on PC1 could be a different website than the same folder on PC2 so different folder view settings may be desired by the user.  Or C:Chips on one PC being designs for microprocessors on one PC, on another its someone's artistic photos of potato chips, and on Chip's PC he uses C:Chips as his personal folder.

  3. Mott555 says:

    For a moment I thought Raymond was talking about my company. We actually have a server called Server1. However we don't have Server2, Server3, or any other Server[0-9]+

  4. jader3rd says:

    I've never seen roaming profiles do anything. I don't know what it's supposed to be syncing, but I have yet to see any setting of mine roam. I do know that it takes a long time to log into computers, because they say they're setting up my profile, and I see a lot of data in the Roaming section of my AppData directory, but nothing ever seems to come of it. I think that by and large, they should be disabled my default on Windows.

  5. Joshua says:

    For a really fun time, %TEMP%=C:WindowsSystem32

  6. 640k says:

    Solution: Arrange icons in \localhostC$Temp

  7. Confused says:

    @mott555: I know a place where they have both Server2 and Server02.

  8. "For a really fun time, %TEMP%=C:WindowsSystem32"

    Ugh… did you actually see that on a system…?

  9. Joshua says:

    @JamesJohnson: Actually it was so old it was C:DOS on a MS-DOS 6.22 system but hey.

  10. Adam Rosenfield says:

    C:Temp isn't nearly as bad as C:Program.exe (thedailywtf.com/…/The-Core-Launcher.aspx).

  11. ChuckOp says:

    @jader3rd: Roaming profiles is usually a Active Directory-domain feature.  It was originally introduced with Active Directory and the concept of "Zero Administration Windows" in the NT5/Windows 2000 days.  If your AD-based user account has a shared profile path, Windows will sync their HKCU registry hive and the contents of %appdata%.  That way, when that account logs onto another machine, the roaming settings are synced to that machine – things like custom spelling dictionaries, colors schemes, etc.  Things that don't make sense to roam – like Temporary Internet Files and temp files – are stored in %localappdata%.

    So, if you are using Windows without roaming profiles enabled, the distinction between what's stored in %appdata% and what's stored in %localappdata% might seem random or arbitrary.  

    Windows 8 does a limited form of user profile roaming when the account is based on the Microsoft Account(the service previously known as Windows Live ID/Passport) system.

  12. Greg W says:

    @ChuckOp:

    NT4 also supported roaming profiles.

  13. cheong00 says:

    @Adam Rosenfield: I actually written a console application that says "An application you're running just try to run external application but neglects to secure the path." and named it Program.exe after reading that article. :P

    The good thing is that I actually didn't seen it running much.

  14. Neil says:

    Still, if you're roaming your profile, you should have your documents redirected to a share anyway.

  15. Where is the fun? says:

    $ %TEMP%=C:WindowsSystem32

    'C:UsersBillyGAppDataLocalTemp' is not recognized as an internal or external command,

    operable program or batch file.

Comments are closed.

Skip to main content