我有一个node.js程序在我的Windows PC上作为服务运行,我用它来打开文件。我发现这项工作的唯一方法是使用node.js打开PSExec,因为节点似乎没有能力以另一个用户的身份打开程序(在Windows中)。
下面的代码可行,但它有点不安全,因为可以通过观察进程监视器,甚至任务管理器中的命令行列来发现用户名和密码。我不会将密码存储在源代码中,只需将其放在那里以保持示例简单。
var EventLogger = require('node-windows').EventLogger;
var log = new EventLogger('File Launcher starting');
var exec = require('child_process').exec;
var userName = "mike";
var password= "mikesPassword";
var fullPath= "C:\folder\file.xls";
exec("PSExec.exe -accepteula -h -d -u "+userName+" -p "+password+" -i 1 C:\\WINDOWS\\SYSTEM32\\CMD.EXE /c start \"\" \""+fullPath+"\"",{cwd: process.cwd}, function(error, stdout, stderror) {
if(error){
log.error(stderror.replace('\n','').replace('\r',''));
}
if(stdout){
log.info(stdout.replace('\n','').replace('\r',''));
}
是否有其他方法可以让node.js作为另一个用户启动文件而不暴露用户名和密码?
我尝试使用PowerShell进行此操作,但似乎不允许SYSTEM像其他用户一样启动文件。