Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Не могу запустить сервис!


Автор: Гость_Alex 6.10.2005, 12:18
Привет участникам!
Ребят помогите, не могу запустить сервис!
При запуске сервиса (/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.




Автор: NiJazz 6.10.2005, 12:37
Прав небось не хватает. Обычные пользователи не могут управлять менеджером служб.

Автор: Гость_Alex 6.10.2005, 12:46
Права администратора!!!
Система Windows XP SP2

Автор: Гость_Alex 6.10.2005, 13:40
Вопрос закрываю!
Система, не могла запустить exe-шник сервиса, т.к. пользователь system не имел smile прав доступа к этому файлу.

Автор: Dimannn 9.10.2005, 19:34
Цитата
Указанная служба был отмечена для удаления.


Может провисеть довольно долго. Не волнуйся. Удалит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)