Announcement

Collapse
No announcement yet.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Hallo Nico,

    danke für den Link, ich werde es mir gleich anschauen. Was meinst Du mit "WIE willst Du Dich anmelden ?" ? Ich sende ein str+alt+entf und klicke auf "Abmelden" in Fenster "Windows NT Sicherheit"

    Viele Grüße

    Hans-Pete

    Comment


    • #17
      Hi,

      Ganz so einfach scheint's doch nicht zu sein.
      PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MakeLong(MOD_ALT or MOD_CONTROL, VK_DELETE)) öffnet bei mir lediglich den <i>Ausführen</i>-Dialog.

      Gruß
      Gesin

      Comment


      • #18
        Hallo Gesine,

        nein, einfach ist das ganze wirklich nicht; wenn ich es richtig verstehe, muß WM_Hotkey an "alle" Fenster des <b>Winlogon</b>-Desktops
        gesendet werden und genau da liegt der Knackpunkt:

        1) der Winlogon-Desktop muß aktiviert werden
        2) der rufende Thread muß Teil des Winlogon-Desktops sein

        Leider hänge ich noch bei 1): Die API OpenDesktop liefert mir nicht das erwartete Handle zurück...ich suche weiter

        Gruß Hans-Pete

        Comment


        • #19
          Hallo,

          Windows NT wurde mit Ziel, ein möglichst sicheres System zu bauen konzipiert. Daher hat man 3 separate Desktops vorgesehen: <br>
          1. WinSta0-Desktop (der Desktop des interaktiv angemeldeten Benutzers) <br>
          2. WinLogon (Anmeldebildschirm) <br>
          3. ScreenSaver (Bildschirmschoner) <br>
          Aus Sicherheitsgründen kann kein Deskop direkt auf den anderen zugreifen (denn ansonsten könnte ein Trojaner die Annmeldedaten im Login-Dialog mitlesen).
          Der offizielle Weg besteht darin, ein eigene GINA-DLL zu implementieren und dort die Brücken zu bauen, die man benötigt. Denn in diesem Fall schiebt Microsoft die Verantwortung an der Erbauer der GINA-DLL weiter.

          Im Microsoft Platform-SDK liest sich das auszugsweise so: "<i>When Winlogon initializes, it registers the CTRL+ALT+DEL secure attention sequence (SAS) with the system, and then creates three desktops within the WinSta0 window station.

          Registering CTRL+ALT+DEL makes this initialization the first process, thus ensuring that no other application has hooked that key sequence.

          As the owner of these desktops, Winlogon can switch the current, or visible, desktop to any of the three desktops and allow the GINA access to this functionality. In general, GINA developers will not change the current desktop because Winlogon sets the desktop appropriately before communicating with the GINA. </i>".

          Mit <b>WlxSwitchDesktopToWinlogon</b> kann die eigene GINA-DLL auf den offiziellen Wegen zum WinLogon-Desktop wechseln.
          &#10

          Comment


          • #20
            Du willst den Benutzer also abmelden...<br>
            ...wie wär's denn mit

            ExitWindowsEx(EWX_LOGOFF, 0);

            ( WinVNC ist ein Service mit genügend Rechten einen Thread, der extra erzeugt wird, in einen anderen Desktop umzuschalten (es wird also der Desktop nicht aktiviert, sondern 'nur' die Aktion dort ausgeführt). Ein Thread, der seinen Desktop wechseln will, darf _keine_ Handles geöffnet haben, die etwas mit der GDI oder Benachrichtungen zu tun haben, also keine Fenster etc. )

            Gruß Nico

            PS: eine GINA kann ich Dir schreiben, aber dazu sollten wir uns per eMail unterhalten

            Comment


            • #21
              Hallo Nico,

              da habe ich mich wohl etwas unklar ausgedrückt: Eigentlich möchte ich, daß die Arbeitsstation nach dem automatischen Login sofort gesperrt wird. Ursprünglich dachte ich, das wäre über eine API-Funktion möglich. Und dann erst habe ich an die Simulation des Affengriffs gedacht.

              Viele Grüße Hans-Peter

              PS: Vielen Dank für das Angebot; ich melde mich per mail bei Dir

              Comment


              • #22
                Hallo Gesine, Hallo Nico,

                ich habe einen (ausbaufähigen?) Lösungsansatz gefunden: Und zwar habe ich einen Service-Anwendung erstellt und in das <b>OnStart</b>-Ereignis folgenden Code eingefügt: <p>

                hdsk := OpenDesktop('Winlogon',0,false,GENERIC_ALL); <br>
                SetThreadDesktop(hdsk); <br>
                PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MakeLong(MOD_ALT or MOD_CONTROL, VK_DELETE)); <br>
                PostMessage(HWND_BROADCAST, WM_KEYDOWN, VK_RETURN, 0); <p>

                Nochmals Danke für Eure Hilfe.

                Viele Grüße Hans-Pete

                Comment

                Working...
                X