加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++ 安装、删除、启动服务 2013-01-21

(2013-01-29 17:38:04)
标签:

杂谈

//安装服务
BOOL CreateSampleService()
{
      SC_HANDLE schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);   // 打开服务控制管

                                                        //理数据库,并返回服务控制管理数据库的句柄
      if (schSCManager == NULL)
      {
          return FALSE;
      }
      SC_HANDLE schService = CreateService(schSCManager,L"Regprotect",L"Regprotect",
                                           SERVICE_ALL_ACCESS ,
                                           SERVICE_WIN32_OWN_PROCESS,
                                           SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,
                                           L"C:\\Windows\\SysWOW64\\RegProtect\\RegProtect.exe",
                                           NULL,NULL,NULL,NULL,NULL);    //安装服务
      if(schService == NULL)
      {
          return FALSE;
      }
      CloseServiceHandle(schSCManager);    //关闭服务句柄
      CloseServiceHandle(schService);

      StartSampleService();   //启动服务
      return TRUE;
}

 

//删除服务
BOOL DeliteSampleService()
{
      SERVICE_STATUS status;

      SC_HANDLE schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);   // 打开服务控制管

                                                        //理数据库,并返回服务控制管理数据库的句柄

      if(schSCManager == NULL)

      {

          return FALSE;

      }

      SC_HANDLE schService = OpenService(schSCManager, L"Regprotect",

                                         SERVICE_ALL_ACCESS | DELETE);   // 获得服务句柄

      if(schService == NULL)

      {

         return FALSE;

      }

      QueryServiceStatus(schService, &status);  // 获得服务的当前状态

      if (status.dwCurrentState != SERVICE_STOPPED)   // 如果服务不处于停止状态,则将其状态设置为

                                                      //停止状态
           ControlService(schService,SERVICE_CONTROL_STOP, &status);

      DeleteService(schService);    // 删除服务
      CloseServiceHandle(schSCManager);  // 关闭服务句柄
      CloseServiceHandle(schService); 

      return TRUE;
}

 

//启动服务
BOOL StartSampleService()
{
      SERVICE_STATUS status;

      SC_HANDLE schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);   // 打开服务控制管

                                                        //理数据库,并返回服务控制管理数据库的句柄
      if (schSCManager == NULL)
      {
          return FALSE;
      }

      SC_HANDLE schService = OpenService(schSCManager, L"Regprotect",

                                         SERVICE_ALL_ACCESS | DELETE);    // 获得服务句柄
      if(schService == NULL)
      {
          return FALSE;
      }

      QueryServiceStatus(schService, &status);   // 获得服务的当前状态

      if (status.dwCurrentState = SERVICE_STOPPED)   // 如果服务处于停止状态,则将其状态设置为启动

                                                     //状态
            StartService(schService, 0, NULL);   //启动服务

      CloseServiceHandle(schSCManager);   // 关闭服务句柄
      CloseServiceHandle(schService);

      retutn TRUE;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有