Announcement

Collapse
No announcement yet.

NT/2000 per Tastendruck sperren

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

  • NT/2000 per Tastendruck sperren

    Hallo zusammen,

    wie kann ich NT/2000 per Tastendruck sperren.
    wie (strg+alt+del (enter))

    Vielen Dank im Voraus
    John

  • #2
    Du meinst von deinem Delphi-Programm aus sperren? Dann hilft dir vielleicht folgender Thread:<br>
    <a href="/webx?13@@.ee8bca6/1">Christian Seehase "Inhalt eines DOS-Fensters..." 07.04.2002 15:08</a>
    <br>Ciao, Uli

    Comment


    • #3
      hi

      im onkeydown-ereignis taste abfragen z.B.

      if key = vk_Tab then
      lockworkstation;

      funktioniert auf jeden fall bei win2000

      gruß

      swe

      Comment


      • #4
        Man, das ging aber schnell
        Habt Ihr nix anderes zu tun... .-))
        Danke für die Prompte Hilfe..

        Der Tip ... "lockworkstation" klappt unter 2000 wunderbar. Leider nicht unter NT.

        Allerdings kann ich nicht sehen, in wieweit mir der Thread von
        Christian Seehase weiterhelfen soll. Sorry.

        Wäre für weiter Tips dankbar.
        PS: Ja... soll aus Delphi aufgerufen werden.

        Joh

        Comment


        • #5
          Hallo John,

          unter NT 4.0 ist das nicht ganz so einfach: Du mußt auf den Anmelde-Desktop umschalten. Wichtig ist, daß folgender Code in einer Service-Anwendung (OnStart-Ereignis) implementiert wird. Zum Sperren der Arbeitsstation mußt Du dann den Dienst starten...Viele Grüße Hans-Peter
          <pre>
          hdsk := OpenDesktop('Winlogon',0,false,GENERIC_ALL);
          SetThreadDesktop(hdsk);
          PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MakeLong(MOD_ALT or MOD_CONTROL, VK_DELETE));
          PostMessage(HWND_BROADCAST, WM_KEYDOWN, VK_RETURN, 0);
          </pre&gt

          Comment


          • #6
            <i>Allerdings kann ich nicht sehen, in wieweit mir der Thread von Christian Seehase weiterhelfen soll. Sorry.</i>
            Meine Idee war, dass du mittels KeyBd_Event oder so dem System ein [Strg+Alt+Entf, Return] vorgaukelst -- analog zu Alt+Enter im zitierten Thread. Die Lösung mit lockworkstation wäre natürlich viel sauberer.
            <br>Uli

            Comment


            • #7
              Ich hab's schnell mal ausprobiert:<pre>
              procedure FakeKeyCombination(const keys: array of Byte);
              var
              i: Integer;
              begin
              for i := Low(keys) to High(keys) do
              keybd_event(keys[i], 0, 0, 0);
              for i := High(keys) downto Low(keys) do
              keybd_event(keys[i], 0, KEYEVENTF_KEYUP, 0);
              end;
              <br>
              procedure TForm1.Button1Click(Sender: TObject);
              begin
              FakeKeyCombination([VK_MENU, VK_F4]);
              //FakeKeyCombination([VK_CONTROL, VK_ESCAPE]);
              //FakeKeyCombination([VK_CONTROL, VK_MENU, VK_DELETE]); //(*)
              //FakeKeyCombination([VK_CONTROL, VK_MENU, ord('I')]);
              end;</pre>
              Alle Tastenkombinationen, die ich getestet habe, gehen -- außer die mit dem (*) im Kommentar -- also die interessante :-(
              <br>
              Uli

              Comment


              • #8
                Strg+Alt+Entf in keybd_event wird abgefangen. Das hat genau den Grund es nur per Hand zu erlauben

                Comment


                • #9
                  (<B>Strg+Alt+Entf in keybd_event wird abgefangen. Das hat genau den Grund es nur per Hand zu erlauben.</B>

                  Warum funktionert es dann mit "lockworkstation" ?

                  Joh

                  Comment


                  • #10
                    <i>(Strg+Alt+Entf in keybd_event wird abgefangen. Das hat genau den Grund es nur per Hand zu erlauben.</i><br>
                    Ist im Nachhinein betrachtet eigentlich logisch. Sonst könnte sich ja ein Bösewicht "remote" einloggen.

                    <i>Warum funktionert es dann mit "lockworkstation" ?</i><br>
                    LockWorkStation wird wohl erlaubt sein, weil es eine "harmlose" Aktion ist. Der Weg über Strg+Alt+Entf dorthin geht aber vermutlich deshalb nicht, weil diese Tastenkombination auch in kritischen Kontexten verwendet wird. (Könnte ich mir denken ;-))
                    <br>Ciao, Uli

                    Comment


                    • #11
                      Die Secure Attention Sequence (SAS - meist die Tasten-Kombination [Strg+Alt+Entf], Kann aber auch das Einlegen/Entfernen einer Smartcard sein) wurde eingeführt, damit normale Anwendungen, die innerhalb des interaktiven Desktops ausgeführt werden, nicht den Login-Dialog simulieren/abfangen können (um so an das Paßwort zu kommen).

                      LockWorkStation() wurde ab Windows 2000 in die API aufgenommen, damit es möglich wird, aus einer Anwendung die Arbeisstation zu sperren.<br>
                      Dies ist im Sinne der Sicherheit auch nicht bedenklich.

                      Man kann unter Windows 2000/XP einstellen, daß zum Anzeigen des Login-Dialogs keine SAS notwendig ist (mit einer entsprechenden Warnung verbunden).

                      - nic

                      Comment

                      Working...
                      X