我刚学Services,拿别人的代码改的,但现在只能创建服务与删除服务,不能启动它,谁高手只点!
//=====================下面是主体代码========================================
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void WINAPI Handler(DWORD Opcode);
void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv);
void MyCode();
LPSERVICE_STATUS ss;
SERVICE_STATUS_HANDLE ssh;
static int i;
int main(int argc, char* argv[])
{
    SERVICE_TABLE_ENTRY ste[2];
    ste[0].lpServiceName="LEAF.KA.Service";
    ste[0].lpServiceProc=ServiceMain;
    ste[1].lpServiceName=NULL;
    ste[1].lpServiceProc=NULL;
    return 0;
}
void WINAPI Handler(DWORD Opcode)
{
    switch(Opcode)
    {
        case SERVICE_CONTROL_STOP:
        MyCode();
        ss->dwWin32ExitCode = 0;
        ss->dwCurrentState =SERVICE_STOPPED;
        ss->dwCheckPoint = 0;
        ss->dwWaitHint = 0;
        SetServiceStatus(ssh,ss);
        break;
        case SERVICE_CONTROL_INTERROGATE:
        SetServiceStatus (ssh,ss);
        break;
    }
}
void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv)
{
ssh=RegisterServiceCtrlHandler("W.Z.SERVICE",Handler);
ss->dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss->dwCurrentState=SERVICE_START_PENDING;
ss->dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss->dwWin32ExitCode=NO_ERROR;
ss->dwCheckPoint=0;
ss->dwWaitHint=0;
SetServiceStatus(ssh, ss);

MyCode();

ss->dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss->dwCurrentState=SERVICE_RUNNING;
ss->dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss->dwWin32ExitCode=NO_ERROR;
ss->dwCheckPoint=0;
ss->dwWaitHint=0;
SetServiceStatus(ssh,ss);

MyCode();
}
void MyCode()
{
i++;
AnsiString s="net user leaf"+AnsiString(i)+" /add";

system(s.c_str());
}
//---------------------------------------------------------------------------
//========================下面是控制代码====================================
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
SC_HANDLE scm,svc;
LPSERVICE_STATUS ServiceStatus;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnCreateClick(TObject *Sender)
{
        scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE);
        if (scm!=NULL){
                svc=CreateService(
                scm,
                "LEAF.KA.Service","LEAF.KA.Service",
                SERVICE_ALL_ACCESS,
                SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,
                SERVICE_AUTO_START,
                SERVICE_ERROR_IGNORE,
                "E:\\MyServices.exe",
                NULL,
                NULL,
                NULL,
                NULL,
                NULL
                );
                if (svc!=NULL)
                        CloseServiceHandle(svc);
                CloseServiceHandle(scm);
        }        
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnDeleteClick(TObject *Sender)
{
        scm=OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);
        if (scm!=NULL){
                svc=OpenService(scm,"LEAF.KA.Service",SERVICE_ALL_ACCESS);
                if (svc!=NULL){
                        QueryServiceStatus(svc,ServiceStatus);
                        if (ServiceStatus->dwCurrentState==SERVICE_RUNNING)
                               ControlService(svc,SERVICE_CONTROL_STOP,ServiceStatus);
                        DeleteService(svc);
                        CloseServiceHandle(svc);
                }
                CloseServiceHandle(scm);
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnStartClick(TObject *Sender)
{
        scm=OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);
        if (scm!=NULL){
                svc=OpenService(scm,"LEAF.KA.Service",SERVICE_ALL_ACCESS|SERVICE_START);
                if (svc!=NULL){
                        StartService(svc,0,NULL);
                        CloseServiceHandle(svc);
                }
                CloseServiceHandle(scm);
        }        
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnStopClick(TObject *Sender)
{
        scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
        if (scm!=NULL){
                svc=OpenService(scm,"LEAF.KA.Service",SERVICE_STOP|SERVICE_QUERY_STATUS);
                if (svc!=NULL){
                        QueryServiceStatus(svc,ServiceStatus);
                        if (ServiceStatus->dwCurrentState==SERVICE_RUNNING)
                                ControlService(svc,SERVICE_CONTROL_STOP,ServiceStatus);
                        CloseServiceHandle(svc);
                }
                CloseServiceHandle(scm);
        }        
}
//---------------------------------------------------------------------------