Tuesday, November 6, 2007

User Files Folders: What's with all these extra folders?

In a previous article, Introducing the User Files Folders!, I showed you the 11 green folders that comprise the User Files Folder for a nice new profile in Windows Vista. With that article and some of the others in this blog I think I have demonstrated how that folder can fill up rather quickly with quite a few others. As it turns out there are a few more subfolders worth mentioning.

Did you know that without adding anything into your User Files Folder you can end up with something like this?!?!?:

It's time to talk about these folders because some of you are coming across them in the wild and don't realize how they got there. Some of you don't yet realize how you made them appear on your own Vista desktops. Still others think they have duplicate folders or even completely dysfunctional folders on their hands.

If you read my article Introducing the User Files Folders! you will know that the Documents folder (formerly My Documents) is no longer the parent folder but merely a peer. But I never really talked about what the parent folder is. The parent folder is listed as the user’s AD display name (“Martin, Gordon” in this example), but in reality it is the user's actual profile folder (C:\USERS\GMARTIN in this example). In the past with XP, the User Files Folder was the "My Documents" folder and it was a little subfolder within the user's profile waiting to get filled with the user's data. Now under Vista, the User Files Folder is the whole user profile! It's already full of junk - it's just hidden from the user.

I guess you know where the rest of this article is going...

I don't know why, but for some reason Microsoft decided that the User Files Folder should allow a user to see every one of their files - even those that a normal user wouldn't want to see. I guess Microsoft decided that if a user is able to figure out how to see their hidden and system files, that they will want to see all those that pertain to them in this folder. (I guess they forgot about us admins that briefly make a user's hidden files visible for technical support reasons and then forget to make them hidden again.) At any rate, you now know the story so let's wrap up with a few final details and griping...

In Vista, basically all system data that pertains to a specific user is stored in the AppData folder. The AppData folder is really king in these parts. It contains the Local Settings, Cookies, Start Menu and pretty much everything else. This folder is hidden - and therefore invisible to the user - until you choose
Folder Options… | Do not show hidden files and folders from the Microsoft Explorer's Tools menu. (Can't see the Tools menu? Press the ALT key.)

You may be starting to doubt me here because my picture above plainly shows those folders outside the AppData folder. But trust me, Vista's lying to you - not me. See the black shortcut arrow on the folder icon for a bunch of the folders up there? That is your only clue that those folders aren't folders at all, but rather Junctions. Junctions are a new invention for Vista that fools older XP applications into thinking the folders are where they expect them to be. Meanwhile Vista has squirreled these folders off into the AppData folder. This wouldn't be so bad except that Vista is fooling a good many of us admins as well.

Microsoft thought they were being clever by making these folders hidden system folders. But let's face it, what admin hasn't chosen to show hidden files and Unhide protected operating system files? (BTW, that's done the same way as for the unhiding described above.) Of course that is long forgotten by the time you pull into your personal profile looking for your SendTo folder and find it staring you in the face right were you know it should be (because you are an experienced XP admin). You then click on it. It gives you some strange error about not being available but shows you the contents you requested anyway. You have to be ultra aware to notice that it has transported you off to the real location within the AppData folder. If you happen to be just that aware, you probably went back to that first folder to sniff around and try to figure out what just happened. You might even check the properties of the folder. It won't be any help to you. The only way to know what this folder is, is to key into the fact that there is a little black arrow on the folder icon. Actually, the best way to get info on these folders is to open a CMD window, change to your profile directory and execute DIR /A. Give it a try - I'll wait.....

CMD's DIR /A is the only thing that tells you what is going on. It will tell you which folders are junction points and tell you where you will end up if you dare walk through it. Here is the list it will give you:

Application Data [C:\Users\%UserName%\AppData\Roaming]

Cookies [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Cookies]

Local Settings [C:\Users\%UserName%\AppData\Local]

My Documents [C:\Users\%UserName%\Documents]

NetHood [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Network Shortcuts]

PrintHood [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]

Recent [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Recent]

SendTo [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\SendTo]

Start Menu [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Start Menu]

Templates [C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Templates]

Thanks CMD - good info. I wish Vista's GUI could be so forthcoming. Actually, this raises another important point. I have never been driven to CMD so often as I have with Vista. There are a surprising number of things that are best handled through a CMD prompt because there is no alternative in Vista's GUI world. You have just met one example and you will meet more in future articles on this blog.


Scott said...

Nice post. One comment: junctions aren't a "new invention"; they've been around for quite some time (see Sysinternal's/MS' junction tool). E.g., Server 2003's directory %SYSTEMROOT%\SYSVOL\sysvol contains junctions to the Policies and scripts (the NETLOGON share) of the replicated domain(s?). What is new here is the use of junctions to directly "trick" regular applications about their environment.

Gordon Martin said...

Good point Scott. Thanks for the correction. Actually, workstation admins are going to have to become familiar with a lot more server concepts in order to manage Vista well. NTFS permissions now play a much larger role at the workstation level than they did before.

Strike Data said...

Excellent information here! I have been working with a client for almost a week now try to access the AppData folder and had no idea it was hidden. Thanks for helping me resolve an open issue this is truly a helpful post!

Matthew Kennedy said...

Thanks for the informative post. I ran into this "feature" when I was using a backup client to backup the "Documents" folder on a laptop. It was taking forever so I looked and found it was trying to backup ...\user\My Music\... Of course I don't want to back up My Music...I want to back up Documents. I did as you suggested and looked at \user\Documents\> dir /a, and sure enough there is a Junction that points to \user\Music. Not sure how I am going to handle this yet.

Anonymous said...

Typical Microsoft, making easy convenient things difficult. These folders and dysfunctional shortcuts are a nightmare, especially when you're dealing with non-English Windows versions. I am using Vista for years now and I am still spending time to find things I could find in an instant in previous versions.

More typical Microsoft stuff:
- XP search: fast as light. Vista search: nagging and bugging about indexing which takes ages and consumes a lot of resources. The search without indexing is deliberately crippled. It takes 5 or more steps to enter a simple query. It's completely useless with external HD's and network drives. We run a virtual XP for searches since that is the fastest.

- arrow up/parent directory button in explorer: gone. According to MS it's very easy to click on folders in a path (if your window is large enough) and you can use the arrow left button (if you came all the way down from the root). You may also click twice, select the part of the path you want to go up, hit Del, hit Enter.

- RMB on My Computer, Manage? No, not so fast you stupid user. For your convenience we've moved it all. Again. For no reason. But hey, look at the nice little backgrounds you can chose!

Microsoft philosophy: trash workflows.