zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    浙大版《C语言程序设计(第3版)》题目集 --总结
    | C语言I作业09
    c语言课本及pta作业中运用到的程序思维
    | C语言I作业08
    团队作业(四):描述设计
    实验三《敏捷开发与XP实践》_实验报告
    MyOD(课下作业,选做)
    实验二《面向对象程序设计》_实验报告
    20175226 2018-2019-2《java程序设计》结对编程-四则运算(第二周-阶段总结)
    20175226 类定义
  • 原文地址:https://www.cnblogs.com/ahuo/p/684249.html
Copyright © 2011-2022 走看看