如题,将一个EXE转成服务来运行,在启动服务的时候报1053错误,服务没有响应控制请求创建服务function TFWebMail.CreateServer():Boolean;
var
  res:  DWORD;
begin
  //服务存在不继续创建服务
  if isServiceExits() then begin
    //开启服务
    StartServer();    Result := True;
    Exit;
  end;  Try
    m_scmHandle := OpenScmHandle();//创建控制服务句柄
    m_svcinfo.HscManager := m_scmHandle;
    m_svcinfo.ServerName := SERVICE_NAME;
    m_svcinfo.DisplayName := SERVICE_NAME;
    m_svcinfo.DesireAccess := SC_MANAGER_ALL_ACCESS;
    m_svcinfo.ServiceType := SERVICE_WIN32_OWN_PROCESS;
    m_svcinfo.StartType := SERVICE_DEMAND_START;
    m_svcinfo.ErrorControl := SERVICE_ERROR_SEVERE;
    m_svcinfo.Dependencies := '';
    m_svcinfo.ServerStartName := '0';
    m_svcinfo.Password := '0';
    m_svcinfo.BinaryPathName := m_data.m_AppPath + 'RecordServer\recordServer.exe';    //创建服务
    m_svrHandle := CreateService( m_svcinfo.HscManager,//服务控制管理程序维护的登记数据库的句柄,由系统函数OpenSCManager返回
                                  Pchar(m_svcinfo.ServerName),//以NULL 结尾的服务名,用于创建登记数据库中的关键字
                                  Pchar(m_svcinfo.DisplayName),//以NULL 结尾的服务名,用于用户界面标识服务
                                  m_svcinfo.DesireAccess,//指定服务返回类型
                                  m_svcinfo.ServiceType,//指定服务类型
                                  m_svcinfo.StartType,//指定何时启动服务
                                  m_svcinfo.ErrorControl,//指定服务启动失败的严重程度
                                  pchar(m_svcinfo.BinaryPathName),//指定服务程序二进制文件的路径
                                  pchar(''),//指定顺序装入的服务组名
                                  LPDWORD(0), //忽略,NULL
                                  Pchar(m_svcinfo.Dependencies),//指定启动该服务前必须先启动的服务或服务组
                                  nil,//Pchar(m_svcinfo.ServerStartName),//以NULL 结尾的字符串,指定服务帐号。如是NULL,则表示使用LocalSystem 帐号
                                  nil//Pchar(m_svcinfo.Password)//以NULL 结尾的字符串,指定对应的口令。为NULL表示无口令。但使用LocalSystem时填NULL
                                  );    If m_svrHandle = 0   Then Begin
      res := GetLastError();
      ShowMessage(IntToStr(res));
      Result := False;
      Exit;
    End;
  Except
    Result := False;
    Exit;
  End;
  //启动服务
  StartServer();
  Result := True;end;
启动服务function TFWebMail.StartServer():Boolean;
var
  sav:  PAnsiChar;
  serstatu: _SERVICE_STATUS;
begin
 if QueryServiceStatus(m_svrHandle,serstatu) then begin    if serstatu.dwCurrentState <> SERVICE_RUNNING then begin
      if not StartService(m_svrHandle,0,sav) then begin
        ShowMessage('启动服务失败:'+ IntToStr(GetLastError));
        Result := False;
        Exit;
      end;
    end;    Result := True;
    Exit;
  end;  Result := False;
end;