在 Windows Server 上部署 .exe
程序,通常指的是将一个可执行程序(例如用 C#、C++ 或其他语言编写的桌面应用)安装并配置为在服务器上长期运行或按需启动。以下是几种常见的部署方式和步骤:
一、准备工作
-
确认系统环境
- 检查目标 Windows Server 的版本(如 Server 2016/2019/2022)。
- 确保已安装必要的运行库(如 .NET Framework、Visual C++ Redistributable、Java 等)。
- 关闭防火墙或添加例外规则(如果程序需要网络通信)。
-
获取程序文件
- 将你的
.exe
文件及其依赖文件(DLL、配置文件、资源等)打包好。 - 建议使用发布版本(Release),避免调试依赖。
- 将你的
二、部署方式选择
方式1:直接运行(适用于测试或手动启动)
- 将
.exe
文件复制到服务器某个目录,如C:MyApp
- 双击运行或通过命令行启动:
C:MyAppMyProgram.exe
缺点:关闭会话后程序可能停止(特别是远程桌面断开时)。
方式2:作为 Windows 服务运行(推荐长期后台运行)
将 .exe
注册为 Windows 服务,实现开机自启、后台运行、崩溃自动重启。
方法 A:使用 sc
命令注册服务(适用于支持服务模式的程序)
sc create MyServiceName binPath= "C:MyAppMyProgram.exe" start= auto DisplayName= "My Custom Service"
注意:该
.exe
必须是一个真正的 Windows 服务程序(即继承ServiceBase
类,能响应 SCM 控制命令)。普通控制台程序不能直接这样注册。
方法 B:使用 NSSM(Non-Sucking Service Manager)包装普通 exe 为服务
NSSM 是一个工具,可以把任意 .exe
包装成 Windows 服务。
-
下载 NSSM:https://nssm.cc/download
-
解压后运行
nssm install MyService
在弹出界面中填写:
- Path:
C:MyAppMyProgram.exe
- Startup directory:
C:MyApp
- 其他选项可选(日志、自动重启等)
- Path:
-
点击 Install service
-
启动服务:
net start MyService
-
设置开机自启:
- 打开“服务”管理器(
services.msc
) - 找到
MyService
,设置“启动类型”为“自动”
- 打开“服务”管理器(
✅ 推荐使用 NSSM,简单可靠。
方式3:使用任务计划程序(定时或登录触发)
适合定时运行或用户登录时启动。
- 打开“任务计划程序”
- 创建基本任务
- 设置触发器(如“当计算机启动时”或“当用户登录时”)
- 操作:启动程序,选择你的
.exe
- 勾选“不管用户是否登录都要运行” + “以最高权限运行”
方式4:通过 IIS + Web API(如果是提供接口的服务)
如果你的 .exe
是一个监听 HTTP 的程序(如用 ASP.NET Core 写的),可以:
- 使用 IIS + ANCM(ASP.NET Core Module)反向X_X
- 或者用
web.config
配合iisnode
/ 自托管 Kestrel
但更常见的是打包为 .dll
并发布为网站,而不是直接运行 .exe
。
三、注意事项
-
权限问题
- 确保服务运行账户有足够权限(建议使用
Local System
或专用域账户)。 - 如果访问数据库、文件夹、网络资源,需授权。
- 确保服务运行账户有足够权限(建议使用
-
日志记录
- 让程序输出日志到文件,便于排查问题。
- 若用 NSSM,可配置 stdout/stderr 重定向。
-
防止单实例重复运行
- 程序内部应防止多次启动(可用 Mutex)。
-
远程桌面断开影响
- 图形界面程序在无用户登录时可能无法显示 UI。
- 后台服务应避免依赖交互式桌面。
-
杀毒软件拦截
- 某些
.exe
被误判为病毒,需添加白名单。
- 某些
四、示例:使用 NSSM 部署一个控制台程序为服务
# 1. 下载 nssm 并放到 C:nssm
# 2. 安装服务
C:nssmnssm.exe install MyConsoleApp
# 在 GUI 中填写路径后,也可用命令行:
C:nssmnssm.exe set MyConsoleApp Application C:MyAppMyApp.exe
C:nssmnssm.exe set MyConsoleApp AppDirectory C:MyApp
C:nssmnssm.exe start MyConsoleApp
五、验证部署成功
- 查看任务管理器或
tasklist | findstr MyApp
- 查看事件查看器(Event Viewer)是否有错误
- 检查程序日志文件
- 使用
services.msc
查看服务状态
总结
需求 | 推荐方式 |
---|---|
长期后台运行 | NSSM 包装为服务 |
开机自动启动 | 任务计划程序 或 服务 |
手动测试运行 | 直接双击或 CMD 运行 |
提供 Web 接口 | 改造成 Web 应用 + IIS/Kestrel |
如果你提供具体的 .exe
类型(比如是 WinForm、控制台、Web 服务等),我可以给出更精确的部署建议。
评论前必须登录!
注册