Подтвердить что ты не робот

Лучший способ получить путь к каталогу данных приложения?

Существует несколько возможных путей получения пути к каталогу данных приложения:

  • с использованием переменной среды %APPDATA%
  • вызов SHGetFolderPath с помощью CSIDL_APPDATA

Каков наилучший способ получить путь из программы? Есть ли какие-либо ошибки при использовании переменной окружения?

Какой способ безопасен в XP, Vista и будущих версиях?

4b9b3361

Ответ 1

Я бы предположил, что вызов SHGetFolderPath() является наиболее подходящим и переносимым методом; альтернативы, такие как чтение переменной окружения или (что еще хуже), пытающиеся извлечь ее из реестра, скорее всего, помогут вам в будущем.

В Raymond Chen есть статья, объясняющая, почему вытащить такие пути из реестра - плохая идея.

Ответ 2

    string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Вам нужно будет использовать метод GetFolderPath, чтобы получить фактический путь как Environment.SpecialFolder.ApplicationData - это просто перечисление.

Ответ 3

Если вы программируете в .NET, вы можете использовать это:

string appDataPath = Environment.SpecialFolder.ApplicationData;

Ответ 4

Одно важное отличие в Python: в случае путей файла unicode ctypes.windll.shell32.SHGetFolderPathW возвращает строку юникода, тогда как os.environ['APPDATA'] возвращает строку байта.

Ответ 5

В случае, если кому-то интересно, в Ruby команда будет выглядеть следующим образом:

appDataPath = ENV['APPDATA']