VS2022创建Windows服务程序的方法步骤

目录
  • 创建一个Windows服务程序
    • 可以创建Windows服务程序
    • 配置相关信息
    • 脚本可执行文件
    • 执行脚本文件
  • 如果不能创建Windows服务程序
  • 简单地使用
    • 创建一个新的Windows服务
  • 其他的问题
    • 更改代码后需要重新生成
    • 某些命名空间如无效需手动引入
    • 脚本问题

创建一个Windows服务程序

可以创建Windows服务程序

打开VS2022,新建项目。

创建成功后的目录结构如左侧所示,至此项目构建完成。

配置相关信息

添加安装程序

重新生成一下解决方案

至此配置完成。

脚本可执行文件

在工程目录的bin\Debug目录下 新建两个脚本文件–install.bat和uninstall.bat,分别用于安装服务和卸载服务。

install.bat

%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe %~dp0MyFirstWindowsService.exe
Net Start MyFirstService
sc config MyFirstService start=auto
pause

简单说明

uninstall.bat

%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /u %~dp0MyFirstWindowsService.exe
pause

至此配置完成。

执行脚本文件

执行安装脚本文件

可以右键我的电脑 -> 管理 找到服务,在右侧寻找我们自己的服务名称

执行卸载脚本文件

如果不能创建Windows服务程序

如果输入上述条件没有找到可创建的工程,点击安装多个工具和功能。

或者在某个工程的工具里点击获取工具和功能

等待安装完毕,按上面的步骤来即可。

简单地使用

使用本机服务和定时器Timer,简单做一个WindowsService的记录日志。

创建一个新的Windows服务

按照上述步骤创建一个新的Windows服务,名为WindowsService2,并且服务名称为WindowsService2。

我们主要的代码在Service1.cs中写,选中该文件,右键选择查看代码。

记得在App.config中设置键值对 value是日志记录地址 可自行选择。

主要代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.IO;
using System.Configuration;

namespace WindowsService2
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
        //创建定时器
        public System.Timers.Timer ServiceTimer;
        //从App.config中取值 这里我的日志文件位置在F:\log.txt 这里可以自行设置
        public string filePath = ConfigurationManager.AppSettings["FilePath"];
        //主要功能代码在这里写
        protected override void OnStart(string[] args)
        {
            //日志记录方法
            WriteLog(filePath, "启动服务。");
            InitTimer();//初始化的定时器
        }

        protected override void OnStop()
        {
            //停止服务
            WriteLog(filePath , "停止服务。");
        }

        public void InitTimer()
        {
            //设置定时器两秒执行一次
            ServiceTimer = new System.Timers.Timer(2000);
            //执行的操作为Excute
            ServiceTimer.Elapsed += Excute;
            //是否重复执行
            ServiceTimer.AutoReset = true;
            //是否执行Elapsed中的事件
            ServiceTimer.Enabled = true;
        }

        public void Excute(Object o , System.Timers.ElapsedEventArgs e)
        {
            //判断是否执行
            if (!File.Exists(filePath))
            {
                //不存再则创建
                File.Create(filePath);
            }
            //再这里写入日志
            string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            WriteLog(filePath, DateTime.Now.ToString(), "进行了操作。 日志文件路径位于: " + filePath + " AppSetting : " + ConfigurationManager.AppSettings["FilePath"]);
        }
        //写入日志文件
        public static void WriteLog(string path, params string[] s)
        {
            //创建输入流
            System.IO.StreamWriter writer = null;
            try
            {
                writer = new System.IO.StreamWriter(path, true);
                StringBuilder sb = new StringBuilder("");
                for (int i = 0; i < s.Length; i++)
                {
                    sb.Append(" ");
                    sb.Append(s[i]);
                }
                writer.WriteLine(sb.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            finally
            {
                //关闭流 释放资源
                if (writer != null)
                {
                    writer.Close();
                    writer.Dispose();
                }
            }
        }
    }
}

执行结果

其他的问题

更改代码后需要重新生成

每次更改执行代码后需要右键项目 -> 重新生成,否则更改不会生效。

某些命名空间如无效需手动引入

以Configuration的命名空间举例,即使加了using System.Configuration; 也有可能出现ConfigurationManager无法使用,这时我们可以手动引入。

找到工程右侧引入,右键添加引用。

脚本问题

编码问题

创建bat文件时,有时候字符集编码可能不对,导致脚本执行时出现问题,我们可以用Notepad3打开,更改编码格式为ANSI或者UTF-8。

权限问题

执行脚本文件时,需要右键以管理员身份运行,否则就会出现以下情况,导致服务安装失败。

空格问题

如果脚本某些地方出现空格,会导致脚本运行失败。
比如

会导致以下报错

