Vor Windows 10 war es einfach, eine Aufgabe den ein Benutzer angelegt hat, durch einen anderen Benutzer ausführen zu lassen, es genügte die Sicherheitsberechtigungen auf Dateisystemebene anzupassen. Seit Windows 10 ist das leider nicht mehr ganz so einfach.
Bevor Microsoft das Thema Berechtigungen für Aufgaben geändert hat, konnte man einfach einen oder weitere Benutzer durch die Anpassung der Zugriffsrechte der jeweiligen Aufgabendatei unter
C:\Windows\System32\Tasks
das Ausführen ermöglichen. Ab Windows 10 sind die Berechtigungen für die Aufgabenplanung in die Registry unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
gewandert und nicht mehr so einfach anpassbar. Neben dem neuen Ort machen es einem die Redmonder zudem unnötig schwer, da es kein Tool, keine GUI oder einen Befehl zum Anpassen der Berechtigungen gibt.
Anwendungsfall
Häufig kommt es vor, das man eine Aufgabe, die in einem bestimmten Benutzerkontext (z.B. als Admin oder als System) ausgeführt und für Benutzer die keine administrativen Rechte haben startbar sein soll.
Konfiguriert nun der Administrator eine Aufgabe, wird diese nicht dem gewöhnlichen (nicht-administrativen) Benutzer angezeigt. Umgekehrt ist das wiederum schon der Fall! Genau dieses Verhalten lässt sich dazu nutzen, um zumindest für einen bestimmten Benutzer eine spezifische Aufgabe anzulegen:
- Als Benutzer die Aufgabenplanung öffnen und eine neue Aufgabe (soweit möglich) anlegen.
- Als Administrator die Aufgabenplanung öffnen und die zuvor vom Benutzer angelegte Aufgabe bearbeiten. Nun z.B. den Benutzerkontext (Admin, System …) eintragen und ggf. weitere Einstellungen vornehmen.
Die so erstellte und bearbeitete Aufgabe bleibt für den Benutzer im Zugriff und kann ausgeführt werden.
Berechtigungen für Aufgabe(n) ändern
Wie eingangs erwähnt befinden sich die Berechtigungen in der Registry, seitens Microsoft gibt es dazu nicht wirklich viel Info außer
Microsoft – Docs – Security Contexts for Tasks
Findige Kollegen haben allerdings durch Ausprobieren einiges herausgefunden. Der vermutlich wichtigste Beitrag hierzu stammt von Michael Albert:
Michls Tech Blog – Windows: Permit a limited user to run a schedule task defined by an Administrator
Man beachte dort zudem das Kommentar von “grubi” vom 31.03.2020. Das sehr überschaubare PowerShell-Skript aus dem Kommentar sieht so aus:
$scheduler = New-Object -ComObject "Schedule.Service" $scheduler.Connect() $task = $scheduler.GetFolder("").GetTask("<TASKNAME>") $sec = $task.GetSecurityDescriptor(0xF) $sec = $sec + ‘(A;;GRGX;;;AU)’ $task.SetSecurityDescriptor($sec, 0)
Man ersetzt “<TASKNAME>” durch die Bezeichnung der Aufgabe und führt das Skript aus. Zu beachten ist, das dieses Skript nur auf Aufgaben angewendet werden kann, die vom gleichen Benutzer erstellt wurden, der nun das PowerShell-Skript ausführt!
Ein weiteres Skript findet man im TechNet Forum unter
Scheduled Task that Any User can run
in der Antwort von “MotoX80” vom 27.08.2019 bzw. in einfacher Lesbar unter
GitHub – withakay/UnlockScheduledTask.ps1
Dieses Skript kann im Gegensatz zum vorigen auch Aufgaben die durch andere Benutzer erstellt wurden ändern. Der Name der Aufgabe wird mittels Parameter übergeben:
.\UnlockScheduledTask.ps1 -taskname "<TASKNAME>"
Ggf. muss man vorher noch
Set-ExecutionPolicy -ExecutionPolicy bypass
ausführen. Für alle Befehle werden erhöhte Rechte benötigt!
Beide hier gezeigten Skripte haben gemein, das sie Aufgaben so berechtigen, das alle Benutzer sie sehen und ausführen können.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
0 Kommentare
1 Pingback