Variable im Unterskript (2. Skript mit Runas) verwenden

  • Hallo, ich lasse einen Skript bei uns im Netz vom Benutzer laufen. Abhängig vom Benutzer oder Computer werden weitere Skripte mit Runas und einem Administratorenkonto ausgeführt. In diesen Unterskripten möchte ich aber den eigentlich angemeldeten Benutzer wissen. Aber das Makro @Username gibt mir natürlich den Namen des Runas Benutzers wieder. Kann ich auch im 1. Skript eine Variable mit $user-angemeldet = @Username definieren, die ich im Unterskript weiter verwenden kann ? Oder gibt es auch einen ganz andere Möglichkeit ?
    Gruß /Bernhard

  • Ich weiß nicht, ob ich deinen Punkt treffe..
    Was wäre wenn jeder Benutzer das Skript mit seinem Benutzernamen aufrufen würde.

    Run("C:\Program Files\Programm\bla.exe - " & @Username)

    Das Skript müsste die Benutzer kennen und könnte dann entsprechend reagieren.

    Grüße autoiter

  • Ich verstehe nicht worauf du hinaus willst. Das Problem ist, dass das Hauptskript von jedem Benutzer sowieso ausgeführt wird, aber z.B. ein notwendiges Unterskript (z.B. eine Installation) wegen den Rechten als Admin ausgeführt werden muss. Jetzt brauche ich aber auch die Information des eigentlich angemeldeten Benutzers im Unterskript. Und da hilft mir @Username nicht weiter.

  • Das verstehe ich wiederum nicht :D

    Es liegt sicher an meiner begrenzten Vorstellungskraft. Ich habe wohl das mit Skript und Unterskript nicht verstanden. Ich dachte, jeder hat seine ausführbare Datei und startet damit ein anderes Skript. Dabei könnte der Nutzer beim Ausführen seiner ausführbaren Datei eben seinen Benutzernamen als Programmaufruf mitgeben.

    Deine Beschreibung klingt für mich so, als würde jeder Nutzer das Script lokal ausführen. Warum gibt dir @Username dann nicht den Nutzer zurück?
    Welchen Nutzer erhältst du denn?

    Grüße autoiter

  • Übergib einfach aus dem Hauptscript (das mit User-Rechten läuft) den Inhalt von @Username als Parameter an die als Admin gestarteten Unterprogramme. In diesen kannst du mittels der Variablen "$CmdLineRaw" dann auf die Parameter zugreifen und weißt somit welcher Benutzer eigentlich gerade angemeldet ist...
    Die Parameter kannst du einfach getrennt durch ein Leerzeichen an den Pfad zum Programm anfügen:

    AutoIt
    RunAs ( "username", "domain", "password", logon_flag, "program" & " " & @Username  )


    Und im Unterprogramm kannst du dann auf den Usernamen zugreifen:

    AutoIt
    ConsoleWrite( "Momentaner User: " & $CmdLineRaw & @CRLF )

    LG
    Christoph :)

  • Danke für die gute Idee. Ich verstehe zwar die Parameterübergabe, aber leider nicht so sehr die Befehlszeile im Unterprogramm. Kann ich den Parameter @Username vom Hauptskript auch im Unterprogramm weiter verwenden wie z.B. in Msgbox oder in eine andere Variable schreiben ?

  • Wenn du das Starten mit Parametern implementiert hast, pack in das Unterprogramm ne Debugausgabe und lass dir den Inhalt von $CmdLineRaw ausgeben. Was du dann mit dem Usernamen machst ist dir überlassen...

    LG
    Christoph :)

  • Warum schreibst du den von dir gewünschten namen nicht in die Registry da kannst du den bequem wieder auslesen? Umschreiben, oder wie auch immer?
    Wenn Registry nicht geht würde sich noch das speichern als umgebungsvariable anbieten. das solte dann aber mit setx.exe gemacht werden, sonst steht der eintrag erst nach neustart zur verfügung. (falls das mit den umgebungsvariablen nicht hinhaut ---> ich bin unverbesserlicher xp fan - da gehts - vista/t/8 --> test it)

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)