Windows SC.exe, как запросить контрольные коды на сервисе - PullRequest
0 голосов
/ 22 октября 2019

Что я сделал

Я пытаюсь реализовать ServiceBase.OnCustomCommand(int command) в пользовательской службе Windows с именем MyTestService, с пользовательскими кодами команд, как в этом ответе :

public enum MyCustomCommands { ExecuteScript = 128 };

Я заметил, что обычно значения пользовательских команд начинаются с 128.


Я пытался реализовать пользовательские коды команд, например, так:

public enum MyCustomCommandCodes
{
    Test1 = 1,
    Test2 = 2,
}

protected override void OnCustomCommand(int command)
{
    switch (command)
    {
        case (int)MyCustomCommandCodes.Test1:
            eventLog1.WriteEntry("Test1");
            break;
        case (int)MyCustomCommandCodes.Test2:
            eventLog1.WriteEntry("Test2");
            break;
        default:
            eventLog1.WriteEntry("default");
            break;
    }
}

Я звоню OnCustomCommand, используя утилиту командной строки Windows Service Control (SC) .

Когда я ввожу sc control MyTestService 1, я нашел вместо вызова case Test1это фактически остановило службу.

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


Я быхотелось бы видеть, какие управляющие коды уже используются службой Windows.

Вопрос из двух частей :

  • Есть ли способ запросасписок всех используемых кодов?
  • Если да, есть ли способ узнать, что на самом деле делает каждый кодс?

1 Ответ

0 голосов
/ 22 октября 2019

За комментарий @ madreflection, который указывает на функцию ControlService: https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-controlservice

Определяемый пользователем диапазон управляющего кода: 128 to 255.

И в нем также говорится, почему sc control MyTestService 1 останавливает службу, потому что 0x1 соответствует контрольному коду SERVICE_CONTROL_STOP.


Это ответ на мой вопрос в другом направлении, с таблицей поиска, предоставленной Microsoft.

Любые другие ответы, показывающие функции запроса контрольного кода, все еще приветствуются:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...