windows服务的用法很适合用于一些长期跑的项目..不需要人工操作..不需要服务器一直登陆..很方便..

不说废话..直接开整..

启动VS2012..创建Windows服务项目..

确定..创建成功..这个样子..

右边的这个视图窗口是项目创建时默认给的一个窗体..别的教程里说的右键 -->  添加安装程序..其实是说的这里..我找了半天..

甚至还自己建了一个类..命名为ProjectInstaller.cs..哎..真是傻的可爱..别学我..

就在这个页面上点右键..添加安装程序...

点击后果会在项目中增加几个文件..最显著的就是 ProjectInstaller.cs...这个里边包含了安装服务时需要的东东..

你会发现在ProjectInstaller.cs文件中多了两个控件..


这两个控件我们需要调整一下属性..

serviceProcessInstaller1

ServiceProcessInstall安装一个可执行文件,该文件包含扩展 ServiceBase 的类。该类由安装实用工具(如 InstallUtil.exe)在安装服务应用程序时调用。

在这里主要是修改其Account属性。ServiceAccount指定服务的安全上下文,安全上下文定义其登录类型。

说白了..就是调整这个系统服务的归属者..如果你想只有某一个系统用户才可以使用这个服务..那你就用User..并且制定用户名和密码,如果你是一个公用的服务..譬如是跑邮件EDM的..那就可以用LocalSystem..

各参数定义(摘自Kein):

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

serviceInstaller1

(摘自Kein): ServiceInstaller安装一个类,该类扩展 ServiceBase 来实现服务。在安装服务应用程序时由安装实用工具调用该类。

在这里主要修改其StartType属性。此值指定了服务的启动模式。

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

另外需要调整的是

ServiceName  服务在服务列表里的名字

Description    服务在服务列表里的描述

DisplayName  向用户标示的友好名称..没搞懂..一般都跟上边的ServiceName保持一致..

保存..服务的基础设置就完成了..剩下的就是你编写业务代码了..

那个没啥说的..简单叙述一下..

    public partial class Service1 : ServiceBase
{
log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public Service1()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
log.Info("服务成功启动了!!");
} protected override void OnStop()
{
log.Info("服务被关闭了!!");
}
}

需要重写  OnStart 和OnStop 两个方法..

我们只是用日志记录一下..表示成功了就行..

然后是服务的安装..我个人建议是用命令行来安装..轻量级..不复杂..

也不需要什么VS的命令行工具..直接打开运行CMD就好..输入下边的地址..要注意橘色部分的路径..这个要看你的服务是用的多少的版本..也有可能是V2.0.50727..

C:\Users\馬>C:\WINDOWS\MICROSOFT.NET\FRAMEWORK\V4.0.30319\INSTALLUTIL.EXE D:\HelloWindowService\Bin\Debug\HelloWindowService.exe

后边绿色的字体是我的项目所在位置..你需要写成你自己的..保证路径正确的话..安装一般是没有问题的..

如果有问题..你可以试试是不是自己当前的账户权限比较低或者是FrameWork的版本写错了..

基本到了这里最大的难题就已经解决了..有什么疑问可以在本文下留言..

WindowsService 创建.安装.部署的更多相关文章

  1. VS 安装部署项目自解压程序解压后按顺序执行多个程序

    这篇blog介绍了如何用VS创建安装部署方案,以及如何制作自解压程序.然后我的程序中需要解压后按照顺序先后安装2个exe.winrar的解压后执行,虽然可以用分号填写多个应用,但貌似是同时执行的.为了 ...

  2. 【Android Studio安装部署系列】三十六、从Android Studio3.1.4升级到Android studio3.2【以及创建android p模拟器(未成功)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 因为想要使用Android P模拟器,所以需要将Android Studio升级到3.2版本以上. 按照官网的说法:参考<ht ...

  3. C#创建安装、卸载部署程序

    分享3: 需求:对已经开发的应用程序进行安装封装操作,即创建安装.卸载部署程序: 分析:程序的开发是为了在不同的人在不同的机器上使用,为了使不同机器使用该软件就需要见程序安装包,并且保证安装包中必须包 ...

  4. 升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  5. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  6. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  7. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  8. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  9. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

随机推荐

  1. js截取文件的名称

    var str = 'aaa.fda.asp'; var arr = str.split('.');//通过\分隔字符串,成字符串数组 var last= arr[arr.length - 1];// ...

  2. Spark MLib 基本统计汇总 2

    4. 假设检验 基础回顾: 假设检验,用于判断一个结果是否在统计上是显著的.这个结果是否有机会发生. 显著性检验 原假设与备择假设 常把一个要检验的假设记作 H0,称为原假设(或零假设) (null ...

  3. shell 常用小命令总结

      1. 重命名 1) 较简单的处理命令:mv 原文件名 新文件名 如:mv myFile newName                           ###  将MyFile重命名为newN ...

  4. 71.Android之长连接实现

    转载:http://blog.csdn.net/qq_23547831/article/details/51690047 本文中我们将讲解一下App的长连接实现.一般而言长连接已经是App的标配了,推 ...

  5. golang学习之旅:方法、函数使用心得

    假设要在$GOPATH/pkg/$GOOS_$GOARCH/basepath/ProjectName/目录下开发一个名为xxx的package.(这里basepath指的是github.com/mic ...

  6. BZOJ1040 [ZJOI2008]骑士

    Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战 ...

  7. malware analysis、Sandbox Principles、Design && Implementation

    catalog . 引言 . sandbox introduction . Sandboxie . seccomp(short for secure computing mode): API级沙箱 . ...

  8. iOS GCD中的dispatch_group

    假如有一组任务,A,B,C,D,其中ABC是可以并行的,D是必须在ABC任务完成后再执行的. (举个场景,比如吃饭前必须先做菜.做饭和买饮料,然后才能开吃) 1.关于ABC的并行: 采用多线程的方式就 ...

  9. Viewprot meta学习笔记

    viewprot屏幕尺寸,专为移动页面设计 参数 <meta name="viewport" content="height,width,initial-scale ...

  10. 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 5 Window to a Wider World

    Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...