Я создал небольшой исполняемый файл, который можно запустить либо как обычное приложение, вызвав MyApp.exe
, либо как службу, вызвав MyApp.exe -s
. Поскольку я стараюсь сделать как можно более простым, я «устанавливаю» это приложение, вручную запустив
sc create MyAppService binPath= "C:\MyApp\MyApp.exe -s"
Затем я запускаю службу с net start MyAppService
, как обычно.
На двух компьютерах с Windows XP и двух компьютерах с Windows 2000 это работает нормально. Однако на двух разных компьютерах с Windows XP Embedded при попытке запустить службу появляется сообщение:
Произошла системная ошибка 1083.
Исполняемая программа, для которой настроена эта служба, не реализует службу.
На одной машине мне удалось это исправить, удалив и переустановив .NET 2.0, но на второй машине это не сработало.
Я не уверен, что делать с отладкой, и поиск в Google, похоже, только вызывает определенные службы, которые не работают с этим сообщением, такие как BITS и служба Exchange.
Ниже приведены классы MyApp
, который является классом запуска, и MyAppService
, который является классом, расширяющим ServiceBase. Заранее спасибо за любое направление по этому вопросу.
MyApp.cs
static class MyApp
{
[STAThread] static void Main( string[] args )
{
....
switch ( arg1 )
{
case "-s":
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new MyAppService() };
ServiceBase.Run( ServicesToRun );
break;
....
}
}
}
MyAppService.cs:
class MyAppService : ServiceBase
{
static MyAppService()
{
// ...
}
protected override void OnStart( string[] args )
{
// ...
}
}