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:WINDOWSMICROSOFT.NETFRAMEWORKV4.0.30319INSTALLUTIL.EXE D:HelloWindowServiceBinDebugHelloWindowService.exe
后边绿色的字体是我的项目所在位置..你需要写成你自己的..保证路径正确的话..安装一般是没有问题的..
如果有问题..你可以试试是不是自己当前的账户权限比较低或者是FrameWork的版本写错了..
基本到了这里最大的难题就已经解决了..有什么疑问可以在本文下留言..