zoukankan      html  css  js  c++  java
  • C++实现系统服务暂停、停止、启动

    /*
    名称:系统服务管理
    语言:C++
    作者:由UnixCRoot(CRoot)转载自互联网
    介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码
    */
    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;
    }


     

  • 相关阅读:
    Oracle to_char格式化函数
    电脑快捷键大全
    Failed to create the Java Virtual Machine (Myeclipse或者eclipse启动报错)
    Java 面试题
    UVA1108 Mining Your Own Business
    无向图的连通性
    [NOI Online #2 提高组]子序列问题
    [NOI Online #3 提高组]优秀子序列
    POJ2430 Lazy Cows
    UVA1633 Dyslexic Gollum
  • 原文地址:https://www.cnblogs.com/croot/p/3235122.html
Copyright © 2011-2022 走看看