我正在构建一个电子项目,其中一部分将以编程方式在Mac OS上设置系统网络代理。
似乎没有内置的系统api(无论是来自nodejs还是来自electronic)都无法实现这一目标。作为替代方案,我设法通过使用child_process模块取消“ networksetup”命令来更改代理。但是每次撤销都会弹出以下对话框,提示输入密码很烦人。
var cp = require('child_process')
cp.exec(`networksetup -setproxyautodiscovery eth0 off`, function (error, stdout, stderr) {
if (error) {
console.log(error)
}
})
cp.exec(`networksetup -setautoproxystate eth0 off`, function (error, stdout, stderr) {
if (error) {
console.log(error)
}
})
cp.exec(`networksetup -setwebproxystate eth0 off`, function (error, stdout, stderr) {
if (error) {
console.log(error)
}
})
上面的代码段将在撤消时弹出3次。在开发阶段,我可以授予root特权来缓解此问题(sudo node test.js
)。
我正在寻求帮助,以解决打包后的问题(分发给用户后,要求用户以root特权在终端中运行该应用程序是不可能的,也不是用户友好的)。我的期望是要求用户在应用程序启动期间授予一次特权。在应用执行期间不再授予任何权限。
任何帮助将不胜感激。
答案 0 :(得分:0)
您应该尝试scutil
。有关更多信息,请参见man scutil
。
答案 1 :(得分:-1)
proxy_conf_helper作为替代。 这是参考链接。