
Wer unter Windows seinen Bildschirm per Programm oder Script locken will, der kennt bestimmt diesen Schnipsel:
rundll32.exe user32.dll,LockWorkStation
Das funktioniert bei mir (und vielen anderen Leuten) auch ganz wunderbar, ist nur leider falsch.
In Raymond Chens Blog The Old new Thing
bin ich heute mehr zufällig über einen Artikel gestolpert, der eklärt, warum das böse[tm] ist. Kurz gesagt, rundll32 ruft die Funktion mit komplett falscher Signatur auf, was zu einigem Müll auf dem Stack führt.
Glücklicherweise ist ein entsprechendes C-Programm schnell zur Hand:
#define _WIN32_WINNT 0×0500
#include <windows.h>
int CALLBACK WinMain(HINSTANCE a, HINSTANCE s, LPSTR d, int f)
{
LockWorkStation();
return 0;
}
Und dank cygwin und gcc auch schnell compiliert:
karoshi:~/LockWorkStation>gcc -Wall -mno-cygwin -o xlock xlock.c karoshi:~/LockWorkStation>strip xlock.exe karoshi:~/LockWorkStation>ls -l xlock.* -rw-rw-rw- 1 sec Kein 169 Mar 7 11:30 xlock.c -rwxrwxrwx 1 sec Kein 4608 Mar 7 11:42 xlock.exe
Wers gerne als binary mag, kann es gerne da oben runterladen. Bei mir hat es ab jetzt einen festen Platz in ~/bin.
– Sec