Какой самый чистый и надежный способ запустить приложение Windows как службу, не затрагивая ее код?
Вариант использования: 64-битная версия NorthScale для Windows memcached работает как универсальное приложение. Я хотел бы вставить его в Windows 2003 или 2008 Service, чтобы я мог запустить / остановить / перезапустить / и т.д. через стандартный интерфейс.
Windows Resource Kit имеет любой исполняемый файл, srvany.exe, который можно использовать, как описано здесь , для запуска практически любого exe-файла в качестве службы. Настройка немного запутанная (требуется редактирование реестра), но она должна работать для большинства вещей, которые можно запускать как пользовательское приложение.
srvany.exe
Если вы не можете изменить приложение, существует множество обёрток «Запуск от имени службы». Я использовал cygrunsrv.exe, думаю, он работает с исполняемыми файлами не-cygwin.
Если вы не можете изменить код, то вы не можете напрямую запустить приложение как сервис. Однако сделать услугу Win32 не должно быть трудным - все вращается вокруг вызова одного API: StartServiceCtrlDispatcher . В ответ на команды от диспетчера управления службами ваш сервис-обертка будет создавать CreateProcess и т. Д. В приложении memcached.