Судя по вашему описанию, существует каталог, к которому у вашего пользователя нет доступа при работе с включенным контролем учетных записей. В вашем коде нет ничего плохого по своей сути, и поведение в этой ситуации задуманно. Вы ничего не можете сделать в своем коде, чтобы обойти тот факт, что ваша учетная запись не имеет доступа к этим каталогам в контексте, в котором она в данный момент работает.
Что вам нужно сделать, так это создать учетную запись для каталога, к которому у вас нет доступа. Наилучшим способом, вероятно, является добавление нескольких методов расширения. Например
public static FileInfo[] GetFilesSafe(this DirectoryRoot root, string path) {
try {
return root.GetFiles(path);
} catch ( UnauthorizedAccessException ) {
return new FileInfo[0];
}
}