Wie überprüfe ich, ob das aktuelle Batch-Skript Administratorrechte hat?
Ich weiß, wie man es dazu bringt, sich mit Runas aufzurufen, aber nicht, wie man nach Administratorrechten sucht. Die einzigen Lösungen, die ich gesehen habe, sind grobe Hack-Jobs oder die Verwendung externer Programme. Nun, eigentlich ist es mir egal, ob es ein Hack-Job ist, solange er unter Windows XP und neuer funktioniert.
windows
batch-file
cmd
admin
Flacs
quelle
quelle
Antworten:
Probleme
Die Lösung von blak3r / Rushyo funktioniert für alles außer Windows 8. Unter
AT
Windows 8 führt dies zu folgenden Ergebnissen:(siehe Screenshot 1) und wird zurückkehren
%errorLevel%
1
.Forschung
Also habe ich nach anderen Befehlen gesucht, für die erhöhte Berechtigungen erforderlich sind. rationallyparanoid.com hatte eine Liste von einigen, daher habe ich jeden Befehl auf den beiden entgegengesetzten Extremen der aktuellen Windows-Betriebssysteme (XP und 8) ausgeführt, in der Hoffnung, einen Befehl zu finden, dem der Zugriff auf beide Betriebssysteme verweigert wird, wenn er mit Standardberechtigungen ausgeführt wird.
Schließlich fand ich einen -
NET SESSION
. Eine echte , saubere und universelle Lösung, die Folgendes nicht beinhaltet:FOR
Schleifen zurückgegeben werdenAT
(Windows 8 nicht kompatibel) oderWHOAMI
(Windows XP nicht kompatibel).Jedes davon hat seine eigenen Sicherheits-, Benutzerfreundlichkeits- und Portabilitätsprobleme.
Testen
Ich habe unabhängig bestätigt, dass dies funktioniert auf:
(siehe Screenshot 2)
Implementierung / Nutzung
Um diese Lösung zu verwenden, gehen Sie einfach wie folgt vor:
Verfügbar hier, wenn Sie faul sind: https://dl.dropbox.com/u/27573003/Distribution/Binaries/check_Permissions.bat
Erläuterung
NET SESSION
ist ein Standardbefehl zum "Verwalten von Server-Computer-Verbindungen. Ohne Parameter werden [es] Informationen zu allen Sitzungen mit dem lokalen Computer angezeigt."Hier ist der grundlegende Prozess meiner gegebenen Implementierung:
@echo off
goto check_Permissions
:check_Permissions
Codeblock springennet session >nul 2>&1
STDOUT
Streams der Standardausgabe (numerisches Handle 1 / ) nachnul
STDERR
) an dasselbe Ziel wie das numerische Handle 1if %errorLevel% == 0
%errorLevel%
) ist,0
bedeutet dies, dass keine Fehler aufgetreten sind und daher der unmittelbar vorhergehende Befehl erfolgreich ausgeführt wurdeelse
%errorLevel%
) nicht0
ist, bedeutet dies, dass Fehler aufgetreten sind und der unmittelbar vorhergehende Befehl daher nicht erfolgreich ausgeführt wurdeScreenshots
Windows 8
AT
%errorLevel%
:NET SESSION
unter Windows XP x86 - Windows 8 x64 :Vielen Dank, @Tilka, dass Sie Ihre akzeptierte Antwort in meine geändert haben. :) :)
quelle
net session
Hauptbenutzer kann auch "erhöhen" und dann erfolgreich ausführen (ERRORLEVEL = 0) - er hat jedoch keine Administratorrechte. Die Verwendungopenfiles
(siehe Antwort von Lucretius unten) hat dieses Problem nicht.Die Anders-Lösung hat bei mir funktioniert, aber ich war mir nicht sicher, wie ich sie umkehren sollte, um das Gegenteil zu erreichen (wenn Sie kein Administrator waren).
Hier ist meine Lösung. Es gibt zwei Fälle, einen IF- und einen ELSE-Fall, und einige ASCII-Fälle, um sicherzustellen, dass die Leute sie tatsächlich lesen. :) :)
Minimale Version
Rushyo hat diese Lösung hier veröffentlicht: Wie erkennt man, ob CMD als Administrator ausgeführt wird / über erhöhte Berechtigungen verfügt?
Version, die Fehlermeldungen, Pausen und Exits hinzufügt
Funktioniert unter WinXP -> Win8 (einschließlich 32/64-Bit-Versionen).
BEARBEITEN: 28.08.2012 Aktualisiert, um Windows 8 zu unterstützen. @BenHooper hat dies in seiner Antwort unten hervorgehoben. Bitte stimmen Sie seiner Antwort zu.
quelle
AT
funktioniert nicht unter Windows 8, aber ich habe eine bessere Lösung gefunden. Ich habe es hier als Antwort gepostet: stackoverflow.com/questions/4051883/… (oder Sie könnten einfach nach unten scrollen, was auch immer).Weitere Probleme
Wie von @Lectrode ausgeführt, wird beim Versuch, den
net session
Befehl auszuführen, während der Serverdienst gestoppt ist, die folgende Fehlermeldung angezeigt:In diesem Fall wird die
%errorLevel%
Variable auf gesetzt2
.Hinweis Der Serverdienst wird im abgesicherten Modus (mit oder ohne Netzwerk) nicht gestartet.
Auf der Suche nach einer Alternative
Etwas das:
Also habe ich eine virtuelle Vanilla Windows XP-Maschine gebootet und angefangen, durch die Liste der Anwendungen im
C:\Windows\System32
Ordner zu scrollen , um einige Ideen zu bekommen. Nach Versuchen und Irrtümern ist dies der schmutzige (Wortspiel beabsichtigte) Ansatz, den ich mir ausgedacht habe:Der
fsutil dirty
Befehl erfordert Administratorrechte, um ausgeführt zu werden, und schlägt andernfalls fehl.%systemdrive%
ist eine Umgebungsvariable, die den Laufwerksbuchstaben zurückgibt, auf dem das Betriebssystem installiert ist. Die Ausgabe wird umgeleitetnul
und somit ignoriert. Die%errorlevel%
Variable wird0
erst nach erfolgreicher Ausführung auf gesetzt.In der Dokumentation heißt es:
Weitere Nachforschungen
Die obige Lösung funktioniert zwar ab Windows XP, es lohnt sich jedoch hinzuzufügen, dass Windows 2000 und Windows PE (vorinstallierte Umgebung) nicht mitgeliefert werden. Daher müssen
fsutil.exe
wir auf etwas anderes zurückgreifen.Bei meinen vorherigen Tests habe ich festgestellt, dass das Ausführen des
sfc
Befehls ohne Parameter zu folgenden Ergebnissen führen würde:Das heißt: keine Parameter, keine Partei . Die Idee ist, dass wir die Ausgabe analysieren und prüfen können, ob wir etwas anderes als einen Fehler haben:
Die Fehlerausgabe wird zuerst zur Standardausgabe umgeleitet, die dann an den
find
Befehl weitergeleitet wird. An dieser Stelle müssen wir nach dem einzigen Parameter suchen, der in allen Windows-Versionen seit Windows 2000 unterstützt wird :/SCANNOW
. Bei der Suche wird die Groß- und Kleinschreibung nicht berücksichtigt, und die Ausgabe wird verworfen, indem sie an umgeleitet wirdnul
.Hier ist ein Auszug aus der Dokumentation:
Beispielnutzung
Hier einige Beispiele zum Einfügen und Ausführen:
Windows XP und höher
Windows 2000 / Windows PE
Gilt für
---
quelle
SFC
Check für alle Systeme verwenden möchten, müssen Sie ein bisschen kreativ werden. Aus irgendeinem Grund werden ab Windows 8SFC
nur einzelne Zeichen ausgegeben. Um die Ausgabe erfolgreich zu analysieren, müssen Sie Folgendes tun:setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%s in ('sfc 2^>^&1^|MORE') do @set "output=!output!%%s"
echo "%output%"|findstr /I /C:"/scannow">nul 2>&1
(3 separate Zeilen). Dies sollte unter Windows 2000 bis Windows 2012 R2 funktionieren. Nebenbei bemerkt, ich bevorzuge FINDSTR, weil es Dinge im Allgemeinen schneller verarbeitet als FIND.fsutil
Lösung noch nicht persönlich getestet, aber soweit ich sehen kann, scheint sie viel flexibler zu sein als meine Lösung. Obwohl vielleicht nicht ganz so elegant. ;) Ich bin froh zu sehen, dass wir zwischen uns eine exzellente, einfache und flexible Lösung zur Erkennung von Administratoren erhalten. :)fsutil dirty query >nul
wenn er erhöht ist. Dies gibt Hilfetext und% errorlevel% = 0fsutil dirty query >nul
,fsutil dirty query %systemdrive% >nul
funktioniert jedoch immer nochZwei weitere Möglichkeiten - schnell und abwärtskompatibel.
fltmc
Der Befehl ist seit XP auf jedem Windows-System verfügbar, daher sollte dieser Befehl ziemlich portabel sein.Eine weitere wirklich schnelle Lösung, die getestet
XP
wurde8.1
:7
- Es gibt eine bestimmte Variable,=::
die nur angezeigt wird, wenn die Konsolensitzung keine Administratorrechte hat. Da es nicht so einfach ist, eine Variable zu erstellen, die=
ihren Namen enthält , ist dies eine vergleichsweise zuverlässige Methode, um nach Administratoren zu suchen Berechtigung (es ruft keine externen ausführbaren Dateien auf, daher funktioniert es gut)Wenn Sie dies direkt über die Befehlszeile verwenden möchten, jedoch nicht aus einer Batchdatei, können Sie Folgendes verwenden:
quelle
=::
Variablen eher ein Fehler ist - es stellt ein nicht vorhandenes Laufwerk dar, so wurde es wahrscheinlich in win10 behoben.=::
ist für Nicht-Administrator-CMD unter Windows 10 1709 definiert. Wie auch immer, es ist kein zuverlässiger Weg, Sie können es leicht erzwingen, selbst in Administrator-CMD-Sitzungen definiert zu werden:subst :: c:\ & for %a in (::) do %a & set,
quelle
alternative Lösung:
quelle
openfiles
ERRORLEVEL auszuführen und zu überprüfen.openfiles.exe
es in WinPE nicht funktioniert, sodass das Skript immer zurückgibt, dass der Benutzer kein Administrator ist.1>
und2>&1
werden unter microsoft.com/resources/documentation/windows/xp/all/proddocs/… erklärt .nul
bezieht sich auf die Null - GerätNicht nur überprüfen, sondern auch automatisch Administratorrechte erhalten, auch
bekannt als Automatic UAC for Win 7/8 / 8.1 ff. : Das Folgende ist wirklich cool mit einer weiteren Funktion: Dieses Batch-Snippet prüft nicht nur die Administratorrechte, sondern erhält sie automatisch! (und Tests zuvor, wenn Sie auf einem UAC-fähigen Betriebssystem leben.)
Mit diesem Trick brauchen Sie nicht länger, um mit der rechten Maustaste auf Ihre Batch-Datei "mit Administratorrechten" zu klicken. Wenn Sie vergessen haben, es mit erhöhten Rechten zu starten, wird die Benutzerkontensteuerung automatisch gestartet! Darüber hinaus wird zunächst getestet, ob das Betriebssystem eine Benutzerkontensteuerung benötigt / bereitstellt, sodass es sich korrekt verhält, z. B. für Win 2000 / XP, bis Win 8.1 getestet wird.
Das Snippet führt einige gute Batch-Muster zusammen, insbesondere (1) den Admin-Test in diesem Thread von Ben Hooper und (2) die UAC-Aktivierung, die auf BatchGotAdmin gelesen und auf der Batch-Site von robvanderwoude zitiert wurde (Respekt). (3) Für die Betriebssystemidentifikation durch "VER | FINDSTR-Muster" finde ich die Referenz einfach nicht.)
(In Bezug auf einige sehr geringfügige Einschränkungen, wenn "NET SESSION" nicht wie in einer anderen Antwort erwähnt funktioniert, können Sie einen weiteren dieser Befehle einfügen. Für mich ist das Ausführen im abgesicherten Windows-Modus oder spezielle Standarddienste nicht verfügbar, und dies sind keine wichtigen Anwendungsfälle - für einige Admins vielleicht sind sie.)
quelle
start
: Öffnen des Skripts in einem neuen Fenster. Wenn Sie die Ergebnisse sehen möchten, fügen Siepause
am Ende Ihres Skripts ein hinzu. Es ist auch schwer zu erkennen, wann wir erhöht bleiben und wann es eine Wiederholung gibt. Sie können dafür ein Befehlszeilenargument verwenden: github.com/tgandor/meats/blob/master/lang_lawyer/cmd/…Ich habe zwei Möglichkeiten, um nach privilegiertem Zugriff zu suchen. Beide sind ziemlich zuverlässig und in fast jeder Windows-Version sehr portabel.
1. Methode
* Funktioniert unter XP und höher
2. Methode
* Funktioniert unter XP und höher
Arbeitsbeispiel
Ein Skript, das den temporären Ordner löscht
Code-Snippet anzeigen
quelle
Im Batch-Skript Elevate.cmd (siehe diesen Link ), das ich geschrieben habe, um Administratorrechte zu erhalten , habe ich es folgendermaßen gemacht:
Dies ist für Windows 7, 8, 8.1, 10 und sogar Windows XP getestet und benötigt keine Ressourcen wie ein spezielles Verzeichnis, eine Datei oder einen Registrierungsschlüssel.
quelle
Der sauberste Weg, mit einem CMD-Skript, den ich gefunden habe, nach Administratorrechten zu suchen, ist ungefähr so:
Diese Methode verwendet nur CMD.exe-integrierte Funktionen, daher sollte sie sehr schnell sein. Außerdem wird nach den tatsächlichen Funktionen des Prozesses gesucht, anstatt nach SIDs oder Gruppenmitgliedschaften zu suchen, sodass die effektive Berechtigung getestet wird. Und das funktioniert bereits unter Windows 2003 und XP. Normale Benutzerprozesse oder nicht erhöhte Prozesse schlagen bei der Verzeichnisprüfung fehl, wenn Administrator- oder erhöhte Prozesse erfolgreich sind.
quelle
Im Folgenden wird versucht, eine Datei im Windows-Verzeichnis zu erstellen. Wenn es erfolgreich ist, wird es entfernt.
Beachten Sie, dass 06CF2EB6-94E6-4a60-91D8-AB945AE8CF38 eine heute generierte GUID ist und es unwahrscheinlich ist, dass Konflikte mit einem vorhandenen Dateinamen auftreten.
quelle
was generated today and it is assumed to be improbable to conflict with an existing filename.
außer wenn zwei Personen diesen Code verwendenDie Whoami / Gruppen funktionieren in einem Fall nicht. Wenn Sie die Benutzerkontensteuerung vollständig deaktiviert haben (nicht nur die Benachrichtigung deaktiviert) und von einer Administrator-Eingabeaufforderung gestartet wurden, wurde Folgendes ausgegeben:
Sie werden nicht erhöht ausgeführt, aber Folgendes ausgeben:
Ich werde sagen, du bist erhöht. Es ist falsch. Hier ist, warum es falsch ist:
Wenn IsUserAdmin ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx ) in diesem Status ausgeführt wird, wird FALSE zurückgegeben und die Benutzerkontensteuerung ist vollständig deaktiviert, und GetTokenInformation gibt TokenElevationTypeDefault zurück ( http://blogs.msdn.com/b/cjacks/archive/2006/10/24/modifying-the-mandatory-integrity-level-for-a-securable-object-in-windows-vista.aspx ) dann läuft der Prozess nicht erhöht, sondern
whoami /groups
behauptet es ist.Der beste Weg, dies aus einer Batch-Datei heraus zu tun, ist:
Sie sollten dies
net session
zweimal tun, daat
Sie die falschen Informationen erhalten, wenn jemand zuvor eine Hand gemacht hat.quelle
whoami /groups
liefert nicht die falschen Informationen. Es ist nur das, wasrunas /trustlevel
Sie an einen unerwarteten Ort bringt: Ausführen ohne Administratorrechte, aber mit hoher Integrität. Sie können dies mit Process Explorer bestätigen. (Dies kann ein Fehler seinrunas
, ist aber kein Fehlerwhoami
.)runas /trustlevel
Wenn Sie ein lokaler Administrator sind und die Benutzerkontensteuerung deaktiviert ist, werden Sie durch die Ausgabe dieses Befehls runas über eine Administrator-Eingabeaufforderung in einen Sicherheitskontext für "Basisbenutzer" versetzt. In diesem Modus können Sie keine Verwaltungsvorgänge ausführen. Versuchen Sie "net session" oder fsutil "oder ein anderes Dienstprogramm, für das Administratorzugriff erforderlich ist." Whoami / groups "gibt jedoch an, dass Sie erhöht sind. Wenn dies nicht der Fall ist. Die Tatsache, dass GetTokenInformation" TokenElevationTypeDefault "zurückgibt, weist darauf hin.quelle
whoami
wird in Windows XP nicht unterstützt.Einige Server deaktivieren Dienste, die für den Befehl "Netzsitzung" erforderlich sind. Dies führt dazu, dass bei der Administratorprüfung immer angegeben wird, dass Sie möglicherweise keine Administratorrechte haben.
quelle
Edit: copyitright hat darauf hingewiesen, dass dies unzuverlässig ist. Durch das Genehmigen des Lesezugriffs mit der Benutzerkontensteuerung wird dir erfolgreich. Ich habe ein bisschen mehr Skript, um eine andere Möglichkeit anzubieten, aber es ist nicht schreibgeschützt.
Alte Antwort unten
Warnung: unzuverlässig
Aufgrund einer Reihe anderer guter Antworten und der von and31415 angesprochenen Punkte stellte ich fest, dass ich ein Fan von Folgendem bin:
Wenige Abhängigkeiten und schnell.
quelle
Hinweis: Das Überprüfen mit cacls auf \ system32 \ config \ system schlägt in WOW64 IMMER fehl (z. B. in% systemroot% \ syswow64 \ cmd.exe / 32-Bit-Total Commander), sodass Skripts, die in einer 32-Bit-Shell im 64-Bit-System ausgeführt werden, für immer wiederholt werden ... Besser wäre es, im Prefetch-Verzeichnis nach Rechten zu suchen:
Win XP bis 7 getestet, jedoch schlägt es in WinPE wie in Windows 7 install.wim fehl. Es gibt weder ein solches Verzeichnis noch eine solche cacls.exe
Auch in winPE AND wow64 schlägt die Prüfung mit openfiles.exe fehl:
In Windows 7 wird die Fehlerstufe "1" mit der Information angezeigt, dass "das Zielsystem ein 32-Bit-Betriebssystem sein muss".
Beide Überprüfungen schlagen wahrscheinlich auch in der Wiederherstellungskonsole fehl.
Was in Windows XP - 8 32/64 Bit, in WOW64 und in WinPE funktioniert , sind: Dir-Erstellungstests (WENN der Administrator das bombardierte Windows-Verzeichnis nicht mit Berechtigungen für alle ausgelegt hat ...) und
und
prüft.
Auch ein weiterer Hinweis in einigen Windows XP-Versionen (und wahrscheinlich auch in anderen Versionen, abhängig vom Basteln des Administrators) in Abhängigkeit von Registrierungseinträgen, die bat / cmd direkt aus dem .vbs-Skript aufrufen, schlägt fehl mit der Information, dass bat / cmd-Dateien mit nichts verknüpft sind ...
Das Aufrufen von cmd.exe mit dem Parameter der Datei bat / cmd funktioniert dagegen in Ordnung:
quelle
Buchstäblich Dutzende von Antworten in dieser und in verknüpften Fragen und anderswo bei SE, die alle auf die eine oder andere Weise mangelhaft sind, haben deutlich gezeigt, dass Windows kein zuverlässiges integriertes Konsolendienstprogramm bietet. Es ist also Zeit, Ihre eigenen auszurollen.
Der folgende C-Code, der auf Erkennen basiert, ob das Programm mit vollständigen Administratorrechten ausgeführt wird , funktioniert in Win2k + 1 überall und in allen Fällen (Benutzerkontensteuerung, Domänen, transitive Gruppen ...) - da er dasselbe tut wie das System selbst, wenn es ausgeführt wird prüft Berechtigungen. Es signalisiert das Ergebnis sowohl mit einer Nachricht (die mit einem Schalter stummgeschaltet werden kann) als auch mit einem Exit-Code.
Es muss nur einmal kompiliert werden, dann können Sie es einfach
.exe
überall kopieren - es hängt nur vonkernel32.dll
und abadvapi32.dll
(ich habe eine Kopie hochgeladen ).chkadmin.c
::1 MSDN behauptet, die APIs seien XP +, dies ist jedoch falsch.
CheckTokenMembership
ist 2k + und der andere ist noch älter . Der letzte Link enthält auch eine viel kompliziertere Methode, die selbst in NT funktionieren würde.quelle
PowerShell jemand?
quelle
Hier ist noch eine, die du der Liste hinzufügen kannst ;-)
(Versuchen Sie eine Dateierstellung am Systemspeicherort)
Das
MODE CON
initialisiert den Bildschirm neu und unterdrückt alle Texte / Fehler, wenn Sie nicht die Berechtigung haben, an den Systemspeicherort zu schreiben.quelle
Alternative: Verwenden Sie ein externes Dienstprogramm, das für diesen Zweck entwickelt wurde, z. B. IsAdmin.exe (uneingeschränkte Freeware).
Ausstiegscodes:
0 - Aktueller Benutzer nicht Mitglied der Administratorgruppe
1 - Aktuelles Benutzermitglied von Administratoren und ausgeführt erhöht
2 - Aktuelles Benutzermitglied der Administratoren, wird jedoch nicht mit erhöhten Rechten ausgeführt
quelle
quelle
Ich werde den Code Zeile für Zeile erklären:
Benutzer werden mit viel mehr als 1 Zeilen ohne diese verärgert sein.
Punkt, an dem das Programm startet.
Legen Sie den Dateinamen des zu erstellenden Verzeichnisses fest.
Erstellt das Verzeichnis am
<DL>:\Windows
(ersetzen Sie <DL> durch Laufwerksbuchstaben).Wenn die Umgebungsvariable ERRORLEVEL Null ist, wird eine Erfolgsmeldung angezeigt.
Gehen Sie bis zum Ende (fahren Sie nicht weiter fort).
Wenn ERRORLEVEL eins ist, geben Sie eine Fehlermeldung ein und fahren Sie bis zum Ende fort.
Falls der Dateiname bereits vorhanden ist, erstellen Sie den Ordner neu (andernfalls lässt der
goto end
Befehl dies nicht zu).Geben Sie den Endpunkt an
Entfernen Sie das erstellte Verzeichnis.
Halten Sie an, damit der Benutzer die Nachricht sehen kann.
Hinweis : Die
>nul
und2>nul
filtern die Ausgabe dieser Befehle.quelle
net user %username% >nul 2>&1 && echo admin || echo not admin
quelle
admin
Ich denke, der einfachste Weg ist der Versuch, das Systemdatum zu ändern (für das Administratorrechte erforderlich sind):
Wenn die
%date%
Variable den Wochentag enthalten kann, rufen Sie einfach das Datum des letzten Teils von abDATE
Befehls ab:quelle
:(
Ich habe einen Benutzer gefunden, der verwenden kann
net session
, obwohl er kein Administrator ist. Ich habe nicht untersucht warum. Meine Problemumgehung besteht darin, zu testen, ob der Benutzer einen Ordner im Windows-Ordner erstellen kann.Hier ist mein Code:
quelle
Eine Sammlung der vier scheinbar kompatibelsten Methoden dieser Seite. Der erste ist wirklich ziemlich genial. Getestet ab XP. Verwirrend, dass kein Standardbefehl verfügbar ist, um nach Administratorrechten zu suchen. Ich denke, sie konzentrieren sich jetzt einfach auf PowerShell, was für die meisten meiner eigenen Arbeiten wirklich nutzlos ist.
Ich habe den Stapel 'exit-if-not-admin.cmd' genannt, der von anderen Stapeln aufgerufen werden kann, um sicherzustellen, dass sie nicht weiter ausgeführt werden, wenn die erforderlichen Administratorrechte nicht angegeben sind.
quelle
Hier ist mein 2-Cent-Wert:
Ich brauchte einen Stapel, um in einer Domänenumgebung während des Benutzeranmeldevorgangs in einer Arbeitsraumumgebung ausgeführt zu werden, in der Benutzer eine "Sperr" -Richtlinie und eine eingeschränkte Ansicht einhalten (hauptsächlich über Gruppenrichtlinienobjektsätze verteilt).
Ein Domänen-Gruppenrichtlinienobjektsatz wird angewendet, bevor ein mit AD-Benutzern verknüpftes Anmeldeskript erstellt wird. Das Erstellen eines Gruppenrichtlinienobjekt-Anmeldeskripts war zu ausgereift, da das "neue" Benutzerprofil nicht rechtzeitig erstellt / geladen / oder bereit war, ein "Entfernen und / oder" anzuwenden Pin "Taskleiste und Startmenü Elemente vbscript + einige lokale Dateien hinzufügen.
Beispiel: Für die vorgeschlagene Profilumgebung "Standardbenutzer" ist eine Verknüpfung ".URL" (.lnk) erforderlich, die im "% ProgramData% \ Microsoft \ Windows \ Startmenü \ Programme * MyNewOWA.url *" und "C:" Unter anderem \ Users \ Public \ Desktop \ * MyNewOWA.url * "
Die Benutzer haben mehrere Computer in der Domäne, auf denen nur diese festgelegten "Workroom" -PCs diese Richtlinien benötigen.
Diese Ordner erfordern 'Admin'-Rechte zum Ändern, und obwohl der' Domain User 'Teil der lokalen' Admin'-Gruppe ist, war die Benutzerkontensteuerung die nächste Herausforderung.
Verschiedene Anpassungen gefunden und hier zusammengeführt. Ich habe auch einige Benutzer mit BYOD-Geräten, für die andere Dateien mit Perm-Problemen erforderlich sind. Habe noch nicht auf XP getestet (ein etwas zu altes Betriebssystem), aber der Code ist vorhanden, würde gerne Feedback geben.
Domänen-PCs sollten so weit wie möglich von Gruppenrichtlinienobjekten gesteuert werden. Arbeitsgruppen- / Standalone-Computer können von diesem Skript gesteuert werden.
Denken Sie daran, dass bei einem BYOD-Arbeitsgruppen-PC mindestens einmal eine UAC-Eingabeaufforderung angezeigt wird (sobald die erste Erhöhung auf "Administratorrechte" erforderlich ist). Da jedoch die lokale Sicherheitsrichtlinie ab diesem Zeitpunkt für die Verwendung durch den Administrator geändert wird, wird die Popups verschwinden.
Auf einem Domänen-PC sollte die Gruppenrichtlinienobjektrichtlinie "ConsentPromptBehaviorAdmin" in Ihrer bereits erstellten "Sperr" -Richtlinie festgelegt sein - wie im Abschnitt "REFERENZEN" des Skripts erläutert.
Führen Sie erneut den Import von secedit.exe der Standarddatei '.inf' aus, wenn Sie in der gesamten Debatte "Zur Benutzerkontensteuerung oder nicht zur Benutzerkontensteuerung" stecken bleiben :-).
Übrigens: @boileau Überprüfen Sie Ihren Fehler auf:
Wenn Sie nur "% SYSTEMROOT% \ system32 \ cacls.exe" oder "% SYSTEMROOT% \ system32 \ config \ system" oder beides an der Eingabeaufforderung ausführen - erhöht oder nicht, überprüfen Sie das Ergebnis auf der ganzen Linie.
quelle
Ein anderer Weg, dies zu tun.
quelle