Служба Windows user.config, потерянная обновлением Win10
У меня есть служба Windows.net, которая использует настройки области пользователя. Так как служба Windows работает под системной учетной записью, соответствующая user.config
файл не хранится как обычно в:
C:\Users\{User Name}\AppData\Roaming\{Company Name}\{Assembly Name}_Url_{Hash}\{Assembly Version}
Но вместо этого на:
C:\Windows\SysWOW64\config\systemprofile\AppData\Local\{Company Name}\{Assembly Name}_Url_{Hash}\{Assembly Version}
Как выясняется, при любом обновлении Windows 10 (в моем случае 1703 Creators Update) вся папка C:\Windows\
копируется / перемещается в C:\Windows.old\
,
Со мной user.config
файл перемещается (не копируется) в C:\Windows.old
и, следовательно, больше не обнаруживается моей службой. В результате мой сервис автоматически вернется к настройкам по умолчанию, что вызовет проблемы у моих клиентов.
Я сознательно выбрал настройки пользовательской области назад, когда впервые разрабатывал свой сервис, потому что я на самом деле меняю настройки во время выполнения (через приложение в системном трее, связывающееся через межпроцессное взаимодействие со службой). Это работало хорошо в течение нескольких лет. Но сейчас под windows 10 возникают проблемы.
Итак, мои вопросы:
- Есть ли практическое решение этой проблемы? Может быть, способ сказать Windows, чтобы убедиться,
user.config
файл остается на прежнем месте? - Или есть лучшая стратегия для хранения редактируемых настроек для службы Windows?
Пожалуйста, обратите внимание, что в моем случае услуга уже используется, и я хотел бы придерживаться хорошего и удобного ConfigurationManager
настройки с его интеграцией VS. Любой другой подход, такой как простой сериализуемый класс настроек, потребовал бы некоторого механизма перехода для поддержания текущих настроек моих клиентов живыми. И я знаю, кодирование обычай SettingsProvider
это сложная задача.