C# CreateService Windows API не работает должным образом с идентификатором службы, начинающимся с "-"C#

Место общения программистов C#
Ответить
Anonymous
 C# CreateService Windows API не работает должным образом с идентификатором службы, начинающимся с "-"

Сообщение Anonymous »

У меня есть код C#, который пытается установить службу в Windows, используя следующий API: https://learn.microsoft.com/en-us/windo ... teservicea
У меня есть переменная 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);
where lpBinaryPathName="C:\\Program Files (x86)\\INSTALLDIR -100"
Я ничего не получаю сообщения об ошибках при выполнении этой операции, и служба в остановленном состоянии выглядит корректно установленной. Однако когда я пытаюсь запустить службу после установки, мой файл main.cpp внутри исполняемого файла по какой-то причине не запускается. Я проверил это, добавив операторы печати в свою основную функцию.
Я протестировал это с различными вариантами lpBinaryPathName, и все они работают нормально. Служба отказывается запускаться только тогда, когда мой идентификатор службы начинается с '-'.

У меня есть подозрение, что функция CreateService обрабатывает -100 какпараметр параметра командной строки вместо значения идентификатора службы.
Я пытался экранировать его с помощью '\', но безрезультатно.

Есть ли у кого-нибудь рекомендации по устранению этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/791 ... d-that-sta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»