Доступ к параметрам службы Windows в реестре из C #

2

Службы Windows могут иметь параметры в реестре, например, в

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS\Parameters

Я хочу получить доступ к параметрам моей собственной службы, написанной на С#. Есть ли официальный способ (например, через класс ServiceBase), чтобы сделать это, или мне нужно жестко закодировать путь к реестру, чего я хочу избежать?

Теги:
windows-services

1 ответ

1

Вы ищете паразиты, с которых начался сервер, или что реестр говорит, что он должен быть запущен?

Если вы ищете параметры, которые были использованы для запуска вашего приложения, вы можете использовать Environment.CommandLine или сделать всплеск, на котором будет объявлена ​​основная функция как

[STAThread]
        static void Main(string[] args)
        {
            // Do something with args array, but il make sure its not null first.
        }

Если вы ищете, какие аргументы должны запускаться, я не вижу проблем с чтением этого параметра реестра.

  • 0
    Привет, спасибо за ответ. Однако я не думаю, что параметры (командной строки), передаваемые в качестве аргументов, эквивалентны параметрам, хранящимся в разделе реестра Parameters. По крайней мере, в моем тесте это оказалось не так.
  • 1
    Нет, они не эквивалентны. Единственный раз, когда служба запускается с фактическими параметрами, передаваемыми в ее обработчик ServiceMain (), это когда пользователь вводит параметры запуска в пользовательском интерфейсе SCM и затем нажимает кнопку «Пуск», или когда другое приложение вызывает функцию Win32 API StartService () со своим Заполнен параметр lpServiceArgVectors. Что касается передачи параметров командной строки (которые отличаются от параметров запуска службы), они должны быть указаны в значении «ImagePath» основного ключа реестра службы и, таким образом, передаются при запуске SCM. новый процесс обслуживания.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню