user852367 user852367 - 1 year ago 63
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 Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download