到此这篇关于VS2022创建Windows服务程序的方法步骤的文章就介绍到这了,更多相关VS2022创建Windows服务程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Vs2022环境下安装低版本.net framework的实现步骤

    目录 方法一. 方法二. .net framework4.5 则需要用户自行下载安装包,解压指指定文件夹中即可. Visual Studio 2022 默认.net framework4.8,而4.6~4.7版本的.net framework可以通过方法一安装.而.net framework4.5则不再支持安装,所以通过方法二进行安装. 方法一. 1. 进入控制面板,右键vs2022项,选择[更改],打开如下图 2. 选择[修改]VS2022,再选择[单个组件]菜单,勾选待安装的.net fra

  • VS2022+unity3D开发环境搭建的实现步骤

    目录 1 安装 Unity 2 使用 Visual Studio 调试 1 安装 Unity 安装Unity Hub 安装 Unity 推荐使用 Unity Hub 管理程序(官方管理程序). Unity Hub 是一种管理工具,可让您管理自己的所有 Unity 项目和安装.使用 Hub 可以管理 Unity Editor 的多个安装及其关联组件,创建新项目,以及打开现有项目. 官网下载:https://store.unity.com/cn/download 安装Unity打开Unity Hub

  • VS2022 安装.NET4.5目标包的方法

    众所周知VS2022将不再支持.NET4.5,即使在Visual Studio Installer中也找不到.NET4.5的选项 在不改变项目结构的情况下,要么选择继续使用VS2019,当然博主已经卸掉了,那么还有什么方法呢? 我们可以在NuGet包中下载.NET 4.5的工具包 将PM:后的代码复制进程序包控制台并回车(VS顶部菜单栏 -> 视图 -> 其他 -> 程序包控制台) PM:Install-Package Microsoft.NETFramework.ReferenceAs

  • VS2022远程调试工具的使用方法

    在工作中有时候需要在服务器的环境下远程调试,例如调试微信相关服务的时候. 1. 下载远程调试工具 网址:https://visualstudio.microsoft.com/zh-hans/downloads/ 下载后直接安装至完成. 启动Remote Debugger: 如果只是短时间测试,可以选择无身份验证,为了安全,工具自动设置了空闲时间,即多久没有操作会自动关闭此功能. 2.新建测试项目 建了一个简单的HelloWorld项目,简单几句代码,加上断点. 发布debug到远程服务器. 双击

  • 教你在VS2022 MFC程序中调用CUDA代码的方法

    目录 在VS2022 MFC程序中调用CUDA函数 Pre: 安装好CUDA后VS中该有的效果 将CUDA函数集成到MFC项目中 1. 为项目添加CUDA配置 2. 把cuda代码添加到项目中 3. 导出想调用的cuda函数定义 4. 创建CUDA的调用接口(非必须) 在VS2022 MFC程序中调用CUDA函数 Pre: 安装好CUDA后VS中该有的效果 首先,假设你已经安装好了CUDA,并且成功集成在VS2022中(即新建项目有CUDA项目的选项,如下图所示). 你已经有一个MFC项目和一份

  • 使用vs2022在.net6中调试带typescript的静态页面

    1.新建一个空的web项目 2.设计.建好目录结构 其中ts存放typescript源文件,web为网站根目录,scripts/js存放ts生成的js脚本. index.html为静态网页. 3.新建ts配置文件tsconfig.json,修改内容为: { "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments":

  • VS2022永久配置OpenCV开发环境的实现

    目录 下载opencv 添加环境变量 添加项目属性表 配置属性表 在新的项目中快速配置 配置Release模式 本文通过在VS2022中添加并配置项目属性表,实现Opencv永久配置.在不更改opencv文件位置的前提下,只需要在新的项目中添加配置好的项目属性表即可快速完成opencv配置 下载opencv 访问https://opencv.org/releases/,下载适合自己版本的Windows安装文件.注:尽量不要选择最新版本,而是选择老两个版本的安装包 (最新版本的安装包可能会提示缺少

  • VS2022实现VC++打包生成安装文件图文详细历程

    目录 首先:打开你的项目文件: 其次:添加新建项目: 第三:点击新建项目 第四:点击下一步 第五:创建程序的快捷方式: 第六: 创建“开始菜单条目”: 第七:生成打包安装程序: 第八:安装程序: 后记: 前言: VC++写好的项目程序,无论你的程序是控制台程序,对话框程序,还是文档程序,最终都是要给客户使用的,要让你的程序在其他电脑平台上使用,必须对项目程序进行打包发布,生成安装程序. 如何生成安装程序: 首先:打开你的项目文件: 打开你想要发布的项目文件,这一步很重要. 其次:添加新建项目:

  • 使用VS2022在ASP.NET Core中构建轻量级服务

    目录 1. 使用 VS2022 创建 ASP.NET Core 项目 2. 在 ASP.NET Core 中启用一个轻量级的服务 3. 在 ASP.NET Core 中使用 IEndpointConventionBuilder 扩展方法 4. 在 ASP.NET Core 中使用轻量级服务检索记录 5. 在 ASP.NET Core 中使用轻量级服务创建记录 6. 在 ASP.NET Core 中使用轻量级服务删除记录 7. ASP.NET Core 中轻量级服务的配置方法 8. 在 ASP.N

  • VS2022创建Windows服务程序的方法步骤

    目录 创建一个Windows服务程序 可以创建Windows服务程序 配置相关信息 脚本可执行文件 执行脚本文件 如果不能创建Windows服务程序 简单地使用 创建一个新的Windows服务 其他的问题 更改代码后需要重新生成 某些命名空间如无效需手动引入 脚本问题 创建一个Windows服务程序 可以创建Windows服务程序 打开VS2022,新建项目. 创建成功后的目录结构如左侧所示,至此项目构建完成. 配置相关信息 添加安装程序 重新生成一下解决方案 至此配置完成. 脚本可执行文件 在

  • vue-cli4.x创建企业级项目的方法步骤

    安装脚手架(vue-cli) $ npm install @vue/cli -g //全局安装最新的脚手架 创建项目 $ vue create vue-demo 在创建项目的时候可以使用 $ vue ui 来进行创建,两种方式在创建的时候,直接选择上router和vuex,来进行项目创建 移动端Vant # 通过 npm 安装 $ npm i vant -S # 通过 yarn 安装 $ yarn add vant 我这里都是使用的按需引入,用了 babel-plugin-import 是一款

  • idea2020.1.3 手把手教你创建web项目的方法步骤

    首先: IDEA中的项目(project)与eclipse中的项目(project)是不同的概念,IDEA的project 相当于之前eclipse的workspace,IDEA的Module是相当于eclipse的项目(project). 第一步:配置tomcat (1)点击run下面的edit configuration (2)点击template左边的三角 (3)找到Tomcat Server,有两个选项,第一个表示本地的,第二个表示远程的.这里我们因为在自己电脑,选择本地的 (4)点击c

  • SpringBoot创建Docker镜像的方法步骤

    随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Docker 镜像的能力. 这篇文章的目的,就是为了给大家介绍如何为 Spring Boot 应用程序创建 Docker 镜像. 1. 传统Docker构建 使用Spring Boot 构建 Docker 镜像的传统方法是使用 Dockerfile .下面是一个简单的例子: FROM openjdk:8-j

  • 用Android MenuInflater创建菜单项的方法步骤

    之前在一篇文章中已经讲过了菜单项的创建方法,但是那种方法效率较低,维护不易,现在实现另一种方法创建菜单. MenuInflater,通过此类我们可以轻松的创建菜单项,具体步骤如下: 1.在res/menu/文件夹下,找到main.xml文件,此文件就是我们定义菜单项的地方,在些文件中添加如下菜单项: 复制代码 代码如下: <item android:id="@+id/menu1" android:icon="@android:drawable/alert_dark_fr

  • 用.NET创建Windows服务的方法第1/2页

    译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作者:Mark Strawmyer 我们将研究如何创建一个作为Windows服务的应用程序.内容包含什么是Windows服务,如何创建.安装和调试它们.会用到System.ServiceProcess.ServiceBase命名空间的类. 什么是Windows服务? Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器

  • 使用maven创建web项目的方法步骤(图文)

    目前做的项目使用的是MAVEN来管理jar包,这也是我第一次接触maven,感觉非常好,再也不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载.非常方便.之前比较忙没时间整理,现在整理一下,记录下来,加深印象.当然我们使用maven也只是最基本的,很多其他功能都没有使用到,本篇仅介绍如何创建一个maven项目,不做其他. 环境搭建参考之前一篇博文:http://www.jb51.net/article/131269.htm 下面推荐2个ma

  • c++中创建.in文件的方法步骤

    c++比赛中,总是要求使用文件输入输出的,那么.in/.out文件该怎样创建呢?怎样才能被软件调用呢? 打开任意文件夹,然后右击创建一个文本文档. 如图,点击"查看"(如果是windows7/8/xp,则右击该文本文档,选择属性,在下方寻找"隐藏文件扩展名"并取消勾选) 3. 勾选"文件扩展名"(如已勾选请看下一步) 右击文本文档,选择重命名. 将后缀名改为.in/.out(无需创建.out文件,使用c++时会自动创建),如果有系统提示是否更改,

  • Linux下创建Postgresql数据库的方法步骤

    前言 PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行.因为之前用默认的配置创建pgsql数据库,导致root的占用率达到97%: 所以决定重新创建一次数据库,很多坑又忘了.为了避免以后再忘记,所以决定记录下面,分享出来供大家参考学习,下面来一起看看详细的介绍吧. 创建步骤如下: 创建一个放Data的文件夹,/majestic12/pgsql/data PGDATA = /majestic12/pgsql/

  • 使用IDEA创建SpringBoot项目的方法步骤

    1.打开IDEA,创建新项目,选择Spring Initializr 2.输入Artifact 3.勾选Web 4.点击finish完成 5.进入项目,可以将以下内容删除 pom.xml文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3

随机推荐