Каталог данных приложения Windows

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

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

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

(Ответы для Windows XP, Vista и 7 ценились бы, если они не то же),

7
задан mikel 16 September 2012 в 17:05
поделиться

3 ответа

В 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 \ (В XP)

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

3
ответ дан 7 December 2019 в 16:40
поделиться

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

0
ответ дан 7 December 2019 в 16:40
поделиться

Для 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
ответ дан 7 December 2019 в 16:40
поделиться