2016-05-19 8 views
2

Gibt es eine Möglichkeit zu überprüfen, ob eine Elektronen-App mit den Admin-Rechten gestartet wird?Prüfen, ob die Elektronen-App mit Administratorrechten auf Windows gestartet wurde

Ich fand nur electron-sudo lib zum Ausführen von Befehlen mit Administratorrechten.

Aber ich habe mehrere Befehle auszuführen und ich möchte den Benutzer nicht jedes Mal auffordern.

Wie kann ich überprüfen, ob die App gestartet ist mit Administratorrechten Elektron mit?

Das Beste wäre, nur einen Befehl in der Software ab auszuführen: .isAdminPrivilegesUsed (kann ein Skript sein, das unter Windows ausgeführt wird), die wahr oder falsch zurückgeben, und wenn falsch:

werde ich aufgefordert, die Benutzer, dass er die Software mit Admin-Rechten neu starten und es schließen muss

Antwort

2

Ich überprüft, wie dies von Node und fand diese Antwort: How to know if node-webkit app is running with Administrator/elevated privilege?.

Ich überprüfte die Antwort, heruntergeladen Node-Windows und versuchte es. Die Lösung führte jedoch den UAC-Dialog und antwortete immer mit "Der Benutzer verfügt über Administratorrechte".

Ich grub in den Node-Windows-Code, der den Befehl isAdminUser behandelt und festgestellt, dass es versucht, NET SESSION auszuführen, und versucht, wenn es keine Berechtigung hat, es erhöhten zu starten, was das UAC-Dialogfeld verursacht.

zog ich den Teil aus, der die elevate tut und mit diesem Code-Schnipsel endete:

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

Getestet habe ich diese durch die Anwendung der Regel und mit „Ausführen als Administrator“ ausgeführt wird. Der obige Code zeigt "not admin" korrekt an, wenn er nicht als Administrator ausgeführt wird, und "admin", wenn er als Administrator ausgeführt wird.

Dies sollte für den Inhalt Ihrer .isAdminPrivilegesUsed-Methode funktionieren, auf die Sie in der Frage verwiesen haben.

+0

Danke funktioniert wie ein Zauber! Ich verwende diesen Code, um ein Popup anzuzeigen, das den Benutzer dazu zwingt, den Soft mit Administratorrechten neu zu starten. – Aaleks

1

Keine direkte Antwort auf Ihre Frage. Eine weitere Möglichkeit zur Lösung dieses Problems besteht darin, die Ausführung der Anwendung als Administrator zu erzwingen.

Dies kann durch die Aktualisierung der Manifest-Datei für die Anwendung, eine Anleitung, wie dies zu tun mit Electron ist hier geschehen: http://layer0.authentise.com/electron-and-uac-on-windows.html

+1

Danke! Ich mag diese Option! – Aaleks

+0

Bitte seien Sie gewarnt, dass das Manifest wieder mit niedrigeren Rechten aktualisiert werden könnte;) – Konstantin

2

Sie, dass eine App mit erhöhten Rechten mit Hilfe der Elektronen Build ausgeführt werden soll angeben können jetzt Werkzeuge:

Wenn Sie elektronen Builder verwenden, die folgendes zu Ihrem package.json hinzufügen:

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

Wenn Sie elektronen Packager verwenden, verwenden Sie "requested-execution-Ebene", wie er in der angegebenen API https://github.com/electron-userland/electron-packager/blob/master/docs/api.md

Hinweis: Mit diesen Optionen fordert das Programm erhöhte Berechtigungen an, anstatt zu überprüfen, ob das Programm mit Administratorrechten ausgeführt wird.

+0

Vielen Dank! sehr sauberer Weg – Aaleks

+0

Ein sehr wertvolles "Hinweis", weil im Grunde, was dies tut, Updates manifestieren. Manifest könnte wieder mit niedrigeren Rechten aktualisiert werden;) – Konstantin

+0

Scheint, es funktioniert nicht auf Windows Portable? – NoobTW

1

Wenn Sie ein Elektronenpaket verwenden, fügen Sie einfach --win32metadata.requested-execution-level=requireAdministrator hinzu. zB:

electron-package app nameApp --asar=true --platform=win32 --arch=x86 --win32metadata.requested-execution-level=requireAdministrator --overwrite

Verwandte Themen