【发布时间】:2022-03-14 11:08:13
【问题描述】:
是否可以在 electron 中使用具有 admin 或 sudo 权限的节点?
我找到了sudo-prompt,但据我了解,这只能用于执行 shell 命令,而不能用于使用节点函数(例如 main.js 文件中的代码) .
这可能吗?如果是这样,您能给我一些建议吗?
任何帮助将不胜感激,也许我只是在寻找错误的东西。
提前致谢!
【问题讨论】:
是否可以在 electron 中使用具有 admin 或 sudo 权限的节点?
我找到了sudo-prompt,但据我了解,这只能用于执行 shell 命令,而不能用于使用节点函数(例如 main.js 文件中的代码) .
这可能吗?如果是这样,您能给我一些建议吗?
任何帮助将不胜感激,也许我只是在寻找错误的东西。
提前致谢!
【问题讨论】:
可以,看看electron-sudo模块:https://github.com/automation-stack/electron-sudo
以管理权限运行子进程,提示用户 如有必要,使用图形操作系统对话框。对背景有用 运行需要 sudo 的本机 Electron 应用程序的子进程。
- Windows,使用带有本机用户帐户控制 (UAC) 提示的提升实用程序(无需 PowerShell)
- OS X,使用捆绑的小程序(灵感来自 Joran Dirk Greef)
- Linux,使用系统 pkexec 或 gksudo(系统或捆绑)。
【讨论】:
不建议以管理员身份运行整个 Electron 应用程序。因为这使整个应用程序可以全面访问以更改用户机器上的任何内容。如果有人要注入代码,或者如果你有错误,你可能会对计算机做很多坏事。
最好运行单个函数,并在函数运行前始终提示用户以管理员身份登录。
您可以在一个流行的 Electron 应用中看到这种方法:https://github.com/microsoft/vscode
在 package.json 文件中,它们有两个有用的依赖项:
他们检查是否使用native-is-elevated 提升了权限,如果没有,则使用sudo-prompt 提示输入管理员密码。
我在这里使用这种方法创建了一个示例电子应用程序: https://github.com/kmturley/electron-runas-admin
【讨论】: