首先,来弄两个服务,一个叫“飞机”,一个叫“火车”。

    public class FeiJiService : ServiceBase{public FeiJiService(){ServiceName = "Fei_ji";}}public class HuoCheService : ServiceBase{public HuoCheService(){ServiceName = "Huo_che";}}

用于演示,服务很单,接着,匹配安装器。

    [RunInstaller(true)]public class SelfInstaller : Installer{public SelfInstaller(){ServiceInstaller fjinstaller = new ServiceInstaller();fjinstaller.ServiceName = "Fei_ji";fjinstaller.Description = "国产飞机 -- 008";fjinstaller.DisplayName = "飞机";Installers.Add(fjinstaller);ServiceProcessInstaller processinstaller = new ServiceProcessInstaller();processinstaller.Account = ServiceAccount.LocalSystem;Installers.Add(processinstaller);}}

这里我捣了个鬼,只安装了“飞机”服务,“火车”服务没有安装。

最后,偏偏在Main入口点处运行两个服务。

        static void Main(){ServiceBase[] svs ={new FeiJiService(),new HuoCheService()};ServiceBase.Run(svs);}

咱们就是来验证一下,没有被安装的服务到底能不能运行。

现在,执行installutil xxx.exe进行安装,安装后,在服务管理器中只看“飞机”,没看到“火车”。

显然,目前只能启动“飞机”服务,而“火车”服务不在服务列表中。

看来,只有安装后的服务才能启动。

下面,再次修改安装器代码,把“火车”服务也安装上。

        public SelfInstaller(){ServiceInstaller fjinstaller = new ServiceInstaller();fjinstaller.ServiceName = "Fei_ji";fjinstaller.Description = "国产飞机 -- 008";fjinstaller.DisplayName = "飞机";Installers.Add(fjinstaller);ServiceInstaller hcinstaller = new ServiceInstaller();hcinstaller.ServiceName = "Huo_che";hcinstaller.Description = "国产列车";hcinstaller.DisplayName = "火车";Installers.Add(hcinstaller);ServiceProcessInstaller processinstaller = new ServiceProcessInstaller();processinstaller.Account = ServiceAccount.LocalSystem;Installers.Add(processinstaller);}

然后,把刚才安装的服务卸载掉,执行installUtil /u xxx.exe。

接着再次生成项目,并进行安装,然后,在服务管理器中就看到两个服务了。

这么个简单的实验,再次验证了:一个服务安装器只能用于安装一个服务,一个服务必须进行安装后才能启动

示例代码下载地址

转载于:https://www.cnblogs.com/tcjiaan/p/5149201.html

编写Windows服务疑问2:探索服务与安装器的关系相关推荐

  1. C++语言编写windows服务

    C++语言编写windows服务 1 windows服务 2 DebugView调试工具 3 c语言编写windows服务 4 将程序作为windows服务 1. windows服务 通过快捷键&qu ...

  2. python 编程服务_Python编写Windows Service服务程序

    如果你想用Python开发Windows程序,并让其开机启动等,就必须写成windows的服务程序Windows Service,用Python来做这个事情必须要借助第三方模块pywin32,自己去下 ...

  3. python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...

    Python程序作为Windows服务启动,需要安装pywin32包.下载路径: #-*- coding:utf-8 -*- import win32serviceutil import win32s ...

  4. C#编写Windows服务程序 (服务端),客户端使用 消息队列 实现淘宝 订单全链路效果

    需求: 针对 淘宝提出的 订单全链路 产品接入 .http://open.taobao.com/doc/detail.htm?id=102423&qq-pf-to=pcqq.group oms ...

  5. C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果

    需求: 针对 淘宝提出的 订单全链路 产品接入 .http://open.taobao.com/doc/detail.htm?id=102423&qq-pf-to=pcqq.group oms ...

  6. [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)及防御详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. 51信用卡微服务集成测试自动化探索

    1 简介 51信用卡管家自2015年开始实施微服务架构,是业界较早尝试微服务架构的技术团队,整个团队有幸见证了微服务从最初的个服务试点到全面铺开的过程.架构的演变也催生了自动化测试框架和策略的演变,测 ...

  8. 网格边缘试探--服务网格的探索与实践

    导读 近些年来,以服务网格为代表的云原生技术成为技术开发人员的热门话题.从某种意义来说,云原生运动改变了微服务体系架构中应用程序设计与开发的方方面面.服务网格作为云原生中最典型的技术代表,它解决了以前 ...

  9. 字节跳动在 Rust 微服务方向的探索和实践

    近日, Qcon 全球软件开发大会 2022(上海站)圆满落幕,大会是由 InfoQ 中国主办的综合性技术盛会,近百位国内外技术大咖现场分享前沿技术案例与创新实践.本文整理自字节跳动火山引擎基础架构服 ...

最新文章

  1. Taro -- 微信小程序登录
  2. git 常用命令 方法大全
  3. CSS 选择器参考手册
  4. 上千个电脑文件怎么搬?用Python一键复制移动
  5. mfc如何删除lineto画的_见到过的最完整的CAD实例教程:如何画切割刀片
  6. MySQL 笔记1 -- 安装MySQL及Navicat
  7. javaweb使用 数据库连接池 DBCP,实现对数据库驱动使用优化,多个 action共用一个数据库连接
  8. spring学习(37):注入list类型
  9. 99 网络编程_网络工程师技能图谱,看看你会多少技能
  10. Google AJAX 搜索 API
  11. chrome打开网址但是没有地址栏
  12. GlobalMapper20脚本应用(数据批量自动化处理)
  13. access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
  14. 明星之间的尴尬同框,最萌身高差,最后一个笑喷
  15. mysql 1067_mysql启动错误1067进程意外终止的解决方法
  16. Week 4.2 | Lecture 10 | 多态性设计通用方法、比较器 | CS61B-Spring-2018
  17. P7776 【模板】特征多项式 题解
  18. 讲座录播|Wook-Shin Han教授:Combining Sampling and Synopses with Worst-Case Optimal Runtime and Quality Gua
  19. maven项目子模块相互引用无效
  20. STM32F103通用定时器原理

热门文章

  1. 彩色图像 psnr matlab,psnr rgb matlab程序
  2. java对象比较 hashcode_java基础----比较对象 hashcode 与 equals 与 ==
  3. 【CCCC】L2-012 关于堆的判断 (25分),,手写堆,二叉树编号,向上调整
  4. 【codevs1576】最长严格上升子序列
  5. ajax load html页面,jQuery – AJAX load() 方法 | 菜鸟教程
  6. linux查看log日志在哪,如何查看linux的系统log日志
  7. php伪静态限制网页播放视频,php伪静态后html不能访问怎么办
  8. jquery基础选择器和层次选择器
  9. mysql linux 手动安装mysql服务_Linux手动安装Mysql
  10. 数据结构—队列、循环队列、双端队列