使用Windows原生工具部署UE5.1.1服务器为服务失败的原因及解决
UE5.1.1 服务器用sc部署为Windows服务报错1053的原因及解决方法
报错原因
- UE服务器进程未实现Windows服务控制协议(SCP):sc创建的服务要求目标进程必须能响应服务管理器的启动、停止等指令,但UE服务器是普通程序,没有内置服务交互逻辑——哪怕进程在任务管理器里启动了,服务管理器收不到它的启动完成信号,就会判定启动失败,抛出1053错误。
- 服务运行上下文不匹配:sc默认用Local System账户启动服务,而UE服务器可能依赖特定环境变量、工作目录或权限,比如找不到项目资源文件,导致进程看似启动但实际卡在初始化,根本没法及时响应服务管理器的确认。
- 单纯改超时无效:注册表的服务超时是全局设置,核心问题是UE进程根本不会发送服务启动完成的信号,就算延长超时时间,服务管理器还是收不到响应,照样报错。
解决方法
方法1:给UE服务器添加服务控制逻辑
- 修改项目代码,集成Windows服务API:在服务器启动时调用
StartServiceCtrlDispatcher注册服务控制处理函数,等初始化完成后调用SetServiceStatus向服务管理器发送SERVICE_RUNNING状态,同时处理停止、暂停这类服务控制指令。 - 编译带服务支持的服务器程序:确保编译后的exe能和服务管理器正常交互,这样用sc创建服务后,就能完成完整的启动流程,不会再报1053。
方法2:用srvany做服务包装(不替换原exe)
srvany是微软官方的服务包装工具,不会替换你的UE服务器exe,只是帮它转发服务控制信号:
- 部署srvany:把srvany.exe放到固定路径(比如
C:\Tools\srvany),用sc创建指向srvany的服务:sc create UE5Server binPath= "C:\Tools\srvany\srvany.exe" DisplayName= "UE5 Game Server" Start= auto - 配置目标程序:打开注册表,定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UE5Server,新建名为Parameters的项,在该项下新建字符串值Application,值设为UE服务器exe的完整路径(比如D:\UEProjects\MyServer\Binaries\Win64\MyServer.exe),还可添加AppDirectory设置服务器的工作目录。 - 启动服务:srvany会自动启动你的UE服务器,同时代理服务管理器的控制指令,避免1053报错。
方法3:调整服务启动参数与运行上下文
- 指定工作目录与运行账户:sc创建服务时,用
obj参数指定合适的运行账户,binPath填全exe路径,还可通过注册表修改ImagePath添加启动参数,或在服务属性里设置“启动参数”,确保UE服务器能找到项目资源。
示例sc命令:sc create UE5Server binPath= "\"D:\UEProjects\MyServer\Binaries\Win64\MyServer.exe\"" DisplayName= "UE5 Game Server" Start= auto obj= "NT AUTHORITY\LocalService" - 给服务账户加权限:确保运行服务的账户有读取项目文件、写入日志的权限,避免进程因权限问题卡在初始化阶段。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

