当前位置:首页 > CN2资讯 > 正文内容

windows修改服务器的java版本

2天前CN2资讯

      用.Net开发Windows服务的方法和步骤在很多文章里都有详细的介绍,相信大家也都会制作Windows服务了。如果还不会,那么请先去网上搜一下,因为本文的假设是您已经会顺利地制作Windows服务了。

历史

      前段时间由于项目的需求,要在Windows里把同样的组件(不同的拷贝)制作成多个不同名称的服务,这些服务完成相同的功能。这下可把我难住了。难道要在开发的代码中一个一个地设置想要的名称,然后编译,然后注册成服务?这样虽然可以完成,但也太fool了,不可取,如果将来要换个名称呢?在重新设置、编译、注册一遍?

困惑 

      分析制作Windows服务的过程,你会发现对于任何一个还没有注册的Windows服务,它就是一个可执行的程序(.exe),而运行注册工具注册Windows服务的时候,它的服务名称已经确定了。似乎是这样:在编译生成服务安装程序的时侯,服务的名称已经确定了。

      再看看Windows服务的项目:有一个xxxService.cs的类,一个xxxServiceInstaller.cs的类

在前一个类中可以设置你的服务的ServiceName,后一个类中指定安装时要安装哪个ServiceName的服务。这两个ServiceName必须相同。

斗争 

      是的,正是ServiceName,而不是Service。

      ServiceName只是指定了要安装服务的名称,而不是那个服务。一个服务应该是个对象,在编译时其实那个对象压根就不存在吧!也就是说至少在编译完成后,没有注册成服务前,指定任何的服务名称(ServiceName)都是骗人的障眼法。

      可以这样设想:在安装时,安装工具产生了一系列的对象以执行安装注册服务的过程,其中就包括了ServiceInstaller的对象,以及Service对象。(这个安装过程是注册Windows服务范畴,与这个服务完成的功能无关。)你不是要构造对象吗?于是,我们可以在ServiceInstaller的构造函数里指定要安装的Service的ServiceName,同时在Service的构造函数里指定自己的ServiceName,只要两者一致就可以让安装过程顺利完成。再仔细看看项目的代码,这两个类设置ServiceName的地方确实在构造函数中。OK,终于有一线生机了。

曙光 

      来个最简单的,用.txt文件来指定服务名称。

      建立一个文本文件ServiceName.txt存放Windows服务的名称。

      在代码中添加一个函数GetServiceName从文件中获取名称:

Code private string GetServiceName() { string serviceName = string.Empty; string fileName = "ServiceName.txt"; if (File.Exists(fileName)) { serviceName = File.ReadAllText(fileName, Encoding.Default); if (string.IsNullOrEmpty(serviceName) || (serviceName.Trim().Length == 0)) serviceName = "我的服务"; } else { serviceName = "我的服务"; } return serviceName; }

      在两个类的构造函数中分别设置ServiceName为GetServiceName()。

编译,设置ServiceName.txt的文本值为“服务一”,注册时,运行InstallUtil.exe WindowsService1.exe,“服务一”注册成功。

      把程序组件拷贝一份到新的目录下,改变ServiceName.txt的文本值为“服务二”,运行InstallUtil.exe WindowsService1.exe,“服务二”注册成功。

      这样我的程序就可以拷贝到天涯海角,然后改变ServiceName.txt的值就可以注册成无数的服务了。

后遗症 

      不过到目前我尚不确定前面那样的“设想”是否正确,姑且如此吧。

 



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/30735.html

    分享给朋友:

    “windows修改服务器的java版本” 的相关文章

    SpartanHost VPS主机评测:高性能与安全性的理想选择

    在我开始探索VPS主机市场时,SpartanHost引起了我的注意。这个公司成立于2013年,自那时起便在行业中扎根,专注于提供高性能的VPS解决方案。他们使用的是基于KVM架构的主机产品,充分满足用户的需求。从他们的运营历史来看,尽管时间不算很久,但SpartanHost凭借其稳定的服务和灵活的选...

    Hostwinds LLC:卓越的网络托管服务与高性价比优势

    Hostwinds LLC成立于2010年,位于美国西雅图。这家公司一直专注于提供多种网络托管服务,包括虚拟主机、虚拟专用服务器(VPS)和独立服务器。在这个竞争激烈的市场中,Hostwinds凭借其独特的优势和不断升级的服务赢得了客户的信赖。我个人认为,Hostwinds的历史反映了它对客户需求的...

    使用Namesilo优惠码注册域名,轻松省钱的秘诀

    Namesilo概述:域名注册的专业选择 要谈到域名注册,我想到的首先就是Namesilo。作为一家成立于2010年的域名注册商,Namesilo吸引了不少用户。我对它的第一印象是专业,尤其是在价格和服务上,使其成为许多人的首选。它的总部位于美国亚利桑那州,作为ICANN认证的注册商,Namesil...

    如何选择便宜的VPS:最佳性能与价格平衡的指南

    在谈论VPS之前,首先要弄清楚它究竟是什么。VPS,或称虚拟专用服务器(Virtual Private Server),是将一台物理服务器划分成多个虚拟服务器的技术。每个虚拟服务器都可以独立运行自己的操作系统,并且能够进行重新启动,这意味着你获得了一种与专用服务器相似的体验,但成本却比全功能的专用服...

    使用Win10一键安装脚本轻松安装SQLite数据库

    一键安装脚本的定义与作用 首先,Win10一键安装脚本是一个自动化脚本,用于在Windows 10操作系统中快速部署和安装程序。想象一下,平时我需要为新安装的系统配置各种软件和工具,单单是手动下载和安装每个程序就已经让我感到疲惫。通过一键安装脚本,我只需要运行一个脚本,就能完成一系列的安装任务。这种...

    如何优化 cloudiplc 网络性能与数据安全策略

    cloudiplc 网络性能优化 在我们讨论 cloudiplc 的网络性能优化之前,先来了解一下它的基本概念和架构。cloudiplc 是一种创新的网络连接方案,它通过将用户的请求智能地路由到离他们最近的数据中心,以实现更快的响应时间和更好的用户体验。这种架构不仅仅依赖于传统的网络协议,还结合了多...