Задать вопрос
Ответы пользователя по тегу Delphi
  • Как в Delphi запустить процесса из сервиса?

    @s0m
    100% рабочий код. Сам сервис запускается из-под конкретного пользователя.
    В противном случае нужно эти права получать програмным путём.

    TServ = class(TService)
            procedure ServiceStart(Sender: TService; var Started: Boolean);
    	procedure ServiceExecute(Sender: TService);
    	procedure ServiceCreate(Sender: TObject);
      public
    	function GetServiceController: TServiceController; override;
      end;
    
    procedure TServ.ServiceExecute(Sender: TService);
    var
    	si : TStartupInfo;
    	pi : TProcessInformation;
    begin
    	FillMemory( @pi, SizeOf( pi ), 0 );
    	GetStartupInfo( si );
    
    	CreateProcess(PAnsiChar(exe), PAnsiChar(params), nil, nil, false, 0, nil, PAnsiChar(dir), si, pi );
    	CloseHandle(pi.hThread);
    
    	while not Terminated do begin
    		ServiceThread. ProcessRequests( False );
    		Sleep(250);
    	end;
    
    	TerminateProcess(pi.hProcess, 1);
    end;
    Ответ написан
    Комментировать