Я получаю исключение FileIOPermssion при попытке создать папку в Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) на некоторых компьютерах. Я установил, что на данном компьютере работает какая-то форма антивируса, но мне не удалось связаться с их ИТ-отделом, чтобы узнать, что конкретно они используют.
Кто-нибудь еще сталкивался с такой проблемой? Некоторое время я пробовал гуглить и ничего не придумал. Есть ли что-то, что мне нужно сделать, чтобы гарантировать разрешение на запись в ApplicationData?





Vista или XP. Или, что более важно, на XP нет проблем, а на Vista? Возможно, вы столкнулись с UAC, который более строг в отношении проверки разрешений безопасности, необходимых для различных действий. У меня возникла аналогичная проблема с программой настройки принтера, которую я написал - отлично работает в XP, но требует строгого именования и некоторых настроек GPO при запуске из общего сетевого ресурса в Vista.
Обновлено: Поскольку это не похоже на проблему, вы можете проверить, включено ли перенаправление папок и, если да, то как оно настроено. Это может быть проблема с записью в общий сетевой ресурс, а не на локальный диск. Или, возможно, есть объект групповой политики, который блокирует доступ для записи в папку ApplicationData или установку программного обеспечения в целом.
Я получил еще один ответ на другом форуме, который может быть ответом, но сначала я должен его проверить. По сути, они предположили, что пользователь мог установить приложение в сетевой папке, а не непосредственно на жестком диске, что означало бы, что приложение не будет работать с полным доверием. Рекомендуемое исправление заключалось в использовании изолированное хранилище вместо ApplicationData, если это имело место.
Я проверю, что это проблема, и обновлю, если использование изолированного хранилища решит ее.
Проблема определенно была вызвана запуском приложения с сетевого диска. Это помещает приложение в режим частичного доверия, что предотвращает запись в каталог ApplicationData. Изолированное хранилище должно было обойти это, но мне тоже не повезло. Это вызывает ту же ошибку, что и при использовании других команд File IO напрямую.
Одна вещь, которая ДЕЙСТВИТЕЛЬНО работает, - это установить платформу .NET 3.5, которая изменяет уровень доверия по умолчанию для приложений, работающих в общих сетевых ресурсах.