Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
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
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>
<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
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
<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
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).
Comment