Io 调用execSync时nodejs中的EPERM错误

Io 调用execSync时nodejs中的EPERM错误,io,electron,Io,Electron,在我的Windows电子应用程序中(我相信它在引擎盖下使用node.js或io.js?) var-ipconfig-goutput=child_-process.execSync(“ipconfig”).toString() 当我通过命令行运行应用程序时,此代码可以正常工作,例如electron. 但是,在打包应用程序后,我遇到了一个问题。当我使用electron-packager构建应用程序时,如果我从命令行调用构建的exe文件,则此代码工作正常。但是,如果在Windows资源管理器中双击内置

在我的Windows电子应用程序中(我相信它在引擎盖下使用node.js或io.js?)

var-ipconfig-goutput=child_-process.execSync(“ipconfig”).toString()

当我通过命令行运行应用程序时,此代码可以正常工作,例如
electron.

但是,在打包应用程序后,我遇到了一个问题。当我使用
electron-packager
构建应用程序时,如果我从命令行调用构建的
exe
文件,则此代码工作正常。但是,如果在Windows资源管理器中双击内置的
exe
来运行程序,则会出现以下错误:

错误:EPERM:不允许操作,写入

为什么会发生此错误,我应该如何更改上述代码


我想这是因为通过命令行启动进程与通过资源管理器启动进程时,stdout的工作方式有所不同,但我对IO的理解还不够透彻,不知道这里出了什么问题。

我发现,我可以通过将代码更改为

var-ipconfig-goutput=child_-process.spawnSync(“ipconfig”).stdout.toString()


但是,我不知道为什么
spawnSync
现在可以工作,而
execSync
没有。如果有人能发表评论,那太好了

行政特权?工作目录?嗨,阿米特,我也考虑过这个问题——我试着以管理员的身份运行,但我仍然遇到了这个问题。我认为这与工作目录没有任何关系,因为我通过上面的一个目录运行了命令,并且没有得到错误。我能想到的唯一一件事是,当您从资源管理器调用exe时,它与stdout的工作方式有关。