如何在node-windows中指定服务账户运行Node应用服务?
解决node-windows指定自定义服务账户的方法
你只配置了
allowServiceLogon: true但未配套传入服务账户信息,导致服务创建逻辑执行失败,但是事件监听仍会触发所以会输出启动成功的日志,属于配置缺失导致的问题。
正确配置方式
需要在Service实例的配置项中新增两个必填参数:
objectName:服务账户名称,格式要求如下:- 本地账户:格式为
.\本地账户名 - 域普通服务账户:格式为
域名称\账户名 - 域组托管服务账户(gMSA):格式为
域名称\gMSA账户名$,末尾必须带$符号
- 本地账户:格式为
password:服务账户的密码,组托管服务账户此处填空字符串""即可,无需手动填写密码
完整配置示例
var Service = require('node-windows').Service; var svc = new Service({ name:'project-name', description: 'node server', script: 'C:\\server\\server.js', allowServiceLogon: true, // 新增以下两项服务账户配置 objectName: '你的域名\\服务账号名称', // 按你的账户类型替换为对应格式的账户名 password: '服务账号的密码', // 组托管服务账户此处填 "" env:{ name: "NODE_ENV", value: "production" } }); svc.on('install',function(){ svc.start(); }); svc.on('alreadyinstalled',function(){ console.log('This service is already installed.'); }); svc.on('start',function(){ console.log(svc.name+' started!\nVisit http://127.0.0.1:5000 to see it in action.'); }); svc.install();
额外注意事项
- 运行安装服务的脚本时,必须用管理员权限启动终端,否则没有权限为服务配置登录账户
- 确保你使用的服务账户对Node应用目录、脚本路径、日志输出路径有对应的读写执行权限
- 服务安装完成后可以打开
services.msc,找到对应服务查看「登录」标签,确认账户配置是否生效
内容的提问来源于stack exchange,提问作者Fusscreme
相关产品推荐
相关产品推荐

