Каталог данных приложений Windows - PullRequest
7 голосов
/ 07 апреля 2010

Не совсем вопрос программирования, но он достаточно близок, поэтому здесь идет речь:

В Mac OS я помещу пользовательские файлы для моего приложения в ~/Library/Application Data/{MyApp}/, а в * nix - ихв ~/.{MyApp}/ - где мне их разместить для Windows?

Я буду использовать Ruby's File.expand_path, чтобы добраться до этого каталога, поэтому, если есть эквивалент Windows ~, тогда все в порядке.

(Ответы для Windows XP, Vista и 7 приветствуются, если они не совпадают)

Ответы [ 3 ]

3 голосов
/ 07 апреля 2010

Способ сделать это в Windows - использовать переменную окружения ApplicationData. Если вы использовали C #, вы можете получить папку, в которую он отображается, используя System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), поиск в Google для эквивалента Ruby это ENV['APPDATA']. В англоязычных Windows это отображается на:

C:\Users\%username%\AppData\Roaming\ (в Vista и Windows 7)

C:\Documents and Settings\%username%\Application Data\ (On XP)

Он может отображаться в другую папку на других языках, но пока вы получаете каталог из переменной окружения, а не жестко его кодируете, это на самом деле не имеет значения. Если вы создадите там папку для своего приложения и сохраните там данные, Vista и 7 предоставят доступ для чтения и записи к ней без запросов UAC.

0 голосов
/ 18 июля 2010

Для Vista и Windows 7 и Windows XP,

    char appdir[MAX_PATH];      
    size_t requiredSize;
    errno_t err= getenv_s( &requiredSize, appdir, MAX_PATH, "appdata" );

кажется проще, чем использование устаревших API или тех, которые не работают в Windows XP.

0 голосов
/ 07 апреля 2010

Необязательно, я не уверен, как Ruby обрабатывает файл expand_path в ~ для Windows. В Windows есть такие функции, как SHGetSpecialFolderPath и SHGetSpecialFolderLocation для такого рода вещей. Кажется очевидным, что для expand_path можно использовать один из них, но я не знаю точно ли это.

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