Member 12890457 Ответов: 3

32 битная служба windows завершается с ошибкой 1067 при запуске в windows 10


Мы пытаемся перенести устаревшую 32-битную службу, написанную на Microsoft C++ 6.0, с 32-битной Windows 2003 на Windows 10. Я могу установить службу, но когда я пытаюсь запустить ее, я получаю сообщение "Ошибка 1067 - процесс неожиданно завершился". Глядя на Средство просмотра событий, модуль сбоя идентифицируется как "/Windows/System32/Ntdll.dll". У меня сложилось впечатление, что System32 содержит 64-битные DLL-файлы, разве моя служба не должна иметь доступ "Ntdll.dll" из папки "/ Windows/SysWOW64"? Любые мысли о том, что может происходить, были бы очень ценны.

Что я уже пробовал:

Мы установили Visual Studio 6.0 на нашу машину с Windows 10 и перекомпилировали и перестроили приложение.

3 Ответов

Рейтинг:
2

Gerardo Sanchez

вы пытались отладить свой сервис? когда я разрабатывал свои услуги, я делал это:

#if !defined(_DEBUG)
	SERVICE_TABLE_ENTRY servicetable[]=
	{
		{serviceName, ServiceMain},
		{NULL,NULL}
	};
	StartServiceCtrlDispatcher(servicetable);
#else
	ServiceMain(argc, argv);
#endif

Этот код запускает вашу службу как обычное консольное приложение в отладке, возможно, вы могли бы поймать ошибку при запуске вашей службы в отладчике


Рейтинг:
1

KarstenK

Вы действительно должны использовать не" старую добрую " Visual Studio 6, а более новую версию Visual Studio.

Служба ДОЛЖЕН запуск в собственном битовом размере операционной системы. Таким образом, вы должны создать 64-битный сервис.

И не фергет: служба и отладка должны работать в режиме администратора. И тест на производственной системе до релиз. ;-)


Рейтинг:
1

SoMad

Я боюсь, что это может быть много вещей. Это действительно зависит от того, что на самом деле делает ваша служба. Windows Server 2003 основана на XP, и с тех пор Microsoft внесла значительные изменения.

Ваша служба может пытаться "сделать что-то", что теперь по умолчанию более ограничено политиками безопасности.

Одно из основных изменений, с которым мы столкнулись при переходе с XP на Windows 7, заключается в том, что ОС теперь изолирует службы в сеансе 0, в то время как приложения работают в других сеансах, поэтому, если ваша служба совместно использует объекты или пытается получить доступ к общему объекту, вам, возможно, придется обновить код. Полное объяснение см. В этом документе (откройте страницу, затем нажмите кнопку Загрузить, чтобы получить документ):

В Windows ® XP, Windows Server® 2003 и более ранних версиях Windows все службы работают в сеансе 0 вместе с приложениями. Такая ситуация создает угрозу безопасности. В Windows Vista®, Windows Server 2008 и более поздних версиях Windows операционная система изолирует службы в сеансе 0 и запускает приложения в других сеансах, поэтому службы защищены от атак, исходящих из кода приложения.

Сорен Мадсен