If you’ve configured Windows Explorer to display hidden and system folders then you’ve probably noticed various drive-related oddities scattered around your PC.
Like the mysterious C:\ProgramData folder, for instance. It’s packed with vital files and folders for most of your installed programs, yet is also hidden, and most people never notice its existence. What’s going on?
The C:\ProgramData folder is actually the target of a symbolic link, an NTFS file system object which points at another object; in this case, the C:\Users\All Users folder. It’s a little like a shortcut, only it works at the file system level so an application doesn’t have to interpret it: just open \Users\All Users in any program and you’ll be viewing the contents of the \ProgramData folder.
Symbolic links (and the similar junction points) are supposed to be transparent to users, and most people will never care in the slightest what they’re actually doing. But if you’re trying to diagnose some odd file system issue, or would just like to better understand which system folders point where, then NirSoft’s NTFSLinksView will tell you more.
As usual with NirSoft tools, NTFSLinks is portable and ridiculously small (a sub-44KB download).
It’s straightforward to use, as well. Launch the program, enter your system root folder in the search path (C:\), select a "Subfolders depth" of "Infinite" and click "Go". In just a few seconds we had a list of junction points and symbolic links, along with their targets.
As expected, our \Users\All Users folder was a symbolic link with a target of C:\ProgramData.
We could also see that \Documents and Settings was a junction point with a target of C:\Users.
And some user accounts had \Temporary Internet Files folders which pointed to the INetCache equivalent (the old and new locations for Internet Explorer’s cache). This means that even if an application is hard-coded to look for the Temporary Internet Files folder name, and it no longer exists, it won’t matter: the file system just redirects it to the right place.
NTFSLinksView is solely a reporting tool, and can’t create or manage links and junction points. For that you’ll need something like Link Shell Extension, or the Windows command line tool fsutil.
Still, if you’d like to understand how your system folders are really laid out -- or you’re just trying to figure out how this kind of NTFS technology works -- then NTFSLinksView should point you in the right direction.