Inputbox wird nicht angezeit

  • Hallo zusammen,

    ich weiß momentan nicht weiter. Ich habe ein Skript geschrieben das noch neben ein paar anderen Dingen ein paar Werte in die Registrierung schreiben soll.
    Da normale Benutzer dieses Skript ausführen sollen, habe ich es so gelöst das ich zwei Skripte daraus gemacht habe und
    das zweite Skript als Administrator ausgeführt wird da sonst die Reg-Einträge nicht geschrieben werden können.

    Auf meinem Test-System funktioniert dieser Aufruf auch. Nur auf den restlichen Clients nicht.


    Die erste Anwendung startet die zweite Anwendung per folgenden Befehl:

    Code
    RunAsWait( $name, @ComputerName, $password, 0, "regwrite.exe", $installdir)


    zur Absicherung habe ich noch ein

    Code
    ProcessWaitClose("regwrite.exe")

    eingebaut.


    In der "regwrite.exe" steht folgendes

    Auf dem Test-System erscheint die Inputbox aber auf den restlichen Clients nicht.
    Hat jemand eine Idee woran das liegen könnte ?


    Greetings

  • In welchem Laufwerk liegt dein Tool? Habe bei mir auf dem Notebook unheimliche Probleme compilierte .exe-Programme irgendetwas auf C: machen zu lassen. Aus dem Scite heraus (als Admin) kein Problem, als .exe mit entsprechender Eigenschaft "als Administrator ausführen" keine Chance ...

    Des weiteren stelle ich mir die Frage wie das erste Skript das zweite als Admin aufrufen möchte, wenn es selbst kein Admin ist. Ich weiß ja nicht wie eure Rechner eingerichtet sind, aber wenn pro Rechner nur 1 Benutzer ist und dieser ist auch Admin, dann würde ich wieder auf meine erste Frage verweisen, andernfalls wäre es entgegen den Sinn einer Benutzersteuerung, wenn ein user ohne Admin Rechte Prozessse als Admin starten könnte.

    Grüße Yaerox

    Grüne Hölle

  • Als GPO wird ein lokaler Admin-User auf allen Notebooks automatisch angelegt.
    Ich habe ja noch zwei weitere Anwendungen die als Admin ausgeführt werden müssen und bei denen funktioniert auch die Ausführung als Admin.
    Nur bei dieser Anwendung nicht. Das ist es ja was mich so stutzig macht.

  • Okay dann würde mich interessieren auf welchen Laufwerken dies ist. Sind alle in dem gleichen Laufwerk? Wenn nicht wäre die Frage ob es C: ist, ein gemountetes, oder was für eins auch immer. Wenn du programmier-technisch den Schritt immer gleich machst, dann gäbe es jetzt ja keinen Grund aus programmierer Sicht wieso es nicht geht.


    Da sehe ich grad du machst das logon_flag auf 0 ...

    logon_flag 0 - Interactive logon with no profile.
    1 - Interactive logon with profile.
    2 - Network credentials only.
    4 - Inherit the calling process's environment instead of the user's environment.

    Grüße Yaerox

    Grüne Hölle

  • Ich würde sagen dass er deine Logindaten nicht nutzt und sich als Gast/Anonymous anmeldet. Mit 1 sollte er das nutzen. Unterschied von 1 und 2 kenne ich jetzt nicht, ich nutze diese Run geschichten nicht so häufig.

    Grüße Yaerox

    Grüne Hölle

  • naja ich habe das so interpretiert

    0 bedeutet für mich das der Benutzer zwar vorhanden ist aber es kann ja sein das noch kein Profil existiert.
    1 Benutzer und Profil müssen exisitieren

  • Wenn ich folgendes (tmp.exe)

    Code
    RunAsWait( "username", @ComputerName, "passwort", 2, "tmp2.exe")
    If @error Then MsgBox(0, "", @error)


    nutze, und in tmp2.exe folgendes stehen habe:

    Code
    $uname = InputBox("Benutzereingabe", "Bitte geben Sie ihr Benutzernamen ein")

    Funktioniert das. Bei mir geht es mit Flag 0 und 1 nicht, mit 2 schon.

    Probier das vll. mal mit Flag 2.

    Grüße Yaerox

    Grüne Hölle

  • Okay dann würde mich interessieren auf welchen Laufwerken du dich befindest. Geschiet alles auf diesem Laufwerk? Wenn nicht wäre die Frage ob es C: ist, ein gemountetes, oder was für eins auch immer. Wenn du programmier-technisch den Schritt immer gleich machst, dann gäbe es jetzt ja keinen Grund aus programmierer Sicht wieso es nicht geht.

    Ggf debuggen und Logs anhängen.

    Grüße Yaerox

    Grüne Hölle

  • Hier mal das ganze Skript:

  • Nutze mal einen anderen Standort als Laufwerk C: (sofern möglich). Und ich würde dazu noch ein wenig debuggen ...

    Habe gerade nicht die Zeit dafür das alles selbst hinzubasteln. Fast jeder deiner Befehle hat einen Rückgabe/Error-Wert ... les diese aus, schau wo dein Programm stehen bleibt und mit welchen Werten. Die postest du ggf. und dann schauen wir weiter.

    Grüße Yaerox

    Grüne Hölle

  • Doch ich will es ja gelöst haben, ich arbeite mich gerade bei AutoIt ein und viele Funktionen muss ich erst noch googlen.
    Ich will ja nicht ständig fragen. Und dazu kommt ja noch mein Tagesgeschäft.

    Wie ist der Befehl damit das Skript ein komplettes Log schreibt damit ich das später auswerten kann ?

  • Es gibt einige Leitfäden hier im Forum die einmal zeigen wie man Fragen richtig stellt, und was man dafür alles an Informationen angeben sollte, damit es die Helfer einfacher haben ein Problem zu lokalisieren und zu lösen. Diese Mitaarbeit hat mir ein wenig gefehlt. Wenn du sagst du bist neu und du weisst nicht wie das funktioniert ist das okay, aber vll. würde ich dann erstmal ein Blick in die Basics werfen, damit du lernst Probleme deutlich zu machen. Dazu (meine Meinung) ist es kein toller Programmierstil, wenn du kein Error-handling betreibst (Rückgabewerte und @error auswerten).

    Vll. mal in das buch von pee reinschauen: https://slzm.de/blog/autoit-leicht-gemacht/

    Grüße Yaerox

    Grüne Hölle