Где я должен хранить настройки приложения на всей машине для не роуминговых пользователей?

У меня есть приложение WPF, которое должно работать для всех пользователей компьютера с одинаковыми настройками. Настройки должны быть для чтения / записи. Ранее я хранил настройки конфигурации пользователя в CommonApplicationData, например

var settingsFile = Path.Combine(Environment.GetFolderPath(
  Environment.SpecialFolder.CommonApplicationData),
    "[company]", "[product]", "settings.xml");

Однако я прочитал этим утром, что CommonApplicationData используется для перемещаемых профилей, что означает, что они не зависят от конкретной машины. Из того, что я могу найти, у нас есть следующие опции для данных приложения ( источник):

// Store application-specific data for the current roaming user.
// A roaming user works on more than one computer on a network.
// A roaming user's profile is kept on a server on the network and is loaded onto a system ' when the user logs on.
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


// Store in-common application-specific data that is used by all users.
System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);


// Store application-specific data that is used by the current, non-roaming user.
System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

Подводя итог, варианты

  • Один пользователь, роуминг
  • Все пользователи, роуминг
  • Один пользователь, без роуминга

Что мне нужно, так это все пользователи, не находящиеся в роуминге. Моя первоначальная мысль - забросить все это в папку установки, но это кажется немного старой школой?

Мысли?

2 ответа

Решение

Вот хорошее объяснение папки appdata и других элементов, связанных с роумингом пользователя.

Согласно документации MSDN:

CommonApplicationData "каталог, который служит общим хранилищем для данных конкретного приложения, которые используются всеми пользователями"

в то время как

LocalApplicationData является "каталогом, который служит общим хранилищем для данных конкретного приложения, которые используются текущим пользователем без роуминга".

Я предпочитаю это " Настройки приложения", которые могут быть как для всего приложения, так и для пользователя, как вы хотите для каждого параметра.

Другие вопросы по тегам