Лучший способ получить путь к каталогу данных приложения?
Существует несколько возможных путей получения пути к каталогу данных приложения:
- с использованием переменной среды
%APPDATA%
- вызов
SHGetFolderPath
с помощью CSIDL_APPDATA
Каков наилучший способ получить путь из программы? Есть ли какие-либо ошибки при использовании переменной окружения?
Какой способ безопасен в XP, Vista и будущих версиях?
Ответы
Ответ 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']