使用WinSW工具将exe注册为window服务
下载工具WinSW(工具在GitHub上 打不开就需要魔法VPN)
文件准备
将以下文件放在同一个目录(例如:WebSocketService
文件夹)中:
WebScoket.exe
WinSW-x64.exe
WebScoketService.xml ← 服务配置文件
install_service.bat ← 安装脚本
uninstall_service.bat ← 卸载脚本
✅ Step 1: 服务配置文件(WebScoketService.xml)
⚠️ 注意:WinSW-x64.exe 文件名与 XML 配置文件前缀必须一致!
即WebScoketService.xml
对应WebScoketService.exe
<service><id>WebScoketService</id><name>WebScoketService</name><description>WebSocket service running with Launch4J executable</description><!-- 启动的目标程序 --><executable>WebScoket.exe</executable><!-- 工作目录(可省略,如果默认就是当前目录) --><workingdirectory>.</workingdirectory><!-- 输出日志 --><logpath>logs</logpath><log mode="roll-by-size"><sizeThreshold>10240</sizeThreshold> <!-- 10MB --><keepFiles>5</keepFiles></log><!-- 如果需要设置环境变量 --><!--<env name="JAVA_HOME" value="C:\Program Files\Java\jdk-17" /><env name="PATH" value="%PATH%;C:\Program Files\Java\jdk-17\bin" />-->
</service>
✅ Step 2: 安装脚本(install_service.bat)
@echo off
set SERVICE_NAME=WebScoketService
set SERVICE_EXE=%SERVICE_NAME%.exeecho [INFO] 正在安装服务 %SERVICE_NAME%...
"%~dp0%SERVICE_EXE%" installecho [INFO] 启动服务...
sc start %SERVICE_NAME%echo.
echo [SUCCESS] 安装并启动完成。
pause
✅ Step 3: 卸载脚本(uninstall_service.bat)
@echo off
set SERVICE_NAME=WebScoketService
set SERVICE_EXE=%SERVICE_NAME%.exeecho [INFO] 停止服务...
sc stop %SERVICE_NAME%echo [INFO] 卸载服务...
"%~dp0%SERVICE_EXE%" uninstallecho [SUCCESS] 服务卸载完成。
pause
✅ 使用说明
-
把你打包好的
WebScoket.exe
和WinSW-x64.exe
重命名为WebScoketService.exe
。 -
确保有对应的
WebScoketService.xml
文件。 -
右键以管理员身份运行
install_service.bat
。 -
若失败,请查看生成的
logs\*.log
日志文件。
相关文章:
使用WinSW工具将exe注册为window服务
下载工具WinSW(工具在GitHub上 打不开就需要魔法VPN) 文件准备 将以下文件放在同一个目录(例如:WebSocketService 文件夹)中: WebScoket.exe WinSW-x64.exe WebScoketService.xml ← 服务配置文件 install_service.bat ←…...
远程命令执行RCE概述
远程命令执行RCE诞生于1997年,比SQL注入早1年,据说当时的程序员发现在网站里可以随意的删除网页,就像删除本地文件一样简单,但是这种场景相对不多,因此没有SQL注入广泛,早期的web攻击像现在的护网一样&…...
在 .NET 8 开发的WinForms 程序中展示程序版本号的几种方式
前言 欢迎关注dotnet研习社,今天我们讨论一个Winform开发中的一个常见的需求内容“关于程序的版本号显示”。 在 WinForms 桌面应用程序开发中,向用户显示当前程序的版本号是一个常见的需求,尤其是在产品发布、更新提示或技术支持场景中尤为…...
[特殊字符] Spring Cloud 微服务项目中 common 模块依赖导致网关启动失败的排查与解决
在进行微服务开发时,我们通常会抽取一个 common 公共模块,封装一些通用配置类、工具类、拦截器、常用组件依赖等,供多个微服务共享使用。 但近期在实际开发中,出现了一个典型问题:在 Gateway 网关模块中引入 common 后…...
Java SpringMVC 和 MyBatis 整合关键配置详解
目录 一、数据源配置二、MyBatis 工厂配置三、Mapper 扫描配置四、SpringMVC 配置五、整合示例实体类Mapper 接口Mapper XML 文件Service 类控制器JSP 页面六、总结在 Java Web 开发中,SpringMVC 和 MyBatis 是两个常用框架。SpringMVC 负责 Web 层的请求处理和视图渲染,MyBa…...
24.(vue3.x+vite)引入组件并动态挂载(mount)
示例截图 组件代码: <template><div><div>{{message }}</div>...
Linux 软件包|服务管理
rpm 指令备注rpm -qa查看已安装软件,可以结合grep过滤查找rpm -e firefox卸载firefoxrpm -ivh firefox-115.12.0-1.el7.centos.i686.rpm安装gcc(只能离线安装) yum 能够从指定的服务器自动下载 RPM 包并且安装 指令备注yum list列出所有可…...
前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
前端实现本地文件上传与预览(PDF格式展示)不走后端接口 实现步骤 第一步:文件选择 使用前端原生input上传本地文件,或者是el-upload组件实现文件选择功能,核心在于文件渲染处理。(input只不过可以自定义样…...
TestNG接口自动化
第一章、 Rest assured接口测试框架 一、概述 接口自动化的框架,主要是用来做接口自动化测试,返回的报文都是JSON 语法比较简单,只需要掌握常用的方法 用例运行的速度非常快 断言的机制 Json 封装相关方法,jsonpath,x…...
Parasoft C++Test软件单元测试_实例讲解(指针类型的处理)
系列文章目录 Parasoft C++Test软件静态分析:操作指南(编码规范、质量度量)、常见问题及处理 Parasoft C++Test软件单元测试:操作指南、实例讲解、常见问题及处理 Parasoft C++Test软件集成测试:操作指南、实例讲解、常见问题及处理 进阶扩展:自动生成静态分析文档、自动…...
ngx_http_keyval_module动态键值管理
一、模块安装与验证 检查模块是否可用 nginx -V 2>&1 | grep --color -o ngx_http_keyval_module如果看到 ngx_http_keyval_module,说明模块已编译进 NGINX。 若未找到,请联系你的 NGINX 供应商,获取商业版或重新编译并启用该模块&am…...
面试篇:Spring MVC
基础概念 什么是Spring MVC? Spring MVC 是 Spring Framework 提供的一个基于 Servlet 的 Web 框架,属于 MVC(Model-View-Controller)架构的一种实现。它通过 DispatcherServlet 作为前端控制器,对请求进行分发和调度…...
C++初阶-string类的模拟实现3
目录 1.string::find(char ch,size_t pos0) const的模拟实现 2.string::find(const char* str,size_t pos0) const的模拟实现 3.string::size() const和string::capacity() const的模拟实现 4.string::operator[] (size_t pos)和string::operator[] (size_t pos) const的模拟…...
接口出现 请求参数格式错误 的解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理…...
MYSQL时间函数、group by 和partition by的区别、组内编号leetcode学习
mysql时间函数 select now(); --当前时间 select current_date() --当前日期 select current_timestamp --同now()select date(2025-04-14 12:34:56) --提取日期部分:2025-04-14 select datediff(2025-4-14,2025-04-10) 日期相差四天 select date_sub(2024-04-14,…...
OpenCV 的 CUDA 模块中用于将一个多通道 GpuMat 图像拆分成多个单通道图像的函数split()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::split 是 OpenCV CUDA 模块中的一个函数,用于将一个多通道的 GpuMat 图像拆分成多个单通道的 GpuMat 图像。这个函数是 CP…...
吴恩达机器学习笔记:单变量线性回归
通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果房子是 1250 平方尺大小,你要告诉…...
UI自动化测试框架:PO 模式+数据驱动
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1. PO 设计模式简介 什么是 PO 模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成…...
NestJS 知识框架
一、核心概念 1. 架构基础 基于 Express/Fastify 的 Node.js 框架 采用模块化设计 使用 TypeScript 构建(也支持 JavaScript) 借鉴 Angular 的设计理念 2. 主要组件 模块 (Module): 应用的基本组织单元 控制器 (Controller): 处理 HTTP 请求 服务…...
Porting Linux to a new processor architecture, part 1: The basics
Although a simple port may count as little as 4000 lines of code—exactly 3,775 for the mmu-less Hitachi 8/300 recently reintroduced in Linux 4.2-rc1—getting the Linux kernel running on a new processor architecture is a difficult process. Worse still, the…...
Dagster Pipes系列-1:调用外部Python脚本
本文是"Dagster Pipes教程"的第一部分,介绍如何通过Dagster资产调用外部Python脚本并集成到数据管道中。首先,创建Dagster资产subprocess_asset,利用PipesSubprocessClient资源执行外部脚本external_code.py,实现跨进程…...
北京傲云源墅——区域价值腾飞的高端之选
在北京这座繁华都市中,房产的价值往往与区域的发展潜力息息相关。而傲云源墅项目,正位于极具价值的孙河墅区,这片土地正发生着令人瞩目的蝶变。近年来,孙河区域的崛起引人注目。2025 年 3 月,北京朝阳区平房乡黄杉木店…...
扩展:React 项目执行 yarn eject 后的 package.json 变化详解及参数解析
扩展:React 项目执行 yarn eject 后的 package.json 变化详解及参数解析 什么是 yarn eject?React 项目执行 yarn eject 后的 package.json 变化详解1. 脚本部分 Scripts 被替换2. 新增构建依赖 dependencies(部分)3. 新增 Babel …...
编写一个处理txt的loader插件,适用于wbepack
处理txt的webpack的loader插件 编写一个处理txt的loader插件,适用于wbepack 编写一个处理txt的loader插件,适用于wbepack 实现一个处理txt的插件,给文本每行前后添加**** module.exports function txtLoader(content) {// 确保 Loader 是异…...
高速边坡监测成本高?自动化如何用精准数据省预算?
高速边坡自动化监测解决方案 一、边坡监测的概述 1.1 边坡监测的背景 我国山地丘陵约占国土面积的65%,且地质地貌复杂,气候类型多样,构成活动频繁,自然灾害隐患多,分布广。而且近年来由于高速公路边坡滑坡灾害引发的事…...
SysAid On-Prem XML注入漏洞复现(CVE-2025-2776)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…...
WEB安全--RCE--webshell bypass2
继WEB安全--RCE--webshell bypass的补充: 六、PHP反序列化 webshell: <?php $s unserialize(a:2:{i:0;O:8:"stdClass":1:{s:1:"a";i:1;}i:1;r:2;}); $c "123"; $arr get_declared_classes(); $i0;for($i;$i<c…...
Spark处理过程-转换算子和行动算子
(一)RDD的处理过程 RDD经过一系列的“转换”操作,每一次转换都会产生不同的RDD,以供给下一次“转换”操作使 用,直到最后一个RDD经过“行动”操作才会真正被计算处理。 1.延迟。RDD中所有的转换都是延迟的&…...
Spring Boot 配置文件敏感信息加密:Jasypt 实战
目录 1. 为什么需要加密配置文件? 2. Jasypt 快速集成 2.1 在xml文件中添加 Maven 依赖 2.2 生成加密字符串 编辑 编辑 3. 安全最佳实践 4. 常见问题 Q1:加密后启动报错? Q2&…...
c++STL-vector的模拟实现
cSTL-vector的模拟实现 vector的模拟实现基本信息构造函数析构函数返回容量(capacity)返回元素个数(size)扩容(reserve和resize)访问([])迭代器(**iterator**)…...
【Python 变量类型】
Python 是一种动态类型语言,变量类型在运行时自动确定,无需显式声明。以下是 Python 中核心变量类型的分类与用法详解: 一、基本数据类型 1. 数值类型 整数 (int) 支持正负数、零和二进制/八进制/十六进制表示: a 42 b 0o52 #…...
2.2 微积分的解释
第一阶段:曲直转化的数学革命 原始困境: 几何局限:古希腊几何仅能计算矩形/三角形等直线图形面积现实需求:17世纪弹道轨迹、行星轨道等曲线相关计算需求激增关键矛盾:直线数学工具(如毕达哥拉斯定理&…...
如何使用Selenium?
Selenium 是一个用于 Web 自动化测试 的开源工具套件,支持多种浏览器和编程语言。它最初是为测试 Web 应用而设计,但也被广泛用于 网页数据抓取 和 自动化操作。 Selenium 的核心组件 Selenium WebDriver 直接控制浏览器,模拟用户操作&…...
SVN 中文路径访问报错(权限已正确分配)
问题:SVN 中文路径访问报错(权限已正确分配) 原因: 1、URL特殊字符未转义 路径中包含空格、中文括号()等特殊符号,未进行URL编码 中文括号()示例:(设计)需转为%28%E8%AE%BE%E8%AE%A1%29,空格需…...
【Python 基础语法】
Python 基础语法是编程的基石,以下从核心要素到实用技巧进行系统梳理: 一、代码结构规范 缩进规则 使用4个空格缩进(PEP 8标准)缩进定义代码块(如函数、循环、条件语句) def greet(name):if name: # 正确缩…...
讲讲git 和svn
讲讲git 和svn 目录Git到底是什么?它该怎末用?核心概念基础操作1. 仓库的创建2. 文件的提交工作流程3. 分支管理4. 远程仓库操作 进阶操作实际应用建议**基本用法****常用命令的帮助示例****帮助文档的结构****替代方法****练习建议****核心概念****与Gi…...
运用数组和矩阵对数据进行存取和运算——NumPy模块 之四
目录 NumPy模块介绍 3.4 NumPy 数组重塑与转置 3.4.1 操作机制的理论逻辑 3.4.2 一维数组的重塑 3.4.3 多维数组的重塑 3.4.4 数组的转置操作 3.4.5 知识点总结与课程回顾 3.4.6 课后练习题 NumPy模块介绍 NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行…...
机器学习第六讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列
机器学习第六讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:…...
服务器多JAR程序运行与管理指南
在同一台服务器上同时运行多个JAR程序是完全可以的,但需要注意以下几点以确保稳定性和性能: 关键注意事项 端口冲突 如果JAR程序是网络服务(如Web应用),确保每个程序监听不同的端口(例如:8080、…...
vue实现进度条带指针
效果最终 function calculatePointerPosition(value) {if (value < 2.6) return 12.5; // 非常差位置if (value < 5.1) return 37.5; // 较差位置if (value < 7.1) return 62.5; // 良好位置return 90; // 非常满意位置 }function getStatusText(value) {if (valu…...
【C++】智能指针
前言 上文我们学到了C11的异常,了解到了C与C语言处理错误的区别,异常的特点在于抛出与接收。【C11】异常-CSDN博客 本文我们来学习C中的下一个功能:智能指针 1.智能指针的使用场景 在上文我们知道了抛异常的知识,抛异常的“抛”这…...
Adobe Acrobat pro在一份PDF中插入空白页
在Adobe Acrobat pro中先打开我们的PDF文件; 用鼠标点击需要插入空白页处的上一页; 然后如下图操作: 默认会在光标处的下一页插入一张空白页,你也可以修改插入页的页码或者向前一页插入...
Oracle adg环境下调整redo日志组以及standby日志组大小
1.在adg环境中,调整redo日志组大小以及standby日志组大小主要思路如下: a、先备库增加standby redo 删除老standby redo, b、然后主库增加redo删除老redo, c、备库增加新redo删除老redo, d、最后主库增加standby redo。 #主库 [oracleDB196 ~]$ sql / a…...
Nlog适配达梦数据库进行日志插入
前言 原来使用的是SQLServer数据库,使用Nlog很流畅,没有什么问题。现在有个新项目需要使用麒麟操作系统和达梦数据库,业务流程开发完成之后发现Nlog配置文件中把数据库连接内容修改之后不能执行插入操作。 原Nlog.config配置 <?xml ve…...
记一次redis未授权被种挖矿
#挖矿程序 /etc/httpgd /etc/nnt.sh #大小问 #定时任务名为root /var/spool/cron/root 内容:*/50 * * * * sh /etc/nnt.sh >/dev/null 2>&1 定时任务只有所有者可以写,且chmod修改权限失败。 #先查看定时任务的拓展属性,不可变(i…...
Docker私有仓库实战:官方registry镜像实战应用
抱歉抱歉,离职后反而更忙了,拖了好久,从4月拖到现在,在学习企业级方案Harbor之前,我们先学习下官方方案registry,话不多说,详情见下文。 注意:下文省略了基本认证 TLS加密ÿ…...
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
LeetCode 热题 100_只出现一次的数字(96_136_简单_C) 题目描述:输入输出样例:题解:解题思路:思路一(哈希表):思路二(哈希集合):思路三…...
基于FastAPI框架的日志模块设计
以下是一个基于FastAPI框架设计的日志模块,结合SQLite数据库实现增删改查功能的完整实现方案: 1. 项目结构 your_project/ ├── app/ │ ├── logs/ # 日志模块目录 │ │ ├── models.py # 数据库模型定义 │ │ …...
网页禁止粘贴的解决方法(以学习通网页为例)
网页禁止粘贴的解决方法(以学习通网页为例) 学数据挖掘,学习通过作业的简答题要英文做答还竟然不能复制粘贴,受不了了 下面给出解决办法 1.想着是网页JS的问题,既然不能直接粘贴,那就在源码里面修改 2.于…...
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
一、打包压缩命令 在Linux系统中,打包与压缩是文件管理的核心操作之一。不同的工具适用于不同场景,以下是最常用的命令详解: 1. tar命令 作用:对文件进行打包、解包、压缩、解压。 语法: tar [选项] [压缩包名] […...