Bestimmten befehl NICHT als Admin ausführen.

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Bestimmten befehl NICHT als Admin ausführen.

    Hallo, hab schon nach einges gesucht, doch immer finde ich nur wie man im manifest sein eigenes Programm als Admin startet. Dies suche ich nicht denn es ist bereits so eingestellt.
    Vorab, ich muss das Programm als Admin ausführen weil das Programm sonst nicht auf den Verweis Interprob.Shell.32.dll zugreifen kann die sich im Debug Ordner befinden, also grundsätzlich schon, nur nicht wenn ich das Programm in dem Programm verzeichniss aus starte, da die Software denn Admin rechte braucht. Dies habe ich getan. Jetzt gibt es aber ein weitere problem an der geschichte. Unzwar muss ich über CMD den befehl

    Quellcode

    1. subst
    ausführen. Leider funktioniert das nur als normaler benutzer und nicht als admin. Das Problem ist das die Software aber als Admin gestartet ist und somit auch die Shell("subst .....) auch als admin startet und somit der CMD befehl nich Funktioniert. Mit Process.Start usw. hab ich es auch schon getestet, leider funktioniert es nicht. Meine frage ist also: Kann ich den befehl Shell("subs....) auch als normalen benutzer durchführen obwohl das Programm als Admin gestartet ist? Also dass nur dieser Befehl in der Zeile nicht als Admin gestartet wird? ?(

    WeLoveBurgers schrieb:

    es sollte schon möglich sein, das als anderer user auszuführen
    "sollte" ist Konjunktiv und wird es auch bleiben.
    Bitte kein Halbwissen verbreiten, wie es deiner Meinung nach gehen "sollte".

    Mit dem RunAs-Verb kannst du den Prozess nur auf Admin heben, nicht unter einem User starten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    SeriTools schrieb:

    Das hier könnte evtl. für dich funktionieren: superuser.com/a/374866
    :thumbup:
    Die runas.exe mit Trustlevel als Prozess zu starten funktioniert:

    VB.NET-Quellcode

    1. Dim RunAsExe = "C:\Windows\System32\runas.exe"
    2. Dim Cmd = "C:\Windows\System32\cmd.exe /k"
    3. Dim TrustLevel = "Standardbenutzer"
    4. Dim Args = "/trustlevel:" & TrustLevel & " """ & Cmd & """"
    5. Dim StartInfo = New ProcessStartInfo(RunAsExe)
    6. StartInfo.UseShellExecute = False
    7. StartInfo.Arguments = Args
    8. Dim Prc As New Process
    9. Prc.StartInfo = StartInfo
    10. Prc.Start()
    Man muss halt vorher mit runas /showtrustlevels die verfügbaren Trust-Levels ermitteln.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    SeriTools schrieb:

    /trustlevel:0x20000
    Hatte ich versucht, landete aber unter meinen Fehlversuchen.
    Aber das könnte in meiner restriktiven Umgebung auch eine Fehlbeobachtung gewesen sein, da ich hier wegen Policies als "Standardbenutzer" noch nicht mal notepad ausführen darf.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --