Вопрос

Я пытаюсь зарегистрировать atl-сервис, используя

ExeName.exe /сервис

как описано здесь: http://msdn.microsoft.com/en-us/library/74y2334x (ПРОТИВ 80).aspx

Однако после этого он не появляется на моей панели управления службами (той, к которой я попадаю, набрав Services в окне "Пуск" в Vista).

Я попытался покопаться в коде atl, чтобы увидеть, где он обрабатывает переключатель /service, но не могу его найти, хотя я могу найти код для обработки /RegServer и / UnregServer

Раньше это работало, мне каким-то образом удавалось регистрировать эту услугу раньше.Но теперь я изменил его местоположение и не могу зарегистрировать его снова.Когда я запускаю ExeName.exe /service, он запускается как локальный сервер, если я сначала запускаю / RegServer, но я хочу, чтобы он был установлен как сервис.

Я что-то упускаю, и знаете ли вы, где выполняется обработка переключателя /service?

Это было полезно?

Решение 4

Убедитесь, что вы случайно не ввели несколько символов в имя функции ParseCommandLine в классе CAtlServiceModuleT, определенном в atlbase.h

Если вы это сделаете, в базовом классе также есть версия этой функции, что будет означать, что все будет хорошо компилироваться, и вам может потребоваться весь день, чтобы обнаружить эту дурацкую ошибку!

;-)

Другие советы

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

Так же, как это делал JaredPar, попробуйте команду с Power Shell с полными правами администратора.

Работая с методом CAtlServiceModule :: Install из коробки, вы должны использовать правильные заглавные буквы для каждого аргумента - " / Service " / UnregServer " и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top