Используйте Environment.GetFolderPath
, чтобы получить наиболее подходящую папку независимо от ОС.
В частности, вам необходимо одно из следующих значений SpecialFolder:
ApplicationData
- если файлы находятся в роуминге, для каждого пользователя и предназначены только для приложения и не представляют документы, которые могут беспокоить пользователя.
LocalApplicationData
- если файлы не в роуминге, для каждого пользователя и предназначены только для использования в приложении и не представляют документы, которые могут беспокоить пользователя.
CommonApplicationData
- если файлы находятся в роуминге, являются общими для всех пользователей и предназначены только для использования в приложении и не представляют документы, которые могут интересовать пользователя. ПРИМЕЧАНИЕ: В Vista это соответствует C:\ProgramData
, который по умолчанию доступен только для чтения для обычных пользователей (из-за того, что изменение файлов там может повлиять на поведение программ, используемых админы). Вы можете явно изменить разрешения в подпапке приложения или выбрать один из других вариантов.
MyDocuments
- если файлы для каждого пользователя и представляют документы.
Обратите внимание, что нет никакого перечисляемого значения SpecialFolder
, например CommonDocuments
, которое представляло бы хранилище документов на уровне компьютера, даже если есть папка, предназначенная для обслуживания этого типа (C:\Documents and Settings\All Users\Documents
на XP и C:\Users\Public\Documents
на Vista). Вам нужно будет найти версию ОС и выбрать соответствующую папку, если вы хотите записать в эти места.
Внутренне Environment.GetFolderPath
использует Win32 API SHGetFolderPath
. Перечисление, используемое SHGetFolderPath
, дает вам известные местоположения для нескольких других специальных папок (включая Общие документы). Вы можете использовать напрямую SHGetFolderPath
; вы можете найти его p / invoke Определение и соответствующее CSIDL определение перечисления на PInvoke.net.
Вы также можете использовать IsolatedStorage
. Тем не менее, он не для роуминга, для каждого пользователя, с ограниченной квотой и не легко доступен для пользователя из проводника Windows. Таким образом, это действительно средний / низкий уровень доверия, эквивалентный SpecialFolder.ApplicationData
.