Diese Frage hat hier bereits eine Antwort:
Ich versuche, einen Weg zu finden, um autorisierend zu zeigen, ob eine Eingabeaufforderung mit der Eingabeaufforderung (CMD.exe) in einer Windows-Standardinstallation ausgeführt wird oder nicht. Die meisten Methoden, die ich je gesehen habe, sind auf nicht native Tools, Software von Drittanbietern oder Proxy-Indikatoren angewiesen, die nicht unbedingt zuverlässig oder kompatibel für alle Systeme sind. Ich bin auf der Suche nach etwas mehr, um das System selbst dazu zu bringen, die aktuelle Sitzung explizit anzugeben ist erhöht, oder um über die Befehlszeile anzuzeigen, dass der aktuelle Prozess auf einem Integritätsgrad von Hoch ausgeführt wird.
Ein Beispiel (aber nicht unbedingt eine absolute Definition) von etwas, das akzeptabel wäre, wäre ein Befehl, der die aktuelle PID abruft und anzeigt, gefolgt von einem anderen Befehl (falls nicht gleich), der den Integritätsgrad für diese PID anzeigt. Befehle, die sich auf die Auswirkungen einer bestimmten Ausgabe verlassen (z. B. die Annahme, dass die Sitzung erhöht ist, wenn Sie bestimmte Befehle ausführen können, oder die Ermittlung des Höhenstatus basierend auf der Titelleiste des Fensters), sind für diesen Zweck nicht zulässig.
Lösungen sollten bis zu Windows 7 Pro SP0 kompatibel sein. Obwohl diese Systeme über PowerShell verfügen, ist dies für diesen Zweck keine Option. Software, die nicht in das Betriebssystem integriert ist, ist keine Option.
whoami /groups
- scheint für diesen angemessen zu sein.whoami /groups
Antwort und erweiterte es hier ein wenig für die zukünftige Referenz, und stimmte auch dafür, es als Duplikat zu schließen.Antworten:
Wenn Sie eindeutig sehen möchten, ob die Sitzung erhöht ist und nicht in einem Skript verwendet wird, überprüfen Sie einfach den Titel. Es wird Administrator sagen: Auch im Titel wird angezeigt, dass die Befehlseingabe erhöht ausgeführt wird.
Außerdem wird ein cmd, das mit erhöhten Rechten gestartet wird, nicht in Ihrem Benutzerverzeichnis, sondern im Ordner c: \ windows \ system32 gestartet.
Skriptweise können Sie Systembefehle ausführen, für die eine Erhöhung erforderlich ist, beispielsweise "at". Es wird mit einer Nachricht fehlschlagen
Access is denied.
und% errorlevel% wird auf 1 gesetzt, sodass Sie es auch mit einem Batch-Skript überprüfen können. Ansonsten ist% errorlevel% 0.quelle
Eine gute Antwort im Duplikat gefunden, Hier .
Sie können verwenden
whoami
mit dem/groups
Parameter, um die dem aktuellen Benutzer zugewiesenen Berechtigungen anzuzeigen. Diese Berechtigungen sind auch sitzungsspezifisch - d. H .: wenn die Sitzung nicht erhöht ist,whoami /groups
fehlt die Gruppe, die für erhöhte Sitzungen gegeben wird. Verwendung derwhoami
Befehl und die/groups
Parameter ist im TechNet-Artikel für dokumentiert Wer bin ich .Die Gruppe, nach der Sie suchen müssen, ist SID
S-1-16-12288
auch als "High Mandatory Level" bezeichnet. Weitere Informationen finden Sie im TechNet-Artikel. Bekannte Sicherheits-IDs in Windows-Betriebssystemen .Wenn Sie die Aufgabe für sich selbst vereinfachen möchten, müssen Sie die Ausgabe an alle gelisteten Gruppen weiterleiten, anstatt sie visuell zu durchsuchen
find
mit der folgenden Syntax:Dadurch wird die Zeile ausgegeben, die die SID enthält, wenn sie gefunden wird, oder eine leere Ausgabe, wenn die SID nicht gefunden wird. (In letzterem Fall würde dies auf eine nicht erhöhte Sitzung hindeuten.) In einem Skript können Sie auch die Fehlerstufe von überprüfen
find
um festzustellen, ob die Gruppe gefunden wurde oder nicht. Eine Fehlerstufe von Null zeigt eine erfolgreiche Suche an (erhöhte Sitzung), während eine Fehlerstufe von Eins angibt, dass die Gruppe nicht gefunden wurde (nicht erhöhte Sitzung).quelle