Функция Win32 для получения пути к C:\ProgramData

Моему приложению необходимо установить некоторые файлы, которые можно редактировать приложением во время выполнения. Экран установки обеспечивает псевдоним [CommonAppDataFolder], который разрешит c:\programData в Vista и Windows 7, а также будет работать в Windows XP. Есть ли функция win32, которая вернет аналогичный путь?

Возможно, мне нужно вызвать разные функции в зависимости от операционной системы?

Ответ 1

SHGetFolderPath/SHGetSpecialFolderPath получите это, с аргументом CSIDL_COMMON_APPDATA.

См. фрагмент кода здесь (внизу): Как написать приложение Windows XP, которое хранит данные пользователя и приложения в правильном месте с помощью Visual С++.

  • Windows XP: C:\Documents and Settings\All Users\Application Data​​li >
  • Windows Vista: C:\ProgramData​​li >
  • Windows 7: C:\ProgramData​​li >

Смотрите также: CSIDL.

Ответ 2

Начиная с Delphi XE5, эта функциональность является частью инфраструктуры.

  • Модуль: System.IOUtils
  • Класс: TPath
  • Функция: GetPublicPath

См. Embarcadero docwiki для получения дополнительной информации.