Per cmd eine Konsole mit Adminberechtigung öffnen

  • Sonstige

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Mokki.

    Per cmd eine Konsole mit Adminberechtigung öffnen

    Ich habe ein kleines Batch Proplem
    Ich versuche mit folgendem Code eine cmd mit Adminberechtigung zu öffnen.

    Quellcode

    1. set /p UserID=UserID (Admin-Rechte erforderlich!):
    2. RUNAS /user:R0707\%UserID% "cmd.exe /c net use P: \\Fs00sdga\public&&\"P:\Data\CopyData.cmd\""


    Es wird die Userkennung abgefragt und ein Passwort.
    Leider öffnet sich anschließend eine normale Konsole (schwarz nicht blau) und die hinterlegten Kopierbefehle können mangels Berechtigung nicht ausgeführt werden.

    "Als Admin ausführen" ist über die Gruppenrechtlinie deaktiviert.

    Alternativer weg:
    Mit

    Quellcode

    1. runas /user:R0710\%UserID% "powershell -nologo \"start-process powershell -verb runas\""

    Lässt sich allerdings eine Powershell mit Adminberechtigung öffnen.

    Ich würde jetzt gerne entweder mit der cmd oder powershell die CopyData.cmd aufrufen. Wichtig ist mir nur die Adminberechtigung damit die Dateien kopiert werden können.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Sollte eigentlich so gehn: (Nicht getestet)

    Quellcode

    1. runas.exe /savecred /user:administrator "powershell -nologo \"start-process powershell -verb runas\""
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    @Mokki Nein, das ist ja mein Problem. Aber wenn ich mich am Rechner selbst anmelde kann ich mit "Als Admin öffnen" ne Adminkonsole aufmachen.
    @Gather Ne Powershel mit Adminberechtigung bekomme ich mit meinem Code (welcher dein Code ist mit Variable für den User) schon hin. Sogar mit Username und Passworteingabe. Bei der Powershel weiß ich nicht wie ich der ne .ps oder cmd mitgeben kann die Sie sofort ausführen soll.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ist es möglich, ein .NET Programm dazwischenzuhängen?
    Dann könntest Du nämlich sowas machen:
    Konsolenanwendung erstellen. In der Main-Methode cmd starten:

    VB.NET-Quellcode

    1. Public Shared Sub Main(Args As String())
    2. Using P As New Process
    3. P.StartInfo.FileName = "cmd"
    4. P.Start()
    5. End Using
    6. End Sub

    In den Projekteinstellungen im Tab "Anwendung" auf "Windows-Einstellungen anzeigen" klicken, dann öffnet sich die app.manifest-Datei. Darin bei requestedExecutionLevel für level requireAdministrator angeben.
    Kompilieren und Doppelklick auf die Exe. UAC meldet sich und das Programm wird mit Administratorrechten gestartet und dadurch auch alle von diesem Programm gestarteten Prozesse.
    Natürlich lässt sich cmd hier auch problemlos mit Powershell oder jedem anderen Programm ersetzen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Schamash
    Hatte mal vor einer Weile diesen Code gefunden :

    Quellcode

    1. @echo off
    2. :: BatchGotAdmin
    3. REM --> Check for permissions
    4. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    5. REM --> If error flag set, we do not have admin.
    6. if '%errorlevel%' NEQ '0' (
    7. echo Requesting administrative privileges...
    8. goto UACPrompt
    9. ) else ( goto gotAdmin )
    10. :UACPrompt
    11. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    12. set params = %*:"=""
    13. echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    14. "%temp%\getadmin.vbs"
    15. del "%temp%\getadmin.vbs"
    16. exit /B
    17. :gotAdmin
    18. pushd "%CD%"
    19. CD /D "%~dp0"


    Klappt garantiert.
    Und Gott alleine weiß alles am allerbesten und besser.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „φConst“ ()

    Niko Ortner schrieb:

    Ist es möglich, ein .NET Programm dazwischenzuhängen?

    Das ist aus "vermeitlichen" Datenschutzbedenken hier zur Zeit leider nicht möglich.

    @Mokki Das war meine 2. Idee wie kann ich meinem Powershellaufruf denn den .cmd-Pfad zum öffnen mitgeben.

    @φConst tut mir leid, ich verstehe deinen Code einfach mal gar nicht. Wo müsste ich da den Pfad der auszuführenden cmd "P:\Data\CopyData.cmd" einfügen? Was macht der Code mit der .vbs? Wo gebe ich die Userkennung mit?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schamash“ ()

    @Mokki meinst du so in etwa?
    Werde ich morgen mal testen.

    Quellcode

    1. runas /user:R0710\%UserID% "powershell -nologo \"start-process powershell P: \\Fs00sdga\public&&\"P:\Data\CopyData.cmd\" -verb runas\""
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @Schamash
    Guten Tag(Abend),

    Quellcode

    1. @echo off
    2. :: BatchGotAdmin
    3. REM --> Check for permissions
    4. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    5. REM --> If error flag set, we do not have admin.
    6. if '%errorlevel%' NEQ '0' (
    7. echo Requesting administrative privileges...
    8. goto UACPrompt
    9. ) else ( goto gotAdmin )
    10. :UACPrompt
    11. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    12. set params = %*:"=""
    13. echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    14. "%temp%\getadmin.vbs"
    15. del "%temp%\getadmin.vbs"
    16. exit /B
    17. :gotAdmin
    18. pushd "%CD%"
    19. CD /D "%~dp0"
    20. REM HIER KOMMT DEIN CODE ALSO:
    21. start P:\Data\CopyData.cmd
    Und Gott alleine weiß alles am allerbesten und besser.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „φConst“ ()

    @φConst funktioniert leider nicht. Da scheint hier was deaktiviert zu sein. bei mir öffnet sich nur ein Texteditor mit diesem Text:

    Quellcode

    1. Set UAC = CreateObject("Shell.Application")
    2. UAC.ShellExecute "cmd.exe", "/c P:\CCPulse_Workspaces\DateienKopieren.bat ", "", "runas", 1


    Die Konsole bleibt stehen bei

    Quellcode

    1. echo Requesting administrative privileges...


    @Mokki mir Fehlt das Wissen um der admin Powershell die .cmd zu übergeben. So wie ich es geschrieben habe (s.o.) funktioniert es jedenfalls nicht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schamash“ ()

    Achso da hab ich das Problem falsch verstanden.... es ist unmöglich ein .cmd Script aus der Powershell auszuführen.... also du bekommst nie eine Cmd mit Adminrechten hin? Selbst wenn du diese z.b. über die Powershell oder den Taskmgr startest?

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Das "als Admin ausführen" ist über Gruppenrichtline gesperrt. Allerdings kannn ich mit meinem Code eine Powershell mit Adminrechten öffenen. Jetzt muss ich der Powershell "nur" noch die Kopierbefehle übergeben. Per Hand ist das schon möglich, aber ich denke das Powershell auch die möglichkeit bieten müsste eine cmd/bat oder auch .ps Datei beim start selbsttätig auszuführen.

    Zur Zeit meldet sich der User ab, dann melde ich mich mit meinen Zugangsdaten an dem PC an, kopiere 2 Dateien nach c:\Prgramme\.... und melde mich dann wieder ab. Das ist aber ziemlich umständlich und so wollte ich das per Skript aus der Anmeldung des Users heraus ausführen. Wichtig wäre mir das ich meine Userdaten eingeben muss.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Mokki schrieb:

    deaktivier

    OK, kann ich das per Konsole ändern? oder der PS einen Startpfad mitgeben? Zur Zeit öffnet sie sich in "C:\Windows\system32" wenn der SpartPfad D:\Data wäre könnte ich meine cmd oder ps ja auch einfach "CCopy.ps" nennen und dann ausführen das würde mir schon genügen :)
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Jaein...
    Es geht, aber nur wenn die PS als Admin läuft: superuser.com/questions/106360…ion-of-powershell-scripts

    Was du mal versuchen kannst ist mittels runas die powershell als Admin auszuführen und hinten dran als Argument den Befehl nehmen(ist aber ungetestet)

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    @Mokki bekomme ich leider so nicht hin. Hier ist wahrscheinlich einfach zuviel gesperrt.
    Ich werde das Thema mal noch offen lassen falls jemand eine gute Idee hat. Bisdahin werde ich die 3 Befehle einfach in einer Textdatei speichern und per Copy - Paste in meine AdminPS schmeißen :) nicht schön, aber es tut's.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @Schamash
    Das sieht so aus, als müsste du konfigurieren, mit welcher Applikation .vbs Dateien geöffnet werden müssen.


    Denn der Code schreibt diesen Text

    Quellcode

    1. Set UAC = CreateObject("Shell.Application")
    2. UAC.ShellExecute "cmd.exe", "/c P:\CCPulse_Workspaces\DateienKopieren.bat ", "", "runas", 1

    in die Datei,


    Quellcode

    1. "%temp%\getadmin.vbs"
    und löscht sie dann wieder,

    Quellcode

    1. del "%temp%\getadmin.vbs"


    .vbs Dateien müssen mit
    "Microsoft ® Windows Based Script Host" ausgeführt werden.

    Ein letzter Versuch,

    Quellcode

    1. @echo off
    2. :: BatchGotAdmin
    3. REM --> Check for permissions
    4. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    5. REM --> If error flag set, we do not have admin.
    6. if '%errorlevel%' NEQ '0' (
    7. echo Requesting administrative privileges...
    8. goto UACPrompt
    9. ) else ( goto gotAdmin )
    10. :UACPrompt
    11. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    12. set params = %*:"=""
    13. echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    14. wscript "%temp%\getadmin.vbs"
    15. del "%temp%\getadmin.vbs"
    16. exit /B
    17. :gotAdmin
    18. pushd "%CD%"
    19. CD /D "%~dp0"
    Und Gott alleine weiß alles am allerbesten und besser.