Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.18;
Скачать: CL | DM;

Вниз

createservice вызывает падение rpc...   Найти похожие ветки 

 
istok20 ©   (2009-08-20 19:31) [0]

подскажите куда копать, если createservice вызывает отказ rpc и как следствие ребут\зависание важных служб ос (hservice возвращает 0, а если ставить руками через /install то всё ок)?

происходит такое на малом кол-ве компов


 
Anatoly Podgoretsky ©   (2009-08-20 19:55) [1]

> istok20  (20.08.2009 19:31:00)  [0]

И ты хочешь ответ без кода, на основание слов - не работает?


 
istok20 ©   (2009-08-20 20:37) [2]

установка сервиса происходит в таком духе:

function TForm1.GetServiceType(const AServiceType: TServiceType;
 Interactive: Boolean): Integer;
begin
 Result := SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS;
 case AServiceType of
   stWin32:
     if Interactive then
       Result := SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS
     else
       Result := SERVICE_WIN32_OWN_PROCESS;
   stDevice: Result := SERVICE_KERNEL_DRIVER;
   stFileSystem: Result := SERVICE_FILE_SYSTEM_DRIVER;
 end;
end;

function TForm1.GetStartType(
 const AStartType: TStartType): Integer;
begin
 Result := SERVICE_AUTO_START;
 case AStartType of
   stBoot, stSystem, stAuto: Result := SERVICE_AUTO_START;
   stManual: Result := SERVICE_DEMAND_START;
   stDisabled: Result := SERVICE_DISABLED;
 end;
end;

function TForm1.GetErrorSeverity(
 const AErrorSeverity: TErrorSeverity): Integer;
begin
 Result := SERVICE_ERROR_NORMAL;
 case AErrorSeverity of
   esIgnore: Result := SERVICE_ERROR_IGNORE;
   esNormal: Result := SERVICE_ERROR_NORMAL;
   esSevere: Result := SERVICE_ERROR_SEVERE;
   esCritical: Result := SERVICE_ERROR_CRITICAL;
 end;
end;

procedure TForm1.CreateMyService(var ServiceInfo: TweServiceInfo; afilename: string);
var
 hService: SC_HANDLE;
 lpVectors: PChar;
 StartSrvName: Pointer;
 i: Integer;
 FErrorStr: string;
 FSCManager: SC_HANDLE;
begin
 FSCManager := OpenSCManager(PChar(Edit1.Text), nil, SC_MANAGER_ALL_ACCESS);
 with ServiceInfo do
 try
       if rServiceStartName = "" then StartSrvName := nil
       else StartSrvName := PChar(rServiceStartName);

   hService := CreateService(FSCManager, PChar(rName), PChar(rDisplayName),
     SERVICE_ALL_ACCESS, GetServiceType(rServiceType, rInteractive), GetStartType(rStartType),
     GetErrorSeverity(rErrorSeverity), PChar(afilename), PChar(rLoadGroup), nil, PChar(""),
     StartSrvName, PChar(rPassword));
     Memo1.Lines.Add("hService="+IntToStr(hService))
 finally
   CloseServiceHandle(FSCManager);
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Text := GetComputerName;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 ServiceInfo: TweServiceInfo;
begin
   //add ClientDataTransferService
   with ServiceInfo do
   begin
     rServiceStartName := "";
     rName := cClientDataTransferServiceName;
     rDisplayName := cClientDataTransferServiceDisplayName;
     rServiceType := stWin32;
     rStartType := stAuto;
     rErrorSeverity := esNormal;
     rLoadGroup := "";
     rPassword := "";
     rInteractive := True;
   end;
   CreateMyService(ServiceInfo, ExtractFilePath(Forms.Application.Exename)+"distrib\service1.exe");
end;


 
Leonid Troyanovsky ©   (2009-08-21 08:53) [3]


> istok20 ©   (20.08.09 20:37) [2]

> установка сервиса происходит в таком духе:

PChar("") и nil - две большие разницы.
Смотри Pointer(s) vs PChar(s).

И, во-ще, прежде чем кричать "караул" изучают результаты,
возвращаемые функциями с возможной GetLastError в порядке,
установленном msdn.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2009.10.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1250069179
AlexDan
2009-08-12 13:26
2009.10.18
Распечатать три memo..


2-1250659742
vegarulez
2009-08-19 09:29
2009.10.18
Вопрос про размер шрифта в приложении


6-1207054869
SpellCaster
2008-04-01 17:01
2009.10.18
Асинхронные сокеты "забивают" очередь сообщений


2-1249906240
abun
2009-08-10 16:10
2009.10.18
Фильтрация массива чисел от шума


10-1160503048
WQSing
2006-10-10 21:57
2009.10.18
name по dispid