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  
这些函数,不难用的

解决方案 »

  1.   

    以下是我写的一个开始服务的函数,服务名作为参数传入。procedure StartSrv(SrvName:string);
    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;
      

  2.   

    我有DELPHI 原码,给分就给原码,哈哈