Что я сделал
Я пытаюсь реализовать 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.
Вопрос из двух частей :
- Есть ли способ запросасписок всех используемых кодов?
- Если да, есть ли способ узнать, что на самом деле делает каждый кодс?