有没有办法检查是否使用管理员权限启动了电子应用程序?
我只找到 electron-sudo lib来执行具有管理员权限的命令。
但我有多个命令要执行,我不想每次都提示用户。
那么如何使用电子来检查应用是否已启动?
最好的办法就是在软件ex:.isAdminPrivilegesUsed(可以是在Windows上执行的脚本)中执行一个返回true或false的命令,如果为false:
我将提示用户他必须使用管理员权限重启软件并关闭它
答案 0 :(得分:5)
我从Node检查了如何执行此操作并找到了这个答案:How to know if node-webkit app is running with Administrator/elevated privilege?。
我检查了答案,下载了node-windows并试了一下。但是,该解决方案启动了UAC对话框并始终以"用户具有管理权限"进行响应。
我挖掘了处理isAdminUser命令的node-windows代码,发现它尝试运行NET SESSION,如果没有权限,则尝试将其运行升级,从而导致UAC对话框。
我拿出了提升部分并最终得到了这个片段:
var exec = require('child_process').exec;
exec('NET SESSION', function(err,so,se) {
console.log(se.length === 0 ? "admin" : "not admin");
});
我通过正常运行应用程序并使用"以管理员身份运行"来测试这一点。上面的代码正确显示"而非管理员"不以管理员身份运行时" admin"以管理员身份运行时。
这应该适用于您在问题中引用的.isAdminPrivilegesUsed方法的内容。
答案 1 :(得分:2)
您现在可以使用电子构建工具指定应使用提升的权限运行应用程序:
如果您使用电子构建器,请将以下内容添加到package.json:
"build": {
"win": {
"requestedExecutionLevel": "highestAvailable"
}
},
如果您使用的是电子打包程序,请使用API中指定的“请求执行级别” https://github.com/electron-userland/electron-packager/blob/master/docs/api.md
注意:这些选项使程序请求提升权限,而不是检查程序是否以管理员权限运行。
答案 2 :(得分:2)
如果您使用的是电子打包器,只需添加--win32metadata.requested-execution-level=requireAdministrator
即可。例如:
electron-packager app --asar=true --platform=win32 --arch=ia32 --win32metadata.requested-execution-level=requireAdministrator --overwrite
答案 3 :(得分:1)
不能直接回答您的问题。解决此问题的另一个选择是强制以管理员身份执行应用程序。
这可以通过更新应用程序的清单文件来完成,有关如何使用Electron执行此操作的指南,请访问:http://layer0.authentise.com/electron-and-uac-on-windows.html