.NET7 Worker Service注册为Windows服务启动失败,报System Error 193
解决.NET7 Worker Service注册Windows服务时System Error 193的问题
可能的原因及解决方法
1. 匹配目标架构与系统位数
- 你的系统是64位Windows,发布Worker Service时需明确指定win-x64作为目标运行时:
- 在Visual Studio发布配置中,找到「目标运行时」选项,选择
win-x64,重新发布项目。 - 若用命令行发布,执行:
dotnet publish -c Release -r win-x64 --self-contained true
- 在Visual Studio发布配置中,找到「目标运行时」选项,选择
2. 规避路径中的特殊字符与空格
- 原路径包含空格(如
C# academy course、Math Game - maui),可能导致服务注册解析异常。将发布后的可执行文件移到无空格的路径下,例如C:\Services\WorkerService11\PublishWorkerService11.exe。 - 重新注册服务,确保
binpath=后紧跟空格,再用引号包裹路径:sc create WorkerService11 binpath= "C:\Services\WorkerService11\PublishWorkerService11.exe" start= demand
3. 确认部署模式为独立部署
- 选择「独立部署」模式发布,可避免依赖系统已安装的.NET运行时版本:
- 在VS发布设置中,将「部署模式」设为「独立」,搭配
win-x64目标运行时重新发布。
- 在VS发布设置中,将「部署模式」设为「独立」,搭配
4. 验证可执行文件的有效性
- 右键点击发布后的
PublishWorkerService11.exe,选择「属性」→「详细信息」,确认文件架构为64位。 - 也可通过命令行验证:
dumpbin /headers PublishWorkerService11.exe,查看输出中的「机器」字段是否为x64。
5. 重新执行服务注册流程
- 先删除已注册的错误服务:
sc delete WorkerService11 - 确保新路径下的exe能直接正常运行
- 重新注册并启动服务:
sc create WorkerService11 binpath= "C:\Services\WorkerService11\PublishWorkerService11.exe" start= demand net start WorkerService11
内容的提问来源于stack exchange,提问作者Cardsio
相关产品推荐
相关产品推荐

