2008-09-29 3 views
3

Мне нужно сохранить данные для входа пользователя в зашифрованном виде для этого приложения, которое я создаю, но я не уверен в наилучшем месте для сохранения файла. Я не хочу сохранять его в папку приложения программы, как я хочу этого на каждого пользователя.Лучшее место для сохранения информации о пользователях для приложений Windows XP и Vista

Итак, какова лучшая папка (или способ) для ее сохранения?

Редактировать: Использование C++.

ответ

3

Похоже, что C: \ Documents and Settings \ Имя пользователя% \ Local Settings \ Application Data может быть подходящим местом в соответствии с Wikipedia. В статье говорится, что это место используется для «пользовательских и специфических для компьютера параметров приложения».

Редактировать: Cruizer указал в комментариях (я бы ответил там, но я еще не могу прокомментировать), что в Vista это C: \ Users \% username% и что он не должен быть жестко закодирован. Благодарю.

+1

Vista не имеет C: \ Documents and Settings \ <Имя_пользователя%>> по умолчанию: C: \ Users \% username%, и его можно изменить, чтобы путь не был жестко закодирован – cruizer 2008-09-29 05:27:30

+3

способ получить эту папку - по телефону: SHGetSpecialFolderPath (NULL, szPath, CSIDL_PERSONAL, false) – Bill 2008-10-21 15:28:40

0

Вы используете .NET? как насчет IsolatedStorage? Таким образом, вам не придется беспокоиться о расположении каталога, это будет просто ...

+0

Возможно, вам придется позаботиться о том, чтобы новые версии/установки приложения все еще могли видеть ваш оригинальный изолированный файл хранилища. – FryHard 2008-09-29 04:55:55

0

Информация о пользователе всегда должна находиться в какой-либо подкаталоге в% HOMEDRIVE %% HOMEPATH% (которая отображается в домашнем каталоге пользователей). Без исключений. Хорошим местом для конкретных приложений для пользователя является подкаталог внутри% APPDATA%. Это отображает: «% HOMEDRIVE %% HOMEPATH% \ Application Data» на XP и: «% HOMEDRIVE %% HOMEPATH% \ AppData \ Roaming» в Vista.

1

Да, локальный путь приложения выглядит как победитель.

Я нашел эту статью в MSDN, чтобы получить его в C++: http://msdn.microsoft.com/en-us/library/bb762494.aspx

Пример:

char localAppPath[MAX_PATH]; 
SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, localAppPath); 
0

Если вы используете .NET, чтобы получить специальные папки, которые вы можете использовать

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

или

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

для версии без роуминга.

Смежные вопросы