У меня есть переменная lpBinaryPathName, которая содержит путь к исполняемому файлу и аргументы командной строки, где arg1 — это идентификатор службы.
Соответствующий код:
Код: Выделить всё
IntPtr service = CreateService(scm, serviceName, displayName, ServiceAccessRights.SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, startuptype, ServiceError.SERVICE_ERROR_NORMAL, lpBinaryPathName, null, IntPtr.Zero, dependencies, account, passwordPointer);
Я ничего не получаю сообщения об ошибках при выполнении этой операции, и служба в остановленном состоянии выглядит корректно установленной. Однако когда я пытаюсь запустить службу после установки, мой файл main.cpp внутри исполняемого файла по какой-то причине не запускается. Я проверил это, добавив операторы печати в свою основную функцию.
Я протестировал это с различными вариантами lpBinaryPathName, и все они работают нормально. Служба отказывается запускаться только тогда, когда мой идентификатор службы начинается с '-'.
У меня есть подозрение, что функция CreateService обрабатывает -100 какпараметр параметра командной строки вместо значения идентификатора службы.
Я пытался экранировать его с помощью '\', но безрезультатно.
Есть ли у кого-нибудь рекомендации по устранению этой проблемы?
Подробнее здесь: https://stackoverflow.com/questions/791 ... d-that-sta
Мобильная версия