You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用exec执行reg命令报错,但终端运行正常

解决Node.js中exec执行reg命令报ERROR: Invalid key name的问题

问题出在Node.js的exec默认使用Windows的cmd.exe作为shell,而cmd不支持用单引号包裹注册表键名、参数这类内容——你在终端能正常执行,大概率是用的PowerShell(它支持单引号语法)。

下面是两种可行的修复方案:

方案1:替换单引号为转义的双引号

把命令里的单引号换成双引号,同时在Node字符串中对双引号进行转义(因为Node字符串用双引号包裹时,内部双引号需要加反斜杠):

let { exec } = require("child_process");

let command =
  "reg add \"HKCU\\SOFTWARE\\MySoftware\" /v \"LOADER\" /t REG_SZ /d \"C:\\Program Files\\MyCompany\\some.dll\" /f";

exec(command, (err, stdout, stderr) => {
  if (err) console.log(err);
});

方案2:指定exec使用PowerShell执行

直接让exec调用PowerShell来运行命令,这样就能保留你原来的单引号写法:

let { exec } = require("child_process");

let command =
  "reg add 'HKCU\\SOFTWARE\\MySoftware' /v 'LOADER' /t REG_SZ /d 'C:\\Program Files\\MyCompany\\some.dll' /f";

exec(command, { shell: "powershell.exe" }, (err, stdout, stderr) => {
  if (err) console.log(err);
});

如果你的路径或参数包含空格、特殊字符,方案1的双引号写法是cmd的标准兼容方式;如果更习惯PowerShell的语法,方案2会更贴合你的原有命令逻辑。

内容的提问来源于stack exchange,提问作者Sandor Martin Leyva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:45:44