检查电子应用程序是否在Windows上以pipe理员权限启动

有没有办法检查电子应用程序是否启动pipe理员权限?

我只发现电子sudo lib执行具有pipe理权限的命令。

但是我有多个命令来执行,我不想每次都提示用户。

那么我怎样才能检查应用程序是否开始 使用电子pipe理员权限?

最好的办法就是在软件内部执行一个命令:.isAdminPrivilegesUsed(可以是在Windows上执行的脚本)返回true或false,如果是false:

我将提示用户必须使用pipe理员权限重新启动软件并closures它

Solutions Collecting From Web of "检查电子应用程序是否在Windows上以pipe理员权限启动"

我检查了如何从Node中做到这一点,并找到了这个答案: 如何知道node-webkit应用程序是否以管理员/提升特权运行? 。

我检查了答案,下载了节点窗口并试了一下。 但是,解决方案提出了UAC对话框,并始终以“用户具有管理权限”进行响应。

我深入到处理isAdminUser命令的节点窗口代码中,发现它试图运行NET SESSION,如果没有权限,则尝试运行它,导致UAC对话框。

我拉出了提升的部分,并以此片段结束:

var exec = require('child_process').exec; exec('NET SESSION', function(err,so,se) { console.log(se.length === 0 ? "admin" : "not admin"); }); 

我通过正常运行应用程序并使用“以管理员身份运行”来测试。 上面的代码在不以管理员身份运行时正确显示“不是管理员”,以管理员身份运行时显示为“管理员”。

这应该适用于您在问题中引用的.isAdminPrivilegesUsed方法的内容。

不是你的问题的直接答案。 解决此问题的另一个选项是强制以管理员身份执行应用程序。

这可以通过更新应用程序的清单文件来完成,关于如何使用Electron来做到这一点的指南是: http : //layer0.authentise.com/electron-and-uac-on-windows.html

您现在可以指定应用程序应该使用电子构建工具以提升的权限运行:

如果您使用的是电子构建器,请将以下内容添加到您的package.json中:

  "build": { "win": { "requestedExecutionLevel": "highestAvailable" } }, 

如果您使用的是电子封装器,请使用API​​中的“请求执行级别” https://github.com/electron-userland/electron-packager/blob/master/docs/api.md

注意:这些选项使程序请求提升权限,而不是检查程序是否以管理员权限运行。