Мое приложение состоит из двух частей: служба Windows, работающая под учетной записью LocalSystem, и клиентский процесс, работающий под текущим вошедшим в систему обычным пользователем.
Мне нужно развернуть приложение в версиях Windows от XP до Win7.
Клиент будет извлекать файлы из Интернета и собирать пользовательские данные от пользователя.
Служба создаст собственные файлы и данные, которые клиент должен прочитать.
Я пытаюсь найти лучшее место (реестр или файловая система, или микс) для хранения всего этого. Одним файлом, который клиент или служба должны иметь возможность извлекать из сети, является исполняемый файл update_patch, который должен запускаться всякий раз, когда доступно обновление.
Мне нужно быть уверенным, что первоначальный установщик SETUP.EXE, а также update_patch могут выяснить это идеальное расположение и установить RegKey для последующего чтения как клиентом, так и сервером, сообщая им магическое местоположение (SETUP.EXE будет запущен с повышенными привилегиями, так как для этого нужно установить службу)
В моей тестовой системе Win7 сервис % APPDATA% указывает на:
C:\Windows\system32\config\systemprofile\AppData\Roaming
и% APPDATA% клиента указывают на:
C:\Users\(username)\AppData\Roaming
Интересно, что Google Chrome хранит все (приложение и данные) в
C:\Users\(username)\AppData\Local\Google\Chrome
Chrome работает почти так же, как я хочу, чтобы мой пакет работал (возможность автоматически обновляться в фоновом режиме)
Чего я пытаюсь избежать, так это неприятных всплывающих окон, предупреждающих пользователя о том, что приложение хочет изменить систему, и я хочу избежать проблем, когда VirtualStore не существует, поскольку пользователь работает под управлением XP / 2000/2003 или имеет UAC выключен.
Моя целевая аудитория - неопытные пользователи Windows.