Привет участникам! Ребят помогите, не могу запустить сервис! При запуске сервиса (/start), написанного на Delphi, вываливается сообщение:
"Не удалось запустить службу SndService на локальный компьютер. Ошибка 5: Отказано в доступе."
пример сервиса взят из help-а Delphi.
Деинсталлировал сервис с помощбю ключа /uninstall, а в списке служб Windows он продолжает находиться (тип запуска: отключен). Вручную указываю тип запуска: Auto. => Появляется сообщение об ошибке: Указанная служба был отмечена для удаления. Вот исходный код SndServiceUnit.pas :
| Код | {This service beeps every 500 milliseconds from within the standard thread. It handles pausing, continuing, and stopping of the thread when the service is told to pause, continue, or stop.} unit SndServiceUnit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
type TService1 = class(TService) procedure ServiceStart(Sender: TService; var Started: Boolean); procedure ServiceContinue(Sender: TService; var Continued: Boolean); procedure ServicePause(Sender: TService; var Paused: Boolean); procedure ServiceStop(Sender: TService; var Stopped: Boolean); private { Private declarations } public function GetServiceController: TServiceController; override; { Public declarations } end;
TSparkyThread = class(TThread) public procedure Execute; override; end;
var Service1: TService1; SparkyThread: TSparkyThread;
implementation
{$R *.DFM} //------------------------------------------------------- procedure TSparkyThread.Execute; begin while not Terminated do begin Beep; Sleep(500); end; end; //------------------------------------------------------- procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; //------------------------------------------------------- function TService1.GetServiceController: TServiceController; begin Result := ServiceController; end; //------------------------------------------------------- procedure TService1.ServiceStart(Sender: TService; var Started: Boolean); begin SparkyThread := TSparkyThread.Create(False); Started := True; end; //------------------------------------------------------- procedure TService1.ServiceContinue(Sender: TService; var Continued: Boolean); begin SparkyThread.Resume; Continued := True; end; //------------------------------------------------------- procedure TService1.ServicePause(Sender: TService; var Paused: Boolean); begin SparkyThread.Suspend; Paused := True; end; //------------------------------------------------------- procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean); begin SparkyThread.Terminate; Stopped := True; end; //------------------------------------------------------- end.
|
|