定义

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

相关API

OpenSCManager():打开服务控制管理器。

CreateService():创建系统服务。

OpenService():打开服务。

StartService():启动服务。

StopService():停止服务。

ControlService():控制服务。

SetServiceStatus():设置服务状态。

代码实例

#include <Windows.h>//获取当前exe程序所在路径
char *GetExeFullPath()
{char *path = new char[1024];memset(path, 0, 1024);if (GetModuleFileName(NULL, path, 1024) != 0){return NULL;}return path;
}//测试创建、启动系统服务
bool TestStartService()
{//打开服务控制管理器SC_HANDLE hScm = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);if (hScm == NULL){return false;}//创建系统服务,参数很多,可查看帮助文档SC_HANDLE hService = CreateService(hScm, "MySerivce", "MyService", SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, GetExeFullPath(), NULL, NULL, "", NULL, "");if (hService == NULL){return false;}//启动系统服务if (StartService(hService, 0, NULL) == false){return false;}//释放句柄CloseServiceHandle(hScm);CloseServiceHandle(hService);return true;
}//测试停止、卸载系统服务
bool TestStopService()
{//获取系统服务控制管理器句柄SC_HANDLE hScm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);if (hScm == NULL){return false;}//打开系统服务,获取服务句柄SC_HANDLE hService = OpenService(hScm, "MyService", SERVICE_ALL_ACCESS);if (hService == NULL){return false;}//查询该系统服务是否正在运行,若在运行中则停止该服务SERVICE_STATUS status;QueryServiceStatus(hService, &status);if (status.dwCurrentState == SERVICE_RUNNING){ControlService(hService, SERVICE_CONTROL_STOP, &status);//如果出错,则返回falseif (status.dwCurrentState != NO_ERROR){return false;}}//如果服务状态为已停止,则卸载该系统服务if (status.dwCurrentState == SERVICE_STOPPED){DeleteService(hService);}//释放句柄CloseServiceHandle(hScm);CloseServiceHandle(hService);
}int main()
{TestStartService();//TestStopService();return 0;
}
该程序主要实现了系统服务的创建、启动、停止、卸载等功能。
成功创建系统服务后,可以打开Windows系统中的SCM(服务控制管理器)进行查看。按住Ctrl+R打开运行窗口->输入“services.msc”打开服务窗口->在右侧服务列表中查找MyService名称的系统服务。

C++创建Windows系统服务相关推荐

  1. 用Visual C#创建Windows服务程序

    一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...

  2. 杂记2:VS2013创建Windows服务实现自动发送邮件

    这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务 ...

  3. Visual C#创建Windows服务程序

    转自:http://www.vchome.net/dotnet/dotnetdocs/dotnet38.htm 一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Wind ...

  4. 怎样把任意exe程序注册成windows系统服务(手动注册服务)

    怎样把任意exe程序注册成windows系统服务(手动注册服务) 1. 要实现这个功能要用到微软提供的两个小工具"instsrv.exe"和"srvany.exe&quo ...

  5. WINDOWS系统服务详解

    1 WINDOWS系统服务详解    --  WINDOWS系统服务详解 <P>1 Alerter 当系统发生故障时向管理员发送错误警报,除非电脑处于局域网,而且配有网络管理员,一 般不需 ...

  6. 【windows service】C# 创建Windows Service(Windows服务)程序

    C# 创建Windows Service(Windows服务)程序 很多年前大概08年做了一个windows桌面程序推送邮件给用户的程序,然后通过windows 计划任务每隔N分钟重复执行. 今天闲暇 ...

  7. 潇洒郎: Python exe程序注册为windows 系统服务

    1. 将python脚本生成exe文件 安装打包工具: pip install pyinstaller 生成exe文件: pyinstaller -F dial.py 如果想noconsole 则加参 ...

  8. 用.NET创建Windows服务

    用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...

  9. 用C#创建Windows服务(Windows Services)

    转载自 hyslove 最终编辑 hyslove Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是 ...

  10. 创建windows窗口并且获得窗口句柄

    创建windows窗口并且获得窗口句柄 代码 import win32gui from win32con import * import ctypes from ctypes import * def ...

最新文章

  1. python变量类型怎么决定的_如何确定python中变量的数据类型
  2. Latex中的一些表格用法总结(二)——行列式的表格,表格的切分和合并
  3. 请汇编高手注释的CompareText
  4. iOS 通过Jenkins 自动构建ipa
  5. 2019春第四周作业软件
  6. linux光盘补救,Linux_忘记root密码时使用Linux系统光盘进行补救的方法,救援模式即rescue ,这个模式主 - phpStudy...
  7. android跨进程事件注入(程序模拟用户输入)
  8. 数值运算pythonmopn_Python SciPy库——拟合与插值
  9. 第一堂TCP/IP课
  10. cisp-pte考试经验分享
  11. java编程进阶类_进阶Java编程(9)反射与类操作
  12. 信道——通信原理笔记(二)
  13. RPLIDAR思岚雷达学习记录--6--matlab处理雷达数据
  14. archlinux什么桌面好_ArchLinux搭建高效便捷的平铺式桌面
  15. 移位寄存器SHIFT RAM IP之模拟图像卷积
  16. 首批小程序出炉,小游戏?
  17. 《心田上的百合花》阅读理解题:心田花开——含答案
  18. linux服务-iptables( snat 和dnat )
  19. stm32 移植java_把Lua移植到stm32上,效果不错! (amoBBS 阿莫电子论坛)
  20. 分享一个有关web时事通讯的网站

热门文章

  1. MySQL InnoDB 锁
  2. 小程序报错提示Unexpected token in JSON at position
  3. 免费专业的linux web应用防火墙国内排名推荐
  4. Excel排位函数RANK的使用方法
  5. Pytorch 微调(Fine-tuning)
  6. VS.NET(C#)-5.18_IIS6架构模型:工作进程(Worker Process)简介
  7. Echarts源码修改
  8. 区块链技术的应用价值了解下
  9. 居家生活|装修避免的坑
  10. 【雅思大作文考官范文】——第七篇: 'dress code' essay