2011-12-31 3 views
4

Мне нужно временно хранить некоторые временные файлы из моей программы, в настоящее время я использую путь AppData, который работает. Тем не менее, я только что пытался использовать свою программу в учетной записи non Admin (guest) в Windows. Это приводит к ошибкам, поскольку Windows отказывается от доступа к папке AppData.Как хранить временные файлы для каждого пользователя?

Каким будет идеальный путь для использования вместо AppData, который может использовать даже пользователь с наименьшими разрешениями?

Я пробовал Google, потому что я уверен, что видел статью на веб-сайте Microsoft, в которой перечислены разные пути и требования, но я не могу их найти.

Благодаря

+1

Является ли '% TEMP%' не подходящим? –

+0

'AppData' - AFAIk разрешено для текущего (не-админы тоже!) ... какие ошибки вы получаете точно? – Yahia

+0

Ошибка из-за исключения, которое у меня есть в моем коде, когда я пытаюсь сохранить файлы на пути AppData. Все работает отлично на учетной записи администратора, а не на гостях. –

ответ

11

Если вы хотите сохранить временные файлы затем использовать вложенную папку во временном каталоге. Используйте GetTempPath, чтобы узнать, где это.

Обратите внимание, что во всех современных версиях Windows эта папка является папкой для каждого пользователя и не используется между разными пользователями. Если вы хотите, чтобы местоположение было общим для всех пользователей, вам нужна папка CSIDL_COMMON_APPDATA. Однако, как вы обнаружили, стандартные пользователи не имеют прав на запись в папку. Стандартный подход заключается в том, чтобы программа установки создала подпапку с разрешающим списком ACL, которая обеспечивает достаточный доступ для записи для стандартных пользователей.

+0

Я посмотрю, смогу ли я настроить Inno Setup для создания этого каталога для меня, и пусть моя программа сделает все возможное. Благодарю. –

+0

Ну, вы сказали временные файлы в Q. Вы действительно это имели в виду? Если это так, используйте 'GetTempPath'. Они предназначены для каждого пользователя или для каждой машины? Я до сих пор немного не уверен, что вы действительно хотите сделать, поэтому я хеджирую свои ставки в ответе. –

+0

Я думал, что AppData - это временная папка, приносящая извинения за путаницу. Для пользователя, я думаю, это то, что мне нужно. –