1 2 3 Previous Next 30 Replies Latest reply on Jan 27, 2012 6:27 AM by Markus.Zierer

    MsgBoxT

    Apprentice
      Hallo,
      stelle gerade unser vorhandenes Reboot Management Projekt in Hinblick auf Windows 7 um. Nutze hierfür das MsgBoxT.exe Programm. Leider kommt keine Meldung auf dem Bildschirm wenn das Projekt mit dem Serviceinstaller gestartet wird. Mit dem Autoinstaller läuft alles wunderbar.

      Aufruf im Projekt sieht so aus :

      ExecuteEx('.\extern$\MsgBoxT.exe /t:"Achtung : Installation" /m:"Ihr Computer muss aufgrund einer Softwareaktualisierung neu gestartet werden. Möchten Sie den Neustart jetzt durchführen?" /b:YN /i:Q /f:T /w:60','_Returncode','')/?/TS

      If %_Returncode%='6'
      goto Start
      : Start
      Execute('shutdown.exe -r -t 30 -c "PC wird durch enteo neu gestartet" -f')/x64/TS
      Else
      goto Ende
      : Ende
        • 1. Re: MsgBoxT
          Markus.Zierer Expert
          Das liegt an der Session 0 Isolation. Die Jungs von NWC Services haben dafür das Message Box Tool neu geschrieben. Du kannst Dir das neue von deren HP runterlasen. Dann sollte dein Script wieder funktionieren.
          • 2. Re: MsgBoxT
            Stefan.Sandmeier Apprentice
            Hi,

            Du musst bei msgboxt den /S Parameter verwenden um die Nachricht vom Service Account an die Session des angemeldeten Users zu schicken
            (Details siehe Readme von msgboxt)

            Das musste man übrigens auch bei XP schon so machen wenn man die msgboxt über einen Serviceaccount starten wollte, nur war da die Session ID des lokal angemeldeten Users immer 0

            Bei Windows 7 wirds schon etwas komplizierter,  hier wird die Session ID des angemeldeten Users pro ab/anmelden um eins hochgezählt. Deshalb habe ich in meinem Rebootmgmt Script eine WMI Abfrage eingebaut die mir die richtige SessionID ausliest. (Setzt natürlich voraus, dass nur ein user lokal angemeldet ist..)

            Hier mal der relevante Teil meines Scripts

            ! - Hier wird abgefragt, ob ein explorer.exe läuft, wenn ja frage den User nach Reboot, ansonsten Reboot
            Set('WMI_Handle','0')
            Set('WMI_SESSIONID','0')
            WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=explorer.exe','WMI_')
              Handle
              SessionID
            EndProc
            If %WMI_Handle%='0'
              goto _reboot
            Else
              goto _askUser
            !
            !-User kann den Reboot 5mal um 10minuten verzögern, danach wird der Rechner automatisch neu gestartet
            : _askUser
            Set('_reboot_timeout','30')
            If CheckPlatform(cpWinx64)
            ExecuteEx('.\extern$\msgboxtx64.exe /t:"Neustart benötigt" /m:"Der Computer muss auf Grund eines Updates neu gestartet werden." /m:"" /m:"Sie können den Neustart noch %_count%mal um 10 Minuten verzögern, danach wird das Gerät automatisch neu gestartet" /m:"" /m:"Wollen sie jetzt neu starten" /b:YN /i:Q /w:60 /f:T /S:%WMI_SESSIONID%','_return','6')/?
            Else
            ExecuteEx('.\extern$\msgboxt.exe /t:"Neustart benötigt" /m:"Der Computer muss auf Grund eines Updates neu gestartet werden." /m:"" /m:"Sie können den Neustart noch %_count%mal um 10 Minuten verzögern, danach wird das Gerät automatisch neu gestartet" /m:"" /m:"Wollen sie jetzt neu starten" /b:YN /i:Q /w:60 /f:T /S:%WMI_SESSIONID%','_return','6')/?
            If %_return%='6'
            goto _reboot
            • 3. Re: MsgBoxT
              Apprentice
              wie zählt er denn da die SessionID hoch?
              • 4. Re: MsgBoxT
                Stefan.Sandmeier Apprentice
                Hi,

                Also, beim ersten mal anmelden nach dem reboot bekommt der User die Session ID 1, es genügt schon wenn man sich einmal abmeldet und mit dem selben User anmeldet, dann bekommt man die Session ID 2. Kann man relativ leicht kontrollieren indem man beim Taskmanager im Reiter User die ID des Users der an der Konsole angemeldet ist kontrolliert.

                Mit dieser Zeile
                WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=explorer.exe','WMI_')
                  Handle
                  SessionID


                Lese ich über WMI die Attribute Handle und SessionID der Explorer.exe in die Variablen WMI_Handle und WMI_SessionID
                als erstes wird WMI_Handle überprüft -> hat die Variable den Wert 0 (setze ich vorher sicherheitshalber auch auf 0) läuft kein Explorer, und man kann davon ausgehen, dass niemand angemeldet ist und der Rechner ohne nachfragen neu gestartet werden kann.  Läuft eine Explorer.exe steht in der WMI_SessionID die aktuell aktive SessionID und an die wird dann mit msgboxT die Messagebox geschickt (mit /S:%WMI_SESSIONID%)

                mfg
                Stefan
                • 5. Re: MsgBoxT
                  dkoenig Apprentice
                  Hi Stefan,

                  probier mal /s:-1, das sollte die Message immer an die Console schicken.

                  Viele Grüsse

                  Dave
                  • 6. Re: MsgBoxT
                    Obi-WanKenobi Rookie
                    Ein Download von NWC Services benötigt eine Freischaltung. Die hatte ich vor einigen Stunden beantragt. Wie lange dauert in der Regel eine Freischaltung ?

                    Viel Grüße

                    Silke
                    • 7. Re: MsgBoxT
                      alps Specialist
                      Hallo,

                      hier ebenso die Frage: Wie lange dauert die Freischaltung bei NWC ungefähr?
                      • 8. Re: MsgBoxT
                        FrankScholer Master
                        Nicht so lange... ;-)
                        • 9. Re: MsgBoxT
                          alps Specialist
                          Danke für die Aktivierung
                          • 10. Re: MsgBoxT
                            alps Specialist
                            Hallo,

                            habe ich etwas übersehen oder wo kann ich die Rückgabewerte finden? Bisher ist mir nur 6 für "OK" bekannt oder denk ich in die falsche Richtung?
                            • 11. Re: MsgBoxT
                              Markus.Zierer Expert
                              guckst du hier

                              https://community.ivanti.com/message/251439#251439

                              hab nach was anderem gesucht und bin grad zufällig drüber gestolpert...
                              • 12. Re: MsgBoxT
                                alps Specialist
                                Hallo

                                und danke für die Antwort!

                                Eine Frage habe ich jetzt noch. Kann ich bei MsgBotT auch irgendwo das Timeout komplett wegfallen lassen? In unserem Fall dient es nur als Ersatz der ganz normalen MsgBoxEx (funktioniert aber natürlich besser durch die Session Geschichte).
                                • 13. Re: MsgBoxT
                                  FrankScholer Master
                                  Hi,

                                  ja klar, einfach den Timeout auf 0 setzen... anbei mal ein PDF über die Usage (ist aber für Version 1.0, daher noch nix drin zu Session-Support, aber ansonsten gab's auch keine Änderungen)...

                                  HTH, Grüße Frank
                                  • 14. Re: MsgBoxT
                                    alps Specialist
                                    Hallo Frank,

                                    danke für das Dokument. Es hat schonmal weitergeholfen.

                                    Allerdings komme ich bei dem Problem immer noch nicht weiter, die MessageBox wird einfach nicht angezeigt auf unseren Windows 7 Systemen. Ich habe nun diverse Parameter genutzt: /s:-1, /S:-1, /f:TS oder die Session ID wie oben durch die Ermittlung des Explorer Prozesses bestimmt. Alle Varianten werden nicht angzeigt.

                                    Hat jemand noch eine Idee?
                                    1 2 3 Previous Next