Как передать аргументы в службу Windows - PullRequest
1 голос
/ 25 ноября 2010

Я пытаюсь передать параметры своей службе Windows, но аргументы в методе OnStart всегда пусты.

protected override void OnStart(string[] args)
        {
            System.Diagnostics.Debugger.Launch();
        }

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

Ответы [ 3 ]

1 голос
/ 25 ноября 2010

Передаете ли вы параметры через сервисный апплет? Службы не могут принимать аргументы командной строки и должны передаваться через апплет служб в окне «Управление компьютером».

0 голосов
/ 25 ноября 2010

Используйте файл настроек (Правый клик, Добавить элемент, Настройки), который автоматически сгенерирует файл конфигурации приложения. Затем в корзине для каждого экземпляра вы можете установить значения в конфигурации - если вы запускаете их из разных мест.

Если несколько экземпляров службы работают в одном месте, подход с использованием файла конфигурации не будет работать. В этом случае я бы порекомендовал обычный exe-файл с методом void main(string[] args), а затем вы можете использовать планировщик задач в окнах для определения аргументов и планирования.

0 голосов
/ 25 ноября 2010

Если вам нужно название службы, почему бы просто не посмотреть на ServiceBase.ServiceName?

protected override void OnStart(string[] args)
{
    switch (this.ServiceName)
    {
        // ....
    }
}

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

...