mira fide, ahora me he puesto a "cacharrear" un poco y hice lo siguiente,
primero defino esto:
Código Delphi
[-]
uses WinSvc;
...
const
svName = 'MySrv';
svDisplayName = 'Servicio de Alberto Enrique Franco Ferreiro';
...
mira, para instalar un servicio, hago esto en el onClick de un Button:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
vSCManager, vServiceCreated: Cardinal;
begin
vSCManager := 0;
vSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
vServiceCreated := 0;
vServiceCreated :=
CreateService(vSCManager, svName, svDisplayName, SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, 'C:\aeff.exe', nil, nil, nil, nil, nil);
CloseServiceHandle(vServiceCreated);
CloseServiceHandle(vSCManager);
end;
y para desintalarlo, entonces hago lo siguiente:
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
vSCManager, vService : Cardinal;
sstatus: TServiceStatus;
begin
vSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
vService := OpenService(vSCManager, svName, SERVICE_ALL_ACCESS);
ControlService(vService, SERVICE_CONTROL_STOP, sstatus);
Sleep(500);
DeleteService(vService);
CloseServiceHandle(vService);
CloseServiceHandle(vSCManager);
RaiseLastWin32Error;
end;
espero que te sirva de algo
saludos, aeff!