Разрешение "Environment.SpecialFolder.Personal", когда перенаправление папок активно

Наше приложение Windows Forms по умолчанию сохраняет файлы данных в пользовательской папке "Мои документы" (в XP) или в папке "Документы" (в Vista). Мы ищем это место по телефону:

Environment.GetFolderPath( Environment.SpecialFolder.Personal )

Мы точно знаем, что это прекрасно работает для пользователей, чья личная папка находится на локальном диске. В чем мы не уверены, так это в пользователях домена, у которых действует перенаправление папок для их профилей / папок личных данных.

Мой вопрос: правильно ли разрешается вышеуказанный вызов независимо от того, активно ли перенаправление папок?

У меня нет среды, чтобы проверить это, и я не смог найти какое-либо определенное подтверждение, так или иначе.

3 ответа

Решение

Да, это так. Вы можете проверить это самостоятельно, обновив соответствующую запись реестра для папки. Смотреть под...

HKEY_CURRENT_USER \ Программное обеспечение \Microsoft\Windows\CurrentVersion\Explorer\ Папки оболочки

Я знаю, что это было давно, но я хотел бы сообщить здесь, что у меня есть пользователь, сообщающий о следующей ошибке при вызове Environment.GetFolderPath(Environment.SpecialFolder.Personal) на компьютере с XP, чьи Мои документы перенаправляются на сеть (идет на диск O):

System.ArgumentException: Absolute path information is required.
   at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
   at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
   at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path)
   at System.Environment.GetFolderPath(SpecialFolder folder, SpecialFolderOption option)
   at System.Environment.GetFolderPath(SpecialFolder folder)

У меня еще не было прямого доступа к этой конфигурации машины, но из поисков Google и справки пользователя я считаю, что в перенаправлении отсутствует завершающий символ \ (например, O: вместо O:\).

Поэтому я верю, что ответ будет " нет", он не всегда правильно решается.

Я ожидаю, что это так. Документация для обоих Environment.GetFolderPath и основной SHGetSpecialFolderPath не давайте никаких указаний на то, что это не решит правильно, и я не могу найти ничего, что вы бы использовали его место.

Другие вопросы по тегам