Где службы Windows должны записывать данные приложения? - PullRequest
1 голос
/ 28 октября 2010

В состав нашего программного обеспечения входит служба Windows, которая используется для фоновой передачи данных в удаленную базу данных, даже если в систему не вошел пользователь.В настоящее время эти данные кэшируются в каталоге Program Files, и я не думаю, что это хорошая идея, потому что это требует от нас уменьшения разрешений безопасности для наших каталогов в Program Files.Я думаю, что это должно быть кэширование этой папки% LocalAppData%, чтобы нам не приходилось это делать.

Что здесь считается лучшей практикой?

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

Спасибо

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Да, вы должны создавать свои файлы в %LocalAppData% вместо общесистемного расположения. Вы можете передать CSIDL_LOCAL_APPDATA в SHGetFolderPath () , чтобы получить фактическое имя этой папки.

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

0 голосов
/ 28 октября 2010

Я бы сказал, что лучшее место - это папка AppData пользователя для пользователя, от имени которого работает служба.Используете ли вы пользователь локальной службы по умолчанию или пользователь?Я не уверен, к какому каталогу разрешат AppData пользователя локальной службы, но я думаю, что это тот, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...