Трудно будет получить 100% безошибочное решение для этого (кроме перехвата исключений при доступе - как предложил другой отвечающий) - но вот мой лучший шанс.
Создайте Dictionary<string, string>
, используя как можно больше общих расположений для этих папок (например, «c: \ users [имя пользователя] \ Мои документы», «d: \ users [имя пользователя] \ Мои документы») вдоль с фактическим местоположением, которое они на самом деле, от Environment
.
Проходя по иерархии каталогов, ищите каталог в этом словаре, чтобы увидеть, есть ли у вас запись (если вы используете словарь - используйте компаратор StringComparer.InvariantCultureIgnoreCase
при построении, чтобы избежать необходимости разбираться со случаем путей).
Я должен сказать, что, возможно, вам придется прибегнуть к перехвату исключения IO в конце; потому что структура папок является полностью личной - если бы у меня была резервная копия моей папки Users \ на диске D: тогда этот подход был бы запутан!