Разрешение «Environment.SpecialFolder.Personal», когда перенаправление папок активно - PullRequest
4 голосов
/ 13 ноября 2008

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

Environment.GetFolderPath( Environment.SpecialFolder.Personal )

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

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

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

Ответы [ 3 ]

2 голосов
/ 13 ноября 2008

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

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

1 голос
/ 19 июля 2012

Я знаю, что это было давно, но я хотел бы сообщить здесь, что у меня есть пользователь, сообщающий о следующей ошибке при вызове 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: \).

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

1 голос
/ 13 ноября 2008

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

...