Служба 32-разрядных Windows не запускается на 64-разрядных Windows 7 - PullRequest
0 голосов
/ 16 октября 2011

У меня есть 32-битный Windows .exe. Который будет работать как служба Windows. Этот .exe отлично работает в качестве службы для 32-разрядной версии Windows 2000 / XP.

Однако при попытке запуска на 64-битном сервере Windows 2008 происходит сбой. Я наблюдаю два случая.

1) Если я создаю приложение на VC ++ 6. Из записи в журнале событий кажется, что Kernel.dll дает сбой.

Faulting application name: , version: , time stamp: 0x4e6461c0
Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdbdf
Exception code: 0xe06d7363
Fault offset: 0x0000b727
Faulting process id: 0xe2c
Faulting application start time: 0x01cc83cb1052e4b3
Faulting application path: C:\Program Files (x86)\\\Admin.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll
Report Id: 4e0693b4-efbe-11e0-a07f-001143e8bb9d

2) Если я создаю приложение с 32-битным VS2005, отображается ошибка времени выполнения, и в журнале событий появляется сообщение об ошибке msvscrt.dll.

Faulting application name: , version: ,
Faulting module name: MSVCR80.dll, version: 8.0.50727.4927, time stamp: 0x4a2752ff
Exception code: 0x40000015
Fault offset: 0x000046b4
Faulting process id: 0x34c
Faulting application start time: 0x01cc8c4f2a223426
Faulting application path: C:\Program Files (x86)\\\Admin.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\MSVCR80.dll
Report Id: 69554d57-f842-11e0-a07f-001143e8bb9d

Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

1 голос
/ 16 октября 2011

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

Поскольку ваша служба - это EXE (а не DLL, которая запускается под svchost.exe, который является общим именем хост-процесса для служб, которые запускаются из DLL), вы должны иметь возможность использовать «Присоединение к процессу»."опция в Visual Studio, чтобы присоединить к ней отладчик.Вам может потребоваться запустить Visual Studio от имени администратора и / или изменить пользователя, под которым выполняется служба, чтобы иметь возможность сделать это.

Кроме того, если служба аварийно завершает работу вскоре после запуска, вам может потребоваться вызвать MessageBox с MB_SERVICE_NOTIFICATION, чтобы приостановить выполнение достаточно долго, чтобы вы могли подключить отладчик.

Однако, если служба аварийно завершает работу во время запуска, прежде чем она достигнет MessageBox, вам нужно построить ее какконсольное приложение .Теперь вы можете запустить под отладчиком и посмотреть, что происходит.

0 голосов
/ 16 октября 2011

Пожалуйста, попробуйте установить распространяемый пакет на клиентском компьютере для запуска приложения.

...