Node.js execSync可以正常工作,但无法正常工作,更改为系统不会生效

时间:2019-01-31 20:21:33

标签: javascript node.js powershell

我想在 windows防火墙中阻止 chrome.exe 。完成任务的命令是

netsh advfirewall firewall add rule name="Block Chrome" dir=out action=block program="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" enable=yes'
通过 PowerShell 发出

上面的命令可以正常工作。但是当我尝试这样做时 在的的NodeJS

const execSync = require('child_process').execSync,  

    command = 'netsh advfirewall firewall add rule name="Block Chrome" dir=out action=block program="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" enable=yes'

const result = execSync( command )

console.log( result )

它打印

Ok.

通过输出,我假设被获取执行命令。但 Chrome浏览器是没有得到受这一点。它仍然可以访问互联网。

当我在 PowerShell 中运行相同的命令时,它会立即阻止chrome。我想知道为什么在 Nodejs 上运行命令无法按预期运行?

鉴于 Nodejs具有管理员权限,这里可能是什么问题?

1 个答案:

答案 0 :(得分:1)

您需要转义反斜杠:

    command = 'netsh advfirewall firewall add rule name="Block Chrome" dir=out action=block program="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" enable=yes'