• WindowsService 创建.安装.部署


    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的版本写错了..

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

  • 相关阅读:
    boost::asio::error的用法浅析
    boost::asio::buffer
    sqlserver2008安装图解
    WCF 聊天室程序代码详细讲解教程
    C#中使用Property Grid(属性面板)控件
    TXT>Access 使用DAO数据源!(VB Code)
    读取INI文件 VbCode
    Pet Shop 4
    模式行为型
    C#编程规范
  • 原文地址:https://www.cnblogs.com/iiwen/p/4415383.html
Copyright © 2020-2023  润新知