user852367 user852367 - 1 month ago 11
C# Question

Why am I getting an access denied error for the Documents and Settings folder?

I'm writing a program that gets all directories and sub-directories. I'm using the following code:

DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
string[] directories = Directory.GetDirectories(drive.Name, "*", SearchOption.AllDirectories);
}


But I'm getting an exception stating "Access to the path 'C:\Documents and Settings\' is denied."

I'm using Windows 7 and I don't see a C:\Documents and Settings\ folder in Explorer. I enabled "Show hidden files and folders" and even try to type in the path directly but it gives the following error: "C:\Documents and Settings is not accessible. Access denied."

Why is
Directory.GetDirectories()
pulling a directory that doesn't seem to exist?

Answer

This directory is what is known as a junction point, which should be pointing to c:\users.

From the MSDN documentation:

These junction points can be identified as follows:

They have the FILE_ATTRIBUTE_REPARSE_POINT, FILE_ATTRIBUTE_HIDDEN, and FILE_ATTRIBUTE_SYSTEM file attributes set.

They also have their access control lists (ACLs) set to deny read access to everyone.

Applications that call out a specific path can traverse these junction points if they have the required permissions. However, attempts to enumerate the contents of the junction points will result in failures.