Я написал программное обеспечение в виде консольного приложения для Windows; есть файл конфигурации, в котором указано, как войти в раздел.

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

1) Логирование больше не происходит; файл конфигурации больше не читается, или регистрация не может происходить по какой-либо другой причине (разрешения?). Во всяком случае, я подумал, как лучше всего войти в систему службы Windows, может быть, через регистрацию событий Windows? И как? Или лучше заставить работать мой файл конфигурации, чтобы я мог отключить ведение журнала без перекомпиляции?

2) В службе я использую набор объектов FileSystemWatcher для мониторинга каталогов. Похоже, в сервисе я больше не получаю события мониторинга. Любые подсказки?

Благодарность

изменить: Шаг вперед для пункта 2) - после отладки я обнаружил, что получаю события, проблема в том, что в случае, если я пытаюсь переместить файл с File.Move, и это не удается.

изменить2: Еще один небольшой шаг вперед по пункту 2) - мне пришлось установить службу с правами пользователя, иначе она не позволяет мне перемещать файл. Это решено.

0
vulkanino 8 Апр 2011 в 18:35
Где хранится ваш лог-файл? Да, службы Windows работают с другой моделью разрешений. Это трудно диагностировать без конкретной информации о вашей конфигурации.
 – 
Cody Gray
8 Апр 2011 в 18:46
Выходной файл вы имеете в виду? он должен находиться в том же каталоге, где находится исполняемый файл службы (после компиляции, но, возможно, во время установки службы он перемещается куда-то еще).
 – 
vulkanino
8 Апр 2011 в 19:06

1 ответ

В вашем посте больше одного вопроса.

Одна из возможных причин, по которой вы не видите журналы, может заключаться в том, что вы смотрите не в то место. Службы запускаются с текущим рабочим каталогом как %systemroot%\system32, поэтому он попытается создать журналы там.

1
seva titov 8 Апр 2011 в 19:22
Да, но журнала нет. Я подозреваю, что он даже не читает файл конфигурации.
 – 
vulkanino
8 Апр 2011 в 19:47
1
Один из быстрых способов узнать, пытается ли он вести журнал, — запустить Process Monitor (technet.microsoft.com/en-us/sysinternals/bb896645) и просмотр операций файловой системы. Если служба работает как сетевая служба или использует учетную запись пользователя без прав администратора, она не сможет создать файл в каталоге system32.
 – 
seva titov
9 Апр 2011 в 03:32
1
В дополнение к этому, если ваш сервисный процесс 32-битный, а ОС 64-битная, вы также можете проверить %systemroot%\Syswow64.
 – 
seva titov
9 Апр 2011 в 03:33