• api控制系统服务


    SC_HANDLE  sc=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); //服务控制器

    //获得服务状态
    DWORD get_srvst(SC_HANDLE sc)
    {

     SC_HANDLE  schService;
     
    if (NULL == sc) 
        printf(
    "OpenSCManager failed (%d)\n", GetLastError());

     schService 
    = OpenService(
            sc,          
    // SCM database 
            L"sharedaccess",          // service name
            SERVICE_ALL_ACCESS); 
     
        
    if (schService == NULL) 
        

      printf(
    "OpenSCManager failed (%d)\n", GetLastError());
            
    return 0
        }

     SC_STATUS_TYPE st;
     LPSERVICE_STATUS_PROCESS buf;
     buf
    =(LPSERVICE_STATUS_PROCESS) LocalAlloc(LPTR, 1024);
     DWORD dwneed;
     
    if(QueryServiceStatusEx(schService,SC_STATUS_PROCESS_INFO,(LPBYTE)buf,1024,&dwneed))
     
    {
      
    return buf->dwCurrentState;
     }


     
    return 0;

     
    }


    int Open_Service(SC_HANDLE sc)
    {


        SC_HANDLE  schService;
        
    if (NULL == sc) 
        printf(
    "OpenSCManager failed (%d)\n", GetLastError());

        schService 
    = OpenService(
            sc,          
    // SCM database 
            L"sharedaccess",          // service name
            SERVICE_ALL_ACCESS); 
     
        
    if (schService == NULL) 
        

            printf(
    "OpenSCManager failed (%d)\n", GetLastError());
            
    return 0
        }




        
    if (!StartService(
                schService,  
    // handle to service 
                0,           // number of arguments 
                NULL) )      // no arguments 
        {
            
    return 0
        }

        
    else 
        
    {
            printf(
    "Service start pending.\n"); 
        }

        
        CloseServiceHandle(schService);
        
    return 0;
    }

    int Close_Service(SC_HANDLE sc)
    {
        
        SC_HANDLE  schService;
        
    if (NULL == sc) 
        printf(
    "OpenSCManager failed (%d)\n", GetLastError());

        schService 
    = OpenService(
            sc,          
    // SCM database 
            L"sharedaccess",          // service name
            SERVICE_ALL_ACCESS); 
     

        
    if (schService == NULL) 
        

            
    return 0
        }

        SERVICE_STATUS ssStatus; 

        ControlService(schService,SERVICE_CONTROL_STOP,
    &ssStatus);
        CloseServiceHandle(schService);
    }
    dwCurrentState
    Current state of the service. This member can be one of the following values.
    Value Meaning
    SERVICE_CONTINUE_PENDING
    0x00000005
    The service continue is pending.
    SERVICE_PAUSE_PENDING
    0x00000006
    The service pause is pending.
    SERVICE_PAUSED
    0x00000007
    The service is paused.
    SERVICE_RUNNING
    0x00000004
    The service is running.
    SERVICE_START_PENDING
    0x00000002
    The service is starting.
    SERVICE_STOP_PENDING
    0x00000003
    The service is stopping.
    SERVICE_STOPPED
    0x00000001
    The service is not running.
  • 相关阅读:
    Python全栈day10(基础知识练习题)
    Python全栈day10(基本数据类型及其常用方法)
    Python全栈day10(运算符)
    CentOS 添加常用 yum 源(转)
    CentOS yum源设定使用方法的整理(转)
    centos6.6安装php5.3.3(2015/3/4)
    centos6.6升级安装MySQL5.5(2015/3/4)
    vi/vim显示中文字符并且去掉^M的方法
    ecmall2.3.0 前后台样式等无效,导致前台页面显示不正常问题解决
    ecmall页面空白解决方案(转)
  • 原文地址:https://www.cnblogs.com/ahuo/p/684249.html
Copyright © 2020-2023  润新知