检查electron应用程序是否在windows上以管理员权限启动

检查electron应用程序是否在windows上以管理员权限启动,windows,electron,Windows,Electron,是否有办法检查电子应用程序是否以管理员权限启动 我只找到了electron sudolib来执行具有管理员权限的命令 但是我有多个命令要执行,我不想每次都提示用户 那么,如何使用electron检查应用程序是否以管理员权限启动 最好只在软件内执行一个命令,例如:.isAdminPrivilegesUsed(可以是在Windows上执行的脚本),该命令返回true或false,如果为false: 我将提示用户必须使用管理员权限重新启动软件并将其关闭我在节点中查看了如何执行此操作,并找到了以下答案:

是否有办法检查电子应用程序是否以管理员权限启动

我只找到了electron sudolib来执行具有管理员权限的命令

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

那么,如何使用electron检查应用程序是否以管理员权限启动

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


我将提示用户必须使用管理员权限重新启动软件并将其关闭

我在节点中查看了如何执行此操作,并找到了以下答案:

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

我深入研究了处理isadmin用户命令的节点windows代码,发现它试图运行NET会话,如果没有权限,则尝试运行它,从而导致UAC对话框

我拿出了一个可以提升的部分,最后得到了这个片段:

var exec = require('child_process').exec; 
exec('NET SESSION', function(err,so,se) {
      console.log(se.length === 0 ? "admin" : "not admin");
    });
我通过正常运行应用程序并使用“以管理员身份运行”来测试这一点。以上代码在不以管理员身份运行时正确显示“not admin”,在以管理员身份运行时正确显示“admin”


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

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


这可以通过更新应用程序的清单文件来完成,关于如何使用Electron执行此操作的指南如下:

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

电子建设者 将以下内容添加到package.json中:

  "build": {
    "win": {
      "requestedExecutionLevel": "highestAvailable"
    }
  },
highestAvailable
requireAdministrator
可用。有关详细信息,请参阅:

电子包装机 调用
electron packager
时,添加以下命令行参数:

--win32metadata.requested-execution-level=highestAvailable
highestAvailable
requireAdministrator
可用。有关详细信息,请参阅


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

如果您使用的是electron packager,只需添加
--win32metadata。请求的执行级别=requireAdministrator
。例如:


electron packager应用程序--asar=true--platform=win32--arch=ia32--win32元数据。请求的执行级别=requireAdministrator--overwrite

谢谢你的工作!我使用此代码显示一个弹出窗口,强制用户使用AdminRightsHanks重新启动软件!我喜欢这个选项!请注意,清单可能会以较低的权限再次更新;)这是一个非常值得注意的“注意事项”,因为它基本上是更新清单。可以使用较低的权限再次更新清单;)@NoobTW:我对windowsportable一无所知,但你使用的是具有管理权限的用户吗?也可以尝试“requireAdministrator”而不是“highestAvailable”。这对最新版本不起作用。对于电子包装机用户来说,这个答案非常有用。
requireAdministrator
选项在技术上很简单,但不容易找到。