![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно программно перестартовать сервис?
sergch © (2004-08-17 12:44:00)Возможно-ли это?
Ega23 (2004-08-17 12:50:00) [1]
ProxAPI UPRStatus __stdcall UPRInstallDriver( LPSTR path,
unsigned uBaseAddr, unsigned uCtrlAddr )
{
SC_HANDLE hSCMan;
SC_HANDLE hServ;
UPRStatus Status = UPRCheckDriverStatus();
if (Status and UPRStatusError) return Status;
if (Status and UPRStatusInstalled)
{
hSCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(!hSCMan)
return (UPRStatusErrorSCManager);
hServ = OpenService(hSCMan, DeviceName, SERVICE_ALL_ACCESS);
if(hServ)
{
SERVICE_STATUS ServStatus;
QueryServiceStatus(hServ,&ServStatus);
if(ServStatus.dwCurrentState == SERVICE_RUNNING )
ControlService(hServ,SERVICE_CONTROL_STOP, &ServStatus);
if(!DeleteService(hServ))
{
return UPRStatusErrorService;
}
else
if(!CloseServiceHandle(hServ)) return UPRStatusErrorService;
}
}
hServ = CreateService(hSCMan, DeviceName, DeviceName, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, (LPCTSTR)path, nil, nil,
(LPCTSTR)"", nil, nil);
if (not hServ) return UPRStatusErrorService;
Status = UPRStartDriver();
return Status;
}
Digitman (2004-08-17 12:47:00) [2]см.
OpenSCManager
OpenService
ControlService
StartService
Ega23 (2004-08-17 12:47:00) [3]Да.