Где я должен хранить общие ресурсы между LocalSystem и обычным пользователем с UAC? - PullRequest
0 голосов
/ 01 апреля 2010

Мое приложение состоит из двух частей: служба 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.

1 Ответ

0 голосов
/ 01 апреля 2010

Однако в Chrome нет служб, работающих под учетной записью LocalSystem.

Если вы хотите, чтобы файлы, которые могут совместно использоваться учетными записями в одной системе, сохраните их в папке% ALLUSERSPROFILE%.

Если вы просто хотите иметь возможность автоматического обновления программ, то делать то, что делает Chrome, вполне нормально: просто убедитесь, что вы запускаете обновленную версию с повышенными правами при включенном UAC.

...