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?
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.