十步完成windows服务的安装
 
可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间。在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用InstallUtil.exe及其参数。事实上,既然要安装.net下制作的windows服务,肯定首先得在目标机器上安装有.net框架。因此,InstallUtil.exe也一定已经存在目标机器上了,因而利用微软的傻瓜式操作就能很好地解决windows服务安装和卸载的问题。

过一段时间估计还要狠狠地利用windows服务来完成一些功能,为了加深印象,又回过头弄了一个名叫HelloWorldService的windows服务,用最简单的demo来完成所有的操作。这个服务的功能,仅仅是在它启动的时候创建一个HelloWorld.txt文件,里边写上Hello World!这几个简单的字母而已。

1、选择Visual C#->Windows->Windows 服务,创建一个HelloWorldService项目。

2、通过ServiceName更改服务的名称为”HelloWorldService“,这是最后在安装服务成功后在服务管理面板出现的名称。

3、将Service1.cs更名为HelloWorldService.cs,在其OnStart方法中写入简单的代码,用来实现创建文件并写入“Hello World!"这几个经典字母。

4、在HelloWorldService.cs的设计界面点右键,在弹出菜单中选择”添加安装程序“。

点击后出来的设计界面上添加了两个控件——ServiceProcessInstall和ServiceInstaller。

ServiceProcessInstall安装一个可执行文件,该文件包含扩展 ServiceBase 的类。该类由安装实用工具(如 InstallUtil.exe)在安装服务应用程序时调用。在这里主要是修改其Account属性。ServiceAccount指定服务的安全上下文,安全上下文定义其登录类型。

LocalService    充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。
LocalSystem    服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。
NetworkService    提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。
User    由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。

ServiceInstaller安装一个类,该类扩展 ServiceBase 来实现服务。在安装服务应用程序时由安装实用工具调用该类。在这里主要修改其StartType属性。此值指定了服务的启动模式。

Automatic 指示服务在系统启动时将由(或已由)操作系统启动。如果某个自动启动的服务依赖于某个手动启动的服务,则手动启动的服务也会在系统启动时自动启动。
Disabled 指示禁用该服务,以便它无法由用户或应用程序启动。
Manual 指示服务只由用户(使用“服务控制管理器”)或应用程序手动启动。

5、上面这些都是安装包最终要安装/卸载的对象。下面就来看看如何用.net制作安装包。
需要在解决方案里边添加一个安装项目,取其名称为HelloWorldSetup。

6、添加工程后,在默认的视图界面右键点击”应用程序文件夹“,选择”添加“->”项目输出“。

在弹出的窗口中选择”主输出“,点击”确定“。

7、上面的步骤定义了最后在应用程序文件夹中包含的内容。下面来定义其他方面的内容。在项目上点右键,选择 视图->自定义操作。

8、出来如下的界面,然后在”自定义操作“上点右键,选择”添加自定义操作“。

在弹出的窗口中双击”应用程序文件夹“。

然后选择”主输出来自HelloWorldService(活动)“,点击”确定“。

选择之后会发现所有的操作下边都添加了刚才选定的项。做到这一步,就能使安装程序卸载时不仅把程序卸载下来,也能把服务卸载下来。

9、接下来在安装项目上点右键,选择”生成“,就能使安装程序正常发布了,成功后会生成两个文件。

把这两个文件拷到目标机器上,双击HelloWorldSetup.msi文件,就可以开始安装服务的征途了。

安装成功后,就可以从服务管理面板中欣喜地看到我们梦寐以求的服务程序了。

不过在我点启动的时候,还出现了一段小插曲——系统报错了。错误如下图:

不过不用急,这种错误可以在系统的”事件查看器“中的”应用程序“选项中查看具体的错误信息。

呵呵,原来是由于服务对于文件系统的操作权限问题所引起的。跑回去一看,发现在第5步中对ServiceProcessInstaller的Account设置成了LocalService,于是乎改成了LocalSystem。然后重新发布安装程序,再重新安装服务,再启动,呵呵,一切正常!

10、最后,一起来欣赏这个windows 服务的成果:

总结:遇到问题的时候一定要冷静,由浅入深系统地了解当前事务,而不要急于求成,这样的效率反而会比较低下

最近写了几个Windows后台服务,总要用命令安装,然后又得跑到服务管理里面找出服务,Start,Stop…… 实在是受不了,就写了个脚本,放上来大家有用的话就拿去用吧!
        安装服务的脚本: (.bat)

@echo off
        echo 开始安装程序
        echo ......
        if exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe  -i %cd%\要安装的服务.exe
        if not exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe
        echo 请安装.Net Framework v1.1.4322
        echo 安装 要安装的服务.exe   程序结束
        echo ……
        pause
        卸载的脚本: 中国网管联盟www_bitscn_com

@echo off
        echo 卸载程序开始
        echo 开始卸载  要安装的服务.exe
        echo ……
        %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe  -u %cd%\要安装的服务.exe
        echo    卸载要安装的服务.exe   完成
        echo ……
        pause
        启动服务:

54ne.com

net start "服务名称"
        关闭服务: 54com.cn

net stop "服务名称"
feedom.net

转载于:https://www.cnblogs.com/dudu837/archive/2009/08/20/1550821.html

十步完成windows服务的安装相关推荐

  1. [图]为C# Windows服务添加安装程序

    最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...

  2. 为C# Windows服务添加安装程序

    首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留言问我),然后要给服务"添加安装程序",如图1所示:(这一步和自己用InstallUtil注册 ...

  3. C# Windows服务自动安装与注册

    [转]http://www.cnblogs.com/jiewei915/archive/2010/11/11/1874827.html 首先,当然是创建一个Windows服务的项目.这个大家应该都知道 ...

  4. MongoDB作为windows服务来安装-2

    首先区官网下载对应版本的安装文件,我本地的环境是win7 bit64  我下载的版本是: mongodb-win32-x86_64-2.4.6 ok, 文件下载后,开始安装,这里要说一下,如果直接启动 ...

  5. windows服务,安装、启动、停止,配置,一个批处理文件搞定

    相对而言,还是比较通用的吧,如果哪位仁兄有更好的实现方式,或者发现有不足之处,还请多多指教.  @echo off echo.------------------------------------- ...

  6. 如何为windows服务添加安装程序(转)

    1.将写好的windows服务切换到设计视图,右键-添加安装程序  2.切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Accoun ...

  7. Windows服务(Service)安装及启动停止方案

    目录 一.创作背景 二.问题解决 2.1 安装Windows service服务 2.2 主方法Main()主方法改写 2.3 安装service服务/卸载service服务 2.4 服务启停 2.5 ...

  8. C#Windows 服务制作安装删除. 用户注销后,程序继续运行 (转载)

    转载自:http://www.cnblogs.com/gfwei/archive/2009/01/16/889878.html 原作者:孤峰皓月 一个程序,需要在服务器上运行,编完了以后,到服务器运行 ...

  9. Windows服务的安装,启动,停止和卸载

    直接贴代码如下 public class RunServices{/// <summary>/// 安装并启动服务/// </summary>/// <param nam ...

最新文章

  1. Spring 数据源配置与应用
  2. 【转载】应读者强烈要求给出《超容易的Linux系统管理入门书》一书的主要知识点...
  3. 通过docker搭建zabbix监控系统
  4. linux 为开发板添加板级文件config.h
  5. Tool之Git:Git的简介、安装、使用方法之详细攻略
  6. 【MM模块】 Goods Receipt 收货 4
  7. 查看MySQL服务端版本
  8. iOS iphone屏幕分析(岂止而大)
  9. 关于xfce中桌面没法显示回收站以及thunar中无法进行卷管理的解决办法
  10. StakeDAO新增Sushiswap流动性奖励计划
  11. 5G 来了,需要更换 SIM 卡吗?
  12. Java 高级数据结构 —— Properties
  13. 外表加载oracle,opengauss外部表插件——oracle_fdw
  14. 性能测试二八原则,响应时间2/5/8原则
  15. 三次hermite插值多项式例题_分段三次Hermite插值及其与三次样条的比较
  16. Python题目:个人所得税计算
  17. sw2014计算机配置,SolidWorks 2014电脑配置要求
  18. paypal php 退款,PayPal的Restful-API方式退款、WEB支付、回调
  19. 台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
  20. 在html中ex是什么单位,前端用到的那些单位

热门文章

  1. 自然语言处理中的Attention Model原理介绍
  2. 如何制作一个有颜色的ListBox,颜色选择下拉列表
  3. 如何使用VS2019编译QT项目
  4. 2. 抓ARP包, 抓PPPoE包
  5. 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
  6. SpringCloud集成Seata精简入门教程
  7. 插上翅膀,让Excel飞起来
  8. golang中的切片及内存拷贝
  9. 如何选择Spark Streaming 的Reveiver和Direct模式
  10. Spark SQL External DataSource外部数据源