2016-04-25 3 views
0

Для программы, которую я пишу в vs C# wpf Мне нужно сохранить некоторую информацию, связанную с пользователем, на компьютере пользователя. Насколько я знал, это почти всегда было сделано путем создания папки в C: \ Program Files и добавления любой связанной с программой информации в эту папку в подпапках или что-то еще. После некоторого просмотра я столкнулся с множеством людей, говорящих, что этот метод устарел, потому что иногда доступ может быть запрещен для создания там папки, он работает только для административных учетных записей и т. Д. Один сайт предложил сохранить в c: \ users \ username \ appdata \ roaming или c: \ users \ имя_пользователя \ appdata \ local. Итак, мой вопрос - это лучший и самый современный способ сохранения данных программы на компьютер пользователя?Сохранение папки программы в устаревших файлах программы?

+1

В основном это никогда не было ОК для хранения пользовательских вещи в Program Files, многие программы просто сделали это. У Microsoft есть неплохая документация о том, куда ее поставить. –

+0

Почему бы просто не добавить локальный db к самому приложению? – ChiefTwoPencils

+0

@ChiefTwoPencils и где вы будете хранить БД? Это просто вернется к этому вопросу. – yaakov

ответ

1

Посмотрите на этот майкрософт блоге разработчиков Where Should I Store my Data and Configuration Files if I Target Multiple OS Versions:

Вот пример, где вы можете хранить ваши Local для каждого пользователя файлы конфигурации

файлы данных конфигурации, что использование приложений и является уникальным для каждого пользователя , Он остается локальным для отдельной машины и не синхронизируется через Active Directory.

Example: MyMachineSpecificData.xml 
Windows 7: %USERPROFILE%\AppData\Local\<MyCompany>\<MyApp> 
Vista:  %USERPROFILE%\AppData\Local\<MyCompany>\<MyApp> 
XP:   %USERPROFILE%\Local Settings\Application Data\<MyCompany>\<MyApp> 

Так в основном за файлы конфигурации пользователь должен перейти к:

%USERPROFILE%\AppData\[Roaming,Local] 

Если эти конфиги должны быть доступны для всех пользователей, то:

%SystemDrive%\ProgramData 

Для каждого пользователя данных, которые можно использовать Libraries , Для пользовательского доступа C:\Users\Public.

Кроме того, вы также можете использовать реестр Windows для хранения ваших конфигураций.

+1

'% USERPROFILE% \ AppData \ [Роуминг, Локальный]' переводится в '% APPDATA%' и '% LOCALAPPDATA%', поэтому вам не нужно вычислять его самостоятельно для каждой ОС. – yaakov

+0

@codran хорошо знать. Я предполагаю, что запуск 'set' в cmd приведет к правильной печати всех переменных окружения? К сожалению, я не использую окна для проверки этого. Но кажется, что ты прав. – incBrain

1

Также взгляните на это MSDN article.

Это в основном для приложений UWP, но у вас будет общее представление о том, что добавить туда, даже если вы разрабатываете приложение WPF.

Вам может понадобиться эти папки:

  • Environment.SpecialFolder.ApplicationData
  • Environment.SpecialFolder.LocalApplicationData
  • Environment.SpecialFolder.CommonApplicationData
Смежные вопросы