Может ли служба Windows (возможно, скопированная в несколько местоположений) запускаться несколько раз с использованием разных конфигураций (например, если служба поддерживает аргументы командной строки)?
Кажется, что служба устанавливается только один раз, так как имя должно быть уникальным.
Возможен ли такой сценарий и как лучше всего это сделать?
Это основа для "svchost.exe", ему просто присваиваются разные имена и параметры служб.
Это поможет: http://support.microsoft.com/kb/137890
Если под несколькими экземплярами одной и той же службы вы имеете в виду разные экземпляры одного и того же исполняемого файла, тогда обязательно. Вам просто нужно создать для него несколько "служебных" записей в таблице служб с разными именами и разными параметрами командной строки.
Гризли, похоже, говорит о другом, когда несколько служб работают внутри тем же процесс, как правило, экземпляр svchost.exe
. Это требует, чтобы они использовали один и тот же исполняемый файл, хотя каждая служба размещена на svchost
для указания библиотеки DLL и (необязательно) точки входа ServiceMain в Parameters
подраздел служебного ключа. (Конечно, подробности svchost.exe
использование не задокументировано - вероятно, чтобы люди не пытались делать сумасшедшие вещи, такие как загрузка некоторой версии .NET framework в один из критически важных для системы экземпляров, что в конечном итоге привело бы к тому, что какая-то другая служба попыталась бы загрузить разные версию фреймворка в ту же самую, и это было бы полным беспорядком ...)