Лучший способ получить путь к каталогу «Данные приложения»? - PullRequest
12 голосов
/ 31 января 2009

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

  • с использованием переменной окружения %APPDATA%
  • звонит SHGetFolderPath с CSIDL_APPDATA

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

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

Ответы [ 5 ]

12 голосов
/ 04 февраля 2010
    string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

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

12 голосов
/ 31 января 2009

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

У Раймонда Чена есть статья , объясняющая, почему извлечение таких путей из реестра - плохая идея.

0 голосов
/ 27 февраля 2012

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

appDataPath = ENV['APPDATA'] 
0 голосов
/ 02 октября 2009

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

0 голосов
/ 10 февраля 2009

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

string appDataPath = Environment.SpecialFolder.ApplicationData;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...