ChangeServiceConfig
ChangeServiceConfig2
CloseServiceHandle
ControlService
CreateService
DeleteService
EnumDependentServices
EnumServicesStatus
GetServiceDisplayName
GetServiceKeyName
Handler
LockServiceDatabase
NotifyBootConfigStatus
OpenSCManager
OpenService
QueryServiceConfig
QueryServiceConfig2
QueryServiceLockStatus
QueryServiceObjectSecurity
QueryServiceStatus
RegisterServiceCtrlHandler
ServiceMain
SetServiceBits
SetServiceObjectSecurity
SetServiceStatus
StartService
StartServiceCtrlDispatcher
UnlockServiceDatabase
这些函数,不难用的
var
hScManager:SC_Handle;
SrvHandle:SC_Handle;
SrvStatus:TServiceStatus;
iStatus:DWord;
lpServiceArgVectors:PChar;
begin
//取得服务数据库的Handle
hScManager:=OpenSCManager('',SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS);
if hScManager<>0 then
begin
SrvHandle:=OpenService(hScManager,pchar(SrvName),SERVICE_ALL_ACCESS);
if SrvHandle<>0 then
begin
if QueryServiceStatus(SrvHandle,SrvStatus) then
begin
iStatus:=SrvStatus.dwCurrentState;
if iStatus<>SERVICE_START_PENDING then
begin
//如果服务没有开始,则开始之
if not StartService(SrvHandle,0,lpServiceArgVectors) then
begin
AppliCation.MessageBox(pchar('开始'+SrvName+'服务时发生错误。'),'提示',MB_OK+MB_ICONERROR);
end;
end;
end
else
begin
AppliCation.MessageBox(pchar('无法获得'+SrvName+'服务的状态。'),'提示',MB_OK+MB_ICONERROR);
end;
end;
CloseServiceHandle(SrvHandle);
end;
CloseServiceHandle(hScManager);
end;