Jump to content
Sign in to follow this  
LigH

"Als Administrator ausführen" an der Eingabeaufforderung

Recommended Posts

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.

Edited by LigH

Share this post


Link to post
Share on other sites

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

Edited by Daniel -MSFT-
  • Like 1

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...