LigH 12 Geschrieben 3. März 2015 Melden Teilen Geschrieben 3. März 2015 (bearbeitet) Im Windows-Explorer und allem, was mit der grafischen Shell zusammenhängt, kann man Programme per Rechtsklick aus dem Kontextmenü "Als Administrator ausführen". Dabei geht es weniger um Benutzer und Benutzergruppen mit solchen Namen, sondern um die "Benutzerkontensteuerung" UAC und die Ausführung mit den Rechten einer höheren Klasse (elevated privileges). Aus guten Grund erscheint bei einem solchen Versuch eine Sicherheitsabfrage. Für Benutzer, die der Gruppe der Administratoren angehören (also ein administratives Benutzerkonto haben) genügt ein Klick auf einen "Ja"-Button, bei Benutzern mit eingeschränktem Benutzerkonto muss dafür stellvertretend die Anmeldung eines administrativen Nutzerkontos eingegeben werden. Was mir in Windows bisher fehlt, ist die Möglichkeit, auch an der Eingabeaufforderung oder in Batch-Dateien einzelne Programme mit erhöhten Rechten ausführen zu können, auch wenn ansonsten der aufrufende Kommandointerpreter nicht selber mit erhöhten Rechten läuft. Ich möchte dafür also nicht gleich die cmd.exe (oder PowerShell oder den Far manager usw.) "als Administrator ausführen", sondern nur ab und zu mal einen Befehl entsprechend durch Eintippen oder im Verlaufe einer Batch-Sequenz mit erhöhten Rechten ausführen. Meinetwegen darf dafür gern der UAC-Dialog erscheinen, soll er ja auch. Es gibt eine ganze Reihe Vorschläge, dies mit runas.exe und dem Start als Benutzer "Administrator" zu tun. Nur hat das mehrere Haken: Erstens darf sich der Benutzer "Administrator" (aus gutem Grund) sicherlich meist nicht interaktiv anmelden, außer vielleicht im "Abgesicherten Modus", und deshalb wird wohl in meinen Versuchen auch immer ein derartiger Aufruf verweigert: runas [...] /user:administrator program Zweitens bedeutet das Ausführen unter einem administrativen Benutzerkonto trotzdem nicht grundsätzlich, dass damit auch erhöhte Rechte erteilt werden. Und drittens sollte man das Passwort des "Administrator"-Kontos gar nicht wissen... Ein CLI-Programm mit der Funktion "starte ein Programm mit administrativen UAC-Rechten" ist mir von Microsoft bisher nicht bekannt. Es geht wohl lediglich anders herum: runas /trustlevel:Standardbenutzer program In aktuellen Linux-Distributionen gibt es die sudo-Methode, bei der Mitglieder einer Gruppe von Super-Usern (sudoers) berechtigt sind, mit ihrem eigenen Passwort über den Befehl sudo die Befehle auszuführen, für die man sonst die Rechte des Nutzers root benötigt. So etwas gibt es zwar auch für Windows, aber das wäre noch mal eine zusätzlich zu installierende Verwaltungsebene. Die UAC reicht dafür aus, man bräuchte eigentlich nur ein Kommando wie "runasadmin"... Bei Jürgen Lüthje habe ich nun entsprechende Freeware gefunden: RunAsAdmin 1.01 Damit wäre dann auch das Problem zu lösen, das ich immer mal mit externen NTFS-Datenträgern habe, dass ich den Verzeichnissen darauf erst mal Schreibberechtigung für die Gruppe "Benutzer" zuweisen muss, damit sie an mehreren PCs zum Datenaustausch verwendbar sind: @ECHO OFF REM ohne Parameter aufgerufen IF "%1" == "" GOTO syntax REM Versuch, das Wurzelverzeichnis zu übergeben IF "%~p1" == "\\" GOTO syntax RunAsAdmin icacls "%1\*" /grant Benutzer:M /T GOTO :end :syntax ECHO Erteilt Schreibberechtigung für ein Verzeichnis und alle enthaltenen Dateien und Unterverzeichnisse ECHO WARNUNG: *NICHT* auf das Wurzelverzeichnis (X:\) anwenden! ECHO Syntax: %~n0 ^<Lw:\Pfad^> :end Falls so etwas doch noch mit Bordmitteln möglich ist, würde ich mich über Hinweise freuen. Kleiner Nachteil ist natürlich, dass sich für den mit erhöhten Rechten aufgerufenen Befehl ein neues Interpreterfenster öffnet und danach verschwindet; wer am Ende warten will, muss vielleicht doch mit zusätzlicher Batch inkl. PAUSE oder mit "cmd /k" arbeiten. bearbeitet 3. März 2015 von LigH Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 3. März 2015 Melden Teilen Geschrieben 3. März 2015 (bearbeitet) Hi LigH, sudo liefert ähnliche Sicherheitsprobleme wie runasadmin, wie die vielen Sicherheitslücken unter Linux zeigen,k die auf das SUID-Bit zurückgeführt werden können. Wie Du in einem Script erhöhte Rechte anfordern kannst, findest Du zum Beispiel in Creating a Self-Elevating Script oder New Elevation PowerToys for Windows Vista oder Self Elevate VBScript: 'Re-runs the process prompting for priv elevation on re-run sub uacPrompt 'Check if we need to run in C or W script interpreter = "wscript.exe" If Instr(1, WScript.FullName, "CScript", vbTextCompare) = 0 Then interpreter = "wscript.exe" else interpreter = "cscript.exe" end if 'Start a new instance with an elevation prompt first Set shellApp = CreateObject("Shell.Application") shellApp.ShellExecute interpreter, Chr(34) & WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 'End the non-elevated instance WScript.Quit end sub Dass der User 'Administrator' ne Dir nicht funktioniert, liegt daran, dass der seit Vista standardmäßig deaktiviert ist. CMD-Shells kann man übrigens aus einer CMD-Shell auch mit Parametern aufrufen und darüber steuern, ob sie im Hintergrund laufen sollen oder ob sie das Fenster zum Ende schliessen oder stehen lassen sollen. Probier mal cmd /k z.B, cmd /? gibt Dir mehr Infos. Have fun! Daniel bearbeitet 4. März 2015 von Daniel -MSFT- 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.