If anyone has any kind of issue like this, I've managed to find an solution that fixes my problem. An extra function needs to be added, that controls how the program will interact with elements (directories) that it can. This program uses the same source, to skip directories inaccessible to the solution (try catch), but using System.Security.AccessControl allows it to continue and find the directories that can be accessed. The function is as follows:
using System.Security.AccessControl;
public static void SetAccessRule(string directory)
{
System.Security.AccessControl.DirectorySecurity Security = System.IO.Directory.GetAccessControl(directory);
FileSystemAccessRule accountAllow = new FileSystemAccessRule(Environment.UserDomainName + "\\" + Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow);
Security.AddAccessRule(accountAllow);
}
Further information on this solution, and how I came by it, can be found at: