节点窗口模拟密码问题



我正在将文件观察器应用程序作为Windows服务(W10(运行,使用以下代码来安装该服务:

var Service = require('node-windows').Service;
const config = require('./SHR_modules/config');
// Create a new service object
var svc = new Service({
name:'SmartHR',
description: 'Smart HR file watcher',
script: require('path').join(__dirname,'watcher.js'),
workingDirectory: __dirname
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
console.log('installed as user: ' +  svc.logOnAs.account)
});
svc.on('uninstall',function(){
console.log('Uninstall complete.');
console.log('The service exists: ',svc.exists);
});
svc.logOnAs.domain = config.sqlServerLogin.domain;
svc.logOnAs.account = config.sqlServerLogin.user;
svc.logOnAs.password = config.sqlServerLogin.password;
svc.install();
//svc.uninstall();

以管理员身份运行代码,服务确实安装正确,但它已停止,因此当我尝试启动它时,消息是该服务无法启动错误的密码。用户名和域正确。如果我从我的配置.js将密码复制/粘贴到服务管理器中,则服务将从现在开始启动并运行。 为什么密码(无论它是什么(没有通过该行传递:

svc.logOnAs.password = config.sqlServerLogin.password;

正确?

winsw.js中的XML生成器函数缺少服务帐户的一行。 原始代码:

if (config.logOnAs) {
xml.push({
serviceaccount: [
{domain: config.logOnAs.domain || 'NT AUTHORITY'},
{user: config.logOnAs.account || 'LocalSystem'},
{password: config.logOnAs.password || ''},
]
});
}

工作代码:

if (config.logOnAs) {
xml.push({
serviceaccount: [
{domain: config.logOnAs.domain || 'NT AUTHORITY'},
{user: config.logOnAs.account || 'LocalSystem'},
{password: config.logOnAs.password || ''},
{allowservicelogon: 'true'}
]
});
}

我会将该更改提交到 git 项目中。

最新更新