Я разработал службу Windows на основе .NET, которая использует управляемый компонентом (C #) и неуправляемый код (библиотеки C / C ++).
В некоторых доменных средах (например, Win 2k3 32-битный сервер в домене abc.com) иногда запуск службы занимает более 30 секунд (особенно при перезапуске ОС), поэтому не удается запустить службу. Я подозреваю, что это как-то связано с безопасностью на уровне предприятия, но я точно не знаю.
http://msdn.microsoft.com/en-us/library/aa720255%28VS.71%29.aspx
Я попробовал следующее безуспешно:
- откладывать загрузку ссылок, перемещая директивы using как можно дальше от реализации сервисной базы (особенно пространства имен xml - известно, что это вызывает задержки при загрузке)
- задержать загрузку и настройку log4net
- предварительная компиляция кода с использованием ngen
- задержка запуска рабочего потока
- добавить / удалить манифест + порядки, установленные внутри
- подписать / подписать двоичные файлы
- используйте настройки конфигурации (там много настроек и уровень охвата для всех установлен на приложение) как можно позже
- добавить все зависимости в GAC
Я еще не пытался добавить требования безопасности для класса, в котором реализован метод Main.
Я не пытался реализовать свой собственный загрузчик конфигурации, потому что после проверки автоматически сгенерированного кода я заметил, что класс настройки является одиночным и он получает свой экземпляр по вызову.
Полностью удалив зависимость log4net, это сработало, но это не вариант.
Когда сетевая карта отключена, услуга запускается немедленно.