Dialogfenster eines interaktiven Dienstes in die Userebene hollen

  • Hallo,

    folgendes Problemchen:

    Wenn ich bei Windows 7 ein Script über Systemprozess starte, läuft dieser in der Session 0 (also in Systemebene), d.h. werden alle Dialogfenster nicht auf der Userbene angezeigt... Nun das ist leider ein Problem, da der Nutzer sehen sollte, das gerade eine Installation oder ähnliches läuft und den Computer nicht neu startet. Ich weis das ich mit den Dienst - Erkennung interaktiever Dienste rumspielen kann, allerdings kann ich nur die Fenster in einer anderer Ebene mir anzeigen lassen und wenn der Nutzer nicht auf Meldung anzeigen klickt, dann sieht er die Installation nicht...

    Hatte schon mal einer diese Problem und wie hat er das gelöst?


    Ich danke schon im Voraus

    Mix

    Einmal editiert, zuletzt von Mix (12. August 2011 um 12:10)

  • Also anscheinend muss ich wohl selber die Probleme lösen :P

    Ich hab jetzt eine Lösung:

    Bei diesem Problem hilft uns nun das Programm psexec.exe von Mixrosoft z.B.: psexec \\localhost -i 1 c:\script.exe

    Mit diesem Befehl wird das Script in Session 1 ausgeführt, also in der Ebene wenn sich ein User local anmeldet.

    Nun neue Frage:

    Wenn sich der Nutzer Remoute anmeldet, kriegt er eine andere ID z.B. 2. Mit @UserName kriege ich nur den Nutzernamen. Wie kriege ich die ID raus? Also wenn einer nicht weis was ich meine, dann kann man im Taskmanager unter dem Reiter "Benutzer" die Kennung sehen, diese Kennung = ID.

    Danke im Voraus

    Mix

  • Schau dir das mal an:
    http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
    http://msdn.microsoft.com/en-us/library/…v=VS.85%29.aspx

    Oder alternativ auch per externem Tool: http://home.fnal.gov/~jklemenc/tslistusers.html

    EDIT:

    "qwinsta" als Windows eigenes cmdline Tool sollte dir auch ausreichen.
    http://www.techtalkz.com/blog/tips-n-tr…ommandline.html

    Direkte DLL Calls haben zu den cmdline Varianten natürlich den Vorteil, dass du stdout nicht auslesen und parsen musst.

    2 Mal editiert, zuletzt von misterspeed (10. August 2011 um 11:38)

  • Danke euch,

    hab aber auch schon eine Lösung, an der ich selber bisschen gebastelt habe. Ich rufe den Befehl quser auf, und übergebe alles an ein Array, dann wird nach aktiv oder active gesucht die Zeile davor in dem Array ist meine SessionID. Aber ich werde mir die Seiten mal anschauen, evtl sind dort elegantere Lösungen dabei.

    Grüße
    Mix