InstallUtil在windows服务中的使用(转)+ 服务安装的注意事项
1、 新建一个Windows Service的方法:
1. 打开Visual Studio 2008新建一个project Solution;
2. 选择Windows->windows Service,修改服务名称:MyFirstService;
3. 在默认窗口Service1中右键Add Install,自动生成两个类。

4. 修改serviceInstaller1的属性:
a)ServiceName =”FirstService”; //设置服务名称
b)StartType = Automatic; //启动的模式有三种:“自动”、“手动”、“禁用”。事实上,在“我的电脑”的“管理”->“服务”中,还有一种模式:“自动(延迟启动)”
c)Modifiers=public;
还有一些属性,比如DisplayName对应下图中的“显示名称”,ServiceName对应下图中的“服务名称”,而(Name)则对
应,这些属性都是可以进行相应的修改的

5. 设置serviceProcessInstaller1组件的属性
1) Account = LocalSystem; //为最大的权限此属性还包括:LocalService、networkService、User(默认状态,如果使用User,则在安装的时候需要提供用户名和密码),如需要详细了解该属性,可以参照:
http://technet.microsoft.com/zh-cn/system.serviceprocess.serviceprocessinstaller.account(VS.90).aspx
2) Modifiers=public;
6. 生成解决方案:选择release模式右键生成解决方案,则在相应的路径当中就会出现MyFirstService.exe文件。
7.使用installutil安装新建好的MyFirstService,方法如下:
一、打开Visual Studio 2008-> Visual Studio Tools-> Visual Studio 2008 Command Prompt。
二、使用命令:installutil (服务的绝对路径),点击运行,即可安装服务。
以下有几个需要注意的问题:
第一:上述二的“服务绝对路径”犹如:e:\新建文件夹\test\MyFirstService \MyFirstService\bin\release\MyFirstService.exe,在这个地方需要注意的是:必须选择release下生 成solution。默认是在debug下生成solution。
第二:针对window7用户,在安装的过程中容易出现的几个错误:
- 使用的电脑不是使用系统管理员的账号登录,则会出现下面的错误。(我已经做过测试),特别是在使用window7的用户特别需要注意,系统默认system账号是“禁用”模式。

- 第二种错误的可能就是服务已经存在,则会出现下面的错误

为了避免这种错误的发生,我们应该在安装服务的时候首先进行第三步(即如果可以的话,首先卸载已存在的服务)。
第三:用命令:installutil /u (服务的绝对路径),点击运行,即可卸载服务。类似地,“服务的绝对路径”犹如:
e:\新建文件夹\test\MyFirstService\MyFirstService\bin\release\MyFirstService.exe。
在卸载一个服务的时候可能会出现以下两种情况:
- 正常情况:服务存在,而且已经启动,运行卸载,效果如下图:

当然,如果服务存在,但未启动,则在卸载的时候不会出现“试图停止服务”这个命令。
- 异常情况:服务不存在,或者二次卸载,则会出现以下情况:

2、 installutil.exe的介绍。(这一项在网上会有很多介绍,在这里只是做了一些简单的综述)
如要详细理解installutil的使用,可参照网址:http://msdn.microsoft.com/en-us/library/50614e95(vs.71).aspx
当然,installutil事实上可以用于安装有.NET开发的所有应用安装程序。当我们在Visual Studio 2008 Command Prompt中输入命令:installutil /h的时候,会打开installutil的所有帮助文档,如下:

第一个为默认情况下为安装程序所在的绝对路径和安装文件名,类似前面所提到的。而/LogFile则是说明如果在安装的过程中,需要输出相应的安装日志的时候给定的日志文件的路径和日志文件名。当然我们最主要的是“安装”和“卸载”命令。
Notes:
1. 以管理员权限打开VS,通过提升权限,可以解决注册服务的时候Security exception的问题。
2. 可以在项目的PostBulid里面添加下列2行用于自动注册服务(编译后即可)
先删除服务:
%systemroot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u $(TargetPath)
再添加服务:
%systemroot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe $(TargetPath)
InstallUtil在windows服务中的使用(转)+ 服务安装的注意事项的更多相关文章
- 如何删除WINDOWS中服务中不再使用的服务?
右键选择那个不需要的服务,点击属性,看到"服务名",拷贝下来 然后通过管理员的方式进入到控制台,输入 sc delete "你刚才拷贝的服务名" ,就行了,注意 ...
- 宿主在Windows Service中的WCF(创建,安装,调用) (host到exe,非IIS)
1. 创建WCF服务 在vs2010中创建WCF服务应用程序,会自动生成一个接口和一个实现类:(IService1和Service1) IService1接口如下: using System.Ru ...
- QC学习一:Windows环境中Quality Center 9.0安装详解
一.安装前准备 1.安装环境:windows XP.SQL Server2005 2.准备安装文件:Quality Center 9.0 (qc10以上,包括qc10,qc只支持安装在服务器操作系统上 ...
- Windows 下 exe 服务注册到 service 服务中
window 下注册 exe 程序.添加到 服务中. window 注册服务方式 一. regsvr 方式 直接在 程序目录执行: Regsvr 32 命令是Windows中控件文件 ( 如扩展名为D ...
- Windows平台下在服务中添加MySQL
widows下查看服务 1.桌面计算机-->右键-->管理-->计算机管理(本地)--->服务和应用程序-->服务 2.运行 中输入 services.msc 在服务中添 ...
- 如何在Windows Server 2008服务器中把Tomcat启动程序添加到服务中
转自:https://blog.51cto.com/zdytesting/2314093 tomcat所在的bin目录: 添加服务: service install service_name 移除服务 ...
- .Net Core 项目在Windows服务中托管【转载】
本文以创建的WebAPI项目为例子进行讲解(本人使用VS Code创建的项目) 1.使用VS Code创建WebAPI项目(项目名称自定义) 2.在创建的项目csproj项目文件中,确认是否存在运行时 ...
- Windows 64位环境的Java 服务配置
有个任务,需要远程起调Windows64服务器下的程序,那么需要在Windows服务器中注入一个deamon服务,都知道Linux环境做成后台服务非常简单,nohup &很快能解决问题,但wi ...
- Windows系统中Oracle11g R2 版本数据库卸载
1. 停止"服务"中所有的ORCLE服务. 进入服务的方法很多,如: (1)在运行中输入services.msc,然后找到所有跟oracle 有关的服务. (2)开始->设置 ...
- WSL2:在Windows系统中开发Linux程序的又一神器
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
随机推荐
- asp.net(C#)页面事件顺序
asp.net(C#)页面事件顺序 http://www.cnblogs.com/henw/archive/2012/02/09/2343994.html 1 using System.Data; ...
- Effective Objective-C 2.0 — 第11条:理解 objc_msgSend 的作用
消息由接受者.选择子及参数构成.给某对象“发送消息” (invoke a message) 也就相当于在该对象上“调用方法”(call a method) 发给某对象的全部信息都要由“动态消息派发系统 ...
- java中如何将字符串数组转换成字符串(转)
如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法 String[] str = {"abc", "bcd", "def"} ...
- asp.net中使用单例
摘要 有这样一个service,需要运行的asp.net站点上,但要保证这个实例是唯一的.单例用来启用聊天机器人,保证唯一,以免启动多个,造成客户端发送消息的时候,会造成每个机器人都发送消息,app收 ...
- jsf简介
JSF实现了基于web的以下三个梦想 1.java程序员不必顾虑HTTP的细节,可以按照原本熟悉的事件驱动模型来设计后台系统,并通过一个能担保数据类型无误的数据传递接口将后台系统与前台界面结合在一起. ...
- CF453C Little Pony and Summer Sun Celebration (DFS)
http://codeforces.com/contest/456 CF454E Codeforces Round #259 (Div. 1) C Codeforces Round #259 (Di ...
- ExtJS -- Grid 文本居中显示
Reference: http://stackoverflow.com/questions/6561120/extjs-4-apply-defaults-to-all-columns-in-a-gri ...
- Kali Linux中MySQL重置root密码
参考:使用mysqladmin命令修改MySQL密码与忘记密码 前言:(在Windows的DOS命令行下和在kali Linux下修改方法是一样的)在kali Linux中默认安装了MySQL的最新版 ...
- [译]Mongoose指南 - 中间件
中间件是一些函数, 当document发生init, validate, save和remove方法的时候中间件发生. 中间件都是document级别的不是model级别的. 下面讲讲两种中间件pre ...
- 基于AngularJS的过滤与排序
前面了解了AngularJS的使用方法,这里就简单的写个小程序,实现查询过滤以及排序的功能. 本程序中可以了解到: 1 angularjs的过滤器 2 ng-repeat的使用方法 3 控制器的使用 ...