启动和停止服务的控制程序, 网上找的, 稍加改动

原创 2007年09月13日 10:53:00

void CNet_service_controlDlg::OnButton1()
{
 
// 打开服务管理对象
    SC_HANDLE hSC = ::OpenSCManager( NULL,
                        NULL, GENERIC_EXECUTE);
    if( hSC == NULL)
    {
        TRACE( "open SCManager error");
        return;
    }
    // 打开www服务。
    SC_HANDLE hSvc = ::OpenService( hSC, "Apache2",
        SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
    if( hSvc == NULL)
    {
        TRACE( "Open www error。");
  SaveToLog("---打开Apache2服务错误---");
        ::CloseServiceHandle( hSC);
        return;
    }
// 获得服务的状态
    SERVICE_STATUS status;
    if( ::QueryServiceStatus( hSvc, &status) == FALSE)
    {
        TRACE( "Get Service state error。");
        ::CloseServiceHandle( hSvc);
        ::CloseServiceHandle( hSC);
        return;
    }
    //如果处于停止状态则启动服务,否则停止服务。
    if( status.dwCurrentState == SERVICE_RUNNING)
    {
  CTime t=CTime::GetCurrentTime();
  int hou=t.GetHour();//还要判断一下时间  if(hou >= 22)
  {
   SaveToLog("---停止Apache2服务时时间不对,退出---");
            ::CloseServiceHandle( hSvc);
            ::CloseServiceHandle( hSC);
            return;
  }
        // 停止服务
        if( ::ControlService( hSvc,
          SERVICE_CONTROL_STOP, &status) == FALSE)
        {
            TRACE( "stop service error。");
   SaveToLog("---停止Apache2服务错误---");
            ::CloseServiceHandle( hSvc);
            ::CloseServiceHandle( hSC);
            return;
        }
        // 等待服务停止
        while( ::QueryServiceStatus( hSvc, &status) == TRUE)
        {
            ::Sleep( status.dwWaitHint);
            if( status.dwCurrentState == SERVICE_STOPPED)
            {
                AfxMessageBox( "stop success。");//不要提示,直接写入日志
    SaveToLog("---停止Apache2服务成功---");
                ::CloseServiceHandle( hSvc);
                ::CloseServiceHandle( hSC);
                OnOK();return;
            }
        }
    }
    else if( status.dwCurrentState == SERVICE_STOPPED)
    {
        // 启动服务
        if( ::StartService( hSvc, NULL, NULL) == FALSE)
        {
            TRACE( "start service error。");
   SaveToLog("---启动Apache2服务错误---");
            ::CloseServiceHandle( hSvc);
            ::CloseServiceHandle( hSC);
            return;
        }
        // 等待服务启动
        while( ::QueryServiceStatus( hSvc, &status) == TRUE)
        {
            ::Sleep( status.dwWaitHint);
            if( status.dwCurrentState == SERVICE_RUNNING)
            {
                AfxMessageBox( "start success。");//不要提示,直接写入日志
    SaveToLog("---启动Apache2服务成功---");
                ::CloseServiceHandle( hSvc);
                ::CloseServiceHandle( hSC);
                OnOK();return;
            }
      }
    }
    TRACE( "start error。");
 SaveToLog("---控制Apache2服务时发生未知错误---");
    ::CloseServiceHandle( hSvc);
    ::CloseServiceHandle( hSC);
 OnOK();
    return;

服务(Service)的停止和启动

Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到...
  • generallizhong
  • generallizhong
  • 2014年12月25日 20:25
  • 890

[总结]PostgreSQL服务启动又停止的解决方法

      安装PostgreSQL数据库8.3版本后,启动数据库服务,却弹出提示服务启动后又停止,一些服务自动停止,如果他们没有什么可做的,例如性能日志和警报服务。这个时候需要查看事件查看器的报错消...
  • yuzhulucky
  • yuzhulucky
  • 2010年12月02日 15:36
  • 5408

本地计算机上的MSSQLSERVER服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报“服务"。

遇到了这个问题,在网上查了很多解决方法,但均不适合我。忽然想起,一开始时正常,后来把2005网络配置里的VIA协议启动后才不正常的,所以只要打开SQL Server Configuration Man...
  • ruanruoshi
  • ruanruoshi
  • 2007年10月24日 16:31
  • 4535

PostgreSQL 服务win7下启动后又停止的问题解决

今天遇到PostgreSQL 服务win7下启动后又停止的问题,解决办法是给PostgreSQL安装目录的权限添加Everyone权限,并赋予读写权限。...
  • baungham
  • baungham
  • 2012年06月19日 09:51
  • 2490

Tomcat7.0源码分析——启动与停止服务原理

熟悉Tomcat的工程师们,肯定都知道Tomcat是如何启动与停止的。对于startup.sh、startup.bat、shutdown.sh、shutdown.bat等脚本或者批处理命令,大家一定知...
  • beliefer
  • beliefer
  • 2016年06月07日 09:49
  • 11999

mssqlserver服务启动后又停止了.一些服务自动停止

mssqlserver服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的,例如"性能和警报日志"2007-12-05 10:29 ...
  • heshengfen123
  • heshengfen123
  • 2008年04月07日 23:28
  • 38411

本地计算机上的XXX服务启动后又停止了——Windows Service服务调试(二)

Service启动失败,后提示以下错误信息: 查了一下资料,应该是服务的逻辑代码出了问题,打开控制面板/管理工具/事件查看器 ->应用程序 里发现了如下信息:双击错误信息,即可找到服务的错误提示!~!...
  • lanruoshui
  • lanruoshui
  • 2009年10月23日 13:37
  • 43457

tomcat服务启动与停止的监听

使用ServletContextListener在服务器启动和关闭时创建和关闭缓存。ServletContext 被 Servlet 程序用来与 Web 容器通信。例如写日志,转发请求。每一个 We...
  • JimXiaoMing
  • JimXiaoMing
  • 2016年06月01日 15:36
  • 1033

解决“本地计算机上的MSSQLSERVER服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的”

SQL SERVER 2005 + SP3版本,突然无法启动服务。帖出系统日志中的错误: 2010-09-12 18:12:39.12 Server      Microsoft SQL Server...
  • csxjy1986
  • csxjy1986
  • 2011年02月14日 14:56
  • 74338

solr5.5.0服务启动与停止

1.解压solr5.5.0.zip文件,加压后为 2.进入bin目录后输入命令 开启服务//solr服务默认端口为8983 solr start //可以指定端口 solr start -p ...
  • zmken497300
  • zmken497300
  • 2016年06月20日 23:05
  • 944
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:启动和停止服务的控制程序, 网上找的, 稍加改动
举报原因:
原因补充:

(最多只允许输入30个字)