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. ...
随机推荐
- linq多表join与group
var query =from a in this.ObjectContext.siteInfo join b in this.ObjectContext.shopInfo on a.siteID e ...
- Effective Objective-C 2.0 — 第一条:了解Objective-C语言的起源
第一条: 了解Objective-C语言的起源 由Smalltalk演化而来,消息型语言的鼻祖(messaging structure)而非 (function calling)函数调用 //Mess ...
- Web Pages - Efficient Paging Without The WebGrid
Web Pages - Efficient Paging Without The WebGrid If you want to display your data over a number of p ...
- php.ini中有关安全的设置
php的默认配置文件在 /usr/local/apache2/conf/php.ini,通过为了使你的web更安全,我们需要对php.ini进行一些设置! (1) 打开php的安全模式 php的安全模 ...
- Elasticsearch-PHP 索引操作(转)
索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...
- 关于http请求
response的Head值: 200 : 请求已成功,请求所希望的响应头或数据体将随此响应返回 304 : Not Modified 客户端有缓冲的文档并发出了一个条件性的请求,原来缓冲的文档还 ...
- Ubuntu14.04 LTS更新源
Ubuntu14.04 LTS更新源 不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp ...
- js调用ios的方法
摘要 在做h5应用的时,有时有些功能js并不能实现的特别完美.比如下载进度条或上传文件进度等.如果能调用ios或者android的方法,实现进度,以及文件上传或者下载列表更好一些.如果使用第三方的js ...
- Kali Linux中MySQL重置root密码
参考:使用mysqladmin命令修改MySQL密码与忘记密码 前言:(在Windows的DOS命令行下和在kali Linux下修改方法是一样的)在kali Linux中默认安装了MySQL的最新版 ...
- Linux下查看文件内容的命令
查看文件内容的命令: cat 由第一行开始显示内容,并将所有内容输出 tac 从最后一行倒序显示内容,并将所有内容输出 more 根据窗口大小,一页一页的现实文件内容 less ...