Невозможно запустить службу, написанную в .NET 2.0 в Windows XP Embedded - PullRequest
6 голосов
/ 10 марта 2010

Я создал небольшой исполняемый файл, который можно запустить либо как обычное приложение, вызвав 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 )
    {
        // ...
    }
}

Ответы [ 3 ]

1 голос
/ 18 февраля 2011

На рабочем столе это может произойти, если служба неправильно зарегистрирована в реестре Windows под учетной записью, под которой должен запускаться экземпляр svchost. У меня нет опыта работы с XPe, но попробуйте поискать в HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Svchost и убедиться, что MyAppService правильно указан для учетной записи.

0 голосов
/ 02 июля 2012

Похоже, у меня такая же проблема.ServiceController.Start () не запускает службу успешно.Приложение находится в C # .NET2 и работает в Window XPe.Обходной путь ниже:

TimeSpan timeout = TimeSpan.FromMilliseconds(20000);
while (true)
{
    ServiceController service = new ServiceController("myservice");
    service.MachineName = ".";
    try 
    {
       service.Start()
       service.WaitForStatus(ServiceControllerStatus.Running, timeout);
    }
    catch
    {  
        service.Stop();
        continue;
    }
 }

после 2 или 3 циклов, сервис обычно запускается успешноНо прошло 30-40 секунд.Это неприемлемо.
Кто-нибудь сталкивался с этой проблемой?Спасибо!

0 голосов
/ 11 марта 2011
  1. Попробуйте проверить в журнале событий, есть ли полезная информация, включая журнал безопасности.
  2. Кажется, что MyAppService не распознается как служба, или MyApp.exe не предоставляет XPe никаких служб. Сосредоточьтесь на этом, чтобы понять причину.
  3. Для быстрого тестирования вы можете запустить XPe на своем ПК для разработки с помощью VMWare. У VMWare есть способ скопировать текущий запущенный XPe в образ и скопировать на ваш компьютер, но не уверен, что он может работать правильно.
...