Ответ 1
Существует несколько специальных папок, которые вы можете использовать в XP/Vista/Windows 7:
- Папка
CSIDL_APPDATA
- та, которую вы, вероятно, будете наиболее заинтересовать. Данные, хранящиеся здесь, доступны для перемещающихся пользователей на любом компьютере, в который они входят. Это лучшее место для хранения простых данных конфигурации. У всех пользователей есть доступ на запись к этой (и последней) папке. Обратите внимание, что ни одна из вышеперечисленных папок для пользовательских данных! Это должно принадлежать иерархии "Мои документы". - РЕДАКТИРОВАТЬ: Как предлагает Коди Грей в комментариях, также рассмотрите
CSIDL_LOCAL_APPDATA
для данных приложения, которые всегда будут локальными для текущего компьютера, но будут отложены для каждого пользователя. Данные в этой папке недоступны на основе роуминга, поэтому должны быть данные, которые пользователь, вероятно, не пропустит, если они войдут на другую машину.
Я бесстыдно скопировал приведенное выше объяснение из хорошей статьи Карла Петерсона, объяснив это для программистов VB6. У Карла также есть готовый к использованию класс, который поможет вам найти каталоги, но IMHO он слишком усложнил ситуацию на этот раз. Боб Римерсма имеет лучший способ в одной строке, используя объект Shell, так как ниже. РЕДАКТИРОВАТЬ. Комментарий Боба объясняет, почему лучше использовать позднюю привязку для этого, а не раннее связывание.
Const ssfCOMMONAPPDATA = &H23
Const ssfLOCALAPPDATA = &H1c
Const ssfAPPDATA = &H1a
Dim strAppData As String
strAppData = _
CreateObject("Shell.Application").NameSpace(ssfAPPDATA).Self.Path
По-моему, это нормально, чтобы продолжать использовать INI файлы в этих каталогах.