zoukankan      html  css  js  c++  java
  • MFC 服务管理

    #include <winsvc.h>
    void CStartServiceDlg::OnBnClickedButton1()
    {
           // 打开服务管理对象
        SC_HANDLE hSC = ::OpenSCManager( NULL,NULL, GENERIC_EXECUTE);
        if( hSC == NULL)
        {
            TRACE( "open SCManager error");
            return;
        }
        // 打开www服务。
        SC_HANDLE hSvc = ::OpenService( hSC, "W3SVC",
            SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
        if( hSvc == NULL)
        {
            TRACE( "Open www erron。");
            ::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)
        {
            // 停止服务
            if( ::ControlService( hSvc,
              SERVICE_CONTROL_STOP, &status) == FALSE)
            {
                TRACE( "stop service error。");
                ::CloseServiceHandle( hSvc);
                ::CloseServiceHandle( hSC);
                return;
            }
            // 等待服务停止
            while( ::QueryServiceStatus( hSvc, &status) == TRUE)
            {
                ::Sleep( status.dwWaitHint);
                if( status.dwCurrentState == SERVICE_STOPPED)
                {
                    AfxMessageBox( "stop success。");
                    ::CloseServiceHandle( hSvc);
                    ::CloseServiceHandle( hSC);
                    return;
                }
            }
        }
        else if( status.dwCurrentState == SERVICE_STOPPED)
        {
            // 启动服务
            if( ::StartService( hSvc, NULL, NULL) == FALSE)
            {
                TRACE( "start service error。");
                ::CloseServiceHandle( hSvc);
                ::CloseServiceHandle( hSC);
                return;
            }
            // 等待服务启动
            while( ::QueryServiceStatus( hSvc, &status) == TRUE)
            {
                ::Sleep( status.dwWaitHint);
                if( status.dwCurrentState == SERVICE_RUNNING)
                {
                    AfxMessageBox( "start success。");
                    ::CloseServiceHandle( hSvc);
                    ::CloseServiceHandle( hSC);
                    return;
                }
          }
        }
        TRACE( "start error。");
        ::CloseServiceHandle( hSvc);
        ::CloseServiceHandle( hSC);
        return;
    }
  • 相关阅读:
    Linux 信号详解四(pause,alarm)
    Linux 信号详解三(sleep,raise)
    Linux 信号详解二(信号分类,信号处理,kill)
    下载windows server ISO(msdn订户下载)
    科2项目攻略
    Centos 7 LVM xfs文件系统修复
    python连接redis sentinel集群
    jquery on() bind()绑定的点击事件在js动态新添加的元素生效
    虚拟化环境下的CentOS7网络环境存在的问题
    石排科目二考场最新攻略
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12538143.html
Copyright © 2011-2022 走看看