![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Служба [D7, Win2k]
Nata © (2004-08-06 15:38:00)Здравствуйте мастера! Очень прошу помогите…как мне остановить службу на удаленном компьютере(компьютера в домене у меня права администратора) если можно фрагментик программки…заранее всем спасибо….
Rouse_ (2004-08-06 22:15:00) [1]Если последний вопрос по поводу инсталяции сервиса в SCM - то у "нормального" сервиса должна поддерживаться инсталляция из командной строки...
В противном случае можно конечно и ручками...
// Инсталяция сервисов в SCM
// =============================================================================
function Install: Boolean;
const
StartType =
{$IFDEF SERVICE_DEBUG}
SERVICE_DEMAND_START;
{$ELSE}
SERVICE_AUTO_START;
{$ENDIF}
var
SCManager, Service: SC_HANDLE;
Info: String;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if SCManager <> 0 then
try
Service := CreateService(SCManager, ListenerServiceName, ListenerServiceDisplayName,
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,
StartType, SERVICE_ERROR_NORMAL, PChar('"' + ParamStr(0) + '" -service'),
nil, nil, nil, nil, nil);
if Service <> 0 then
try
Result := ChangeServiceConfig(Service, SERVICE_NO_CHANGE,
SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, nil, nil,
nil, nil, nil, nil, nil);
Info := ListenerServiceInfo;
if Result then
Result := ChangeServiceConfig2(Service,
SERVICE_CONFIG_DESCRIPTION, @Info);
finally
CloseServiceHandle(Service);
end
else
Result := GetLastError = ERROR_SERVICE_EXISTS;
finally
CloseServiceHandle(SCManager);
end
else
Result := False
end;
Rouse_ (2004-08-06 22:05:00) [2]Запустить соответственно:
var
SCManager, Service: SC_HANDLE;
P: PChar;
begin
SCManager := OpenSCManager('\\RemoteComp', nil, SC_MANAGER_ALL_ACCESS);
if SCManager <> 0 then
try
Service := OpenService(SCManager, 'имя сервиса', SERVICE_START);
if Service <> 0 then
try
P := nil;
if not StartService(Service, 0, P) then
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
finally
CloseServiceHandle(Service);
end;
finally
CloseServiceHandle(SCManager);
end;
> я понимаю я тебе надоела но еще вопрос у меня есть служба она запускается C:\CARDSERV\CSERVICE.EXE
> вот если я пишу Service := OpenService(SCManager, 'CSERVICE', SERVICE_STOP);
> что делать???
Не понял вопроса...
Nata (2004-08-06 18:27:00) [3]я понимаю я тебе надоела но еще вопрос у меня есть служба она запускается C:\CARDSERV\CSERVICE.EXE
вот если я пишу Service := OpenService(SCManager, 'CSERVICE', SERVICE_STOP);
что делать???
Nata (2004-08-06 18:20:00) [4]
> Rouse_ © (06.08.04 18:15) [6]
> Service := OpenService(SCManager, 'Telnet', SERVICE_STOP);
>
> замени на
> Service := OpenService(SCManager, 'TlntSvr', SERVICE_STOP);
Да супер остановила но вот вопрос как запустить???? мне надо еще и потом запускать подскажи....
Rouse_ (2004-08-06 18:19:00) [5]А в качестве параметра сервиса нужно передавать имя службы а не выводимое имя...
Запусти services.msc и посмотри в свойствах сервиса...
Rouse_ (2004-08-06 18:15:00) [6]Service := OpenService(SCManager, 'Telnet', SERVICE_STOP);
замени на
Service := OpenService(SCManager, 'TlntSvr', SERVICE_STOP);
Nata (2004-08-06 18:12:00) [7]:( ты знаешь запустилось но не раотает нажимаю на кнопку вообще ничего не происходит....:(
может я че не так сделала глянь....
procedure TForm1.Button1Click(Sender: TObject);
var
SCManager, Service: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
SCManager := OpenSCManager('\\127.0.0.1', nil, SC_MANAGER_ALL_ACCESS);
if SCManager <> 0 then
begin
try
Service := OpenService(SCManager, 'Telnet', SERVICE_STOP);
form1.Label1.Caption:=inttostr(service);
if Service <> 0 then
try
if not ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus)
and (ServiceStatus.dwCurrentState = SERVICE_STOPPED) then
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
// btnStopStart.Enabled := False;
// btnClose.Enabled := False;
// btnStart.Enabled := True;
finally
CloseServiceHandle(Service);
end;
finally
CloseServiceHandle(SCManager);
end;
end;
end;
Rouse_ (2004-08-06 16:07:00) [8]WinSvc
Nata (2004-08-06 15:46:00) [9]слушай а подключать ничего не надо????
USES ????
Nata (2004-08-06 15:43:00) [10]
> Rouse_
блин я тебя обожаю!!!!!!!!!!!!!!!!!!!!!!!!!
правда я еще не пробовала ну все равно спасибо тебе....чмок!
Rouse_ (2004-08-06 15:41:00) [11]
var
SCManager, Service: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
SCManager := OpenSCManager('\\RemoteComp', nil, SC_MANAGER_ALL_ACCESS);
if SCManager <> 0 then
try
Service := OpenService(SCManager, 'имя сервиса', SERVICE_STOP);
if Service <> 0 then
try
if not ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus)
and (ServiceStatus.dwCurrentState = SERVICE_STOPPED) then
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
btnStopStart.Enabled := False;
btnClose.Enabled := False;
btnStart.Enabled := True;
finally
CloseServiceHandle(Service);
end;
finally
CloseServiceHandle(SCManager);
end;