Laden...

Aufruf des Sperrbildschirmes vom Bildschirmschoner

Erstellt von MadMax1979 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.449 Views
M
MadMax1979 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren
Aufruf des Sperrbildschirmes vom Bildschirmschoner

Hallo zusammen,

da ich mit meinem Programmier-Latein ein wenig am Ende bin, habe ich mich hier gerade neu angemeldet und hoffe, dass von Euch jemand eine Idee hat ...

Es geht um einen selbst programmierten Bildschirmschoner. Läuft dieser und jemand bewegt willkürlich die Maus oder ähnliches, soll ganz normal der Sperrbildschirm mit Passworteingabe erscheinen.

Werden jedoch die Maustasten in einer bestimmten Reihenfolge gedrückt, so soll der Bildschirmschoner OHNE Sperrbildschirm- bzw. Passworteingabe beendet werden.

Hintergrund des Ganzen: Der PC steht in einem Unternehmen und der Mitarbeiter verlässt häufig den Arbeitsplatz. Damit er nicht jedes mal bei der Rückkehr an seinen Arbeitsplatz erst das Passwort wieder eintippen muss, kann er schnell die Maustasten entsprechend drücken.

Bei den Windows-Einstellungen zum Bildschirmschoner ist "Anmeldeseite bei Reaktivierung" somit deaktiviert. Mein Programm ruft den Sperrbildschirm selbst auf, wenn die Betätigung der Maustasten nicht korrekt ist.


[DllImport("user32.dll")]
private static extern bool LockWorkStation();

LockWorkStation();
Application.Exit();

Hierbei ist es aber so, dass der Bildschirmschoner beendet wird, man kurz den Desktop sieht und erst dann der Sperrbildschirm erscheint. Weiter wird durch LockWorkStation() scheinbar nur das Sperren "angestossen". D.h. es besteht die Gefahr, dass der Sperrbildschirm tatsächlich gar nicht startet, der Bildschirmschoner aber trotzdem beendet wird. Um dies zu verbessern, soll das Programm erst beendet werden, wenn der Sperrbildschirm tatsächlich angezeigt wird ..



SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);

private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
    if (e.Reason == SessionSwitchReason.SessionLock)
    {
         Application.Exit();
    }
}

Nach Aufruf von LockWorkStation() wird der Bildschirmschoner erst über diesen Eventhandler beendet. D.h. das Programm wartet mit dem Beenden bis der Sperrbildschirm tatsächlich erfolgreich gestartet ist.

Dies funktioniert hervorragend ... solange das Programm als EXE oder auch SCR manuell aufgerufen wird. Wird das Programm als aktiver Bildschirmschoner eingestellt und somit von Windows gestartet, so wird das Programm immer mit Aufruf von LockWorkStation() auch beendet und man sieht wieder kurz den Desktop vor Erscheinen des Sperrbildschirmes. Selbst ohne einen einzigen Application.Exit() oder Close()-Befehl im Programm schließt der Bildschirmschoner.

Es macht für Windows ja auch Sinn, dass ein Bildschirmschoner nicht weiterlaufen kann, wenn der Sperrbildschirm gestartet wird. Aber gibt es eine Möglichkeit, dies irgendwie zu umgehen? Ich würde mein Programm gerne selbst beenden, wenn der Sperrbildschirm definitiv zuvor gestartet wurde ...

Vielen Dank und viele Grüße

16.830 Beiträge seit 2008
vor 5 Jahren

Werden jedoch die Maustasten in einer bestimmten Reihenfolge gedrückt, so soll der Bildschirmschoner OHNE Sperrbildschirm- bzw. Passworteingabe beendet werden.

Wow, damit untergrabt ihr jegliche Sicherheit von Haus aus. 😃
Wieso verwendet ihr nicht einfach eine 80€ Webcam oder ein Fingerprint-Reader mit Windows Hello?

Aber gibt es eine Möglichkeit, dies irgendwie zu umgehen?

Ich hoffe nicht.
Würde ich als Sicherheitslücke sehen.

M
MadMax1979 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Naja, normalerweise wird die Anmeldeseite einfach deaktiviert oder das Passwort mit "12345" so einfach gewählt, dass hierdurch die Sicherheit noch viel mehr untergraben wird. Ein Smartphone kann auch durch Wischen eines Musters entsperrt werden ... Drücken der Maustasten in bestimmter Reihenfolge war etwas vereinfacht ausgedrückt, da es mit der eigentlichen Fragestellung auch nichts zu tun hat ... die angestrebte Lösung soll schon sicher, nur halt schneller werden.

Und damit eben KEINE Sicherheitslücke entsteht, soll alles sauber funktionieren ... daher auch meine Frage ... Es muss sichergestellt sein, dass der Sperrbildschirm tatsächlich erscheint und es darf zuvor der Desktop, auch nicht kurz, zu sehen sein.

Aktuell ist das ganze nur eine Idee mit erstem Probieren. Ob das Ganze nachher tatsächlich zum Einsatz kommt, wird man sehen ... aber dazu müsste das Programm grundsätzlich ja erstmal das machen, was es soll ... 😃

16.830 Beiträge seit 2008
vor 5 Jahren

Wieso verwendet ihr nicht einfach eine 80€ Webcam oder ein Fingerprint-Reader mit Windows Hello?

Erfüllt die Anforderungen, ist schnell, kostet sicherlich in Zeit und Geld weniger als das Gebastel - wenn man das so bezeichnen darf 😃

M
MadMax1979 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Hallo Abt,

ich denke, für viele hier im Forum ist Programmierung auch ein wenig Hobby 😃. Kaufen kann ja man fast alles ... Ich "bastel" auch gerne mal an einer Idee, die sich nachher dann eventuell doch nicht als praktikabel herausstellt. Wobei Du mit Deiner Idee und dem Hinweis auf Zeit und Geld sicherlich nicht ganz unrecht hast ..

Aber wie schon geschrieben, manuell gestartet macht das Programm schon genau was es soll ... nur als Bildschirmschoner von Windows selbst aufgerufen, führt der Befehl "LockWorkStation()" auch gleichzeitig zum Beenden des Programmes, was tatsächlich eine Sicherheitslücke darstellt und somit noch irgendwie gelöst werden muss ... ??

16.830 Beiträge seit 2008
vor 5 Jahren

Meine Anmerkungen beziehen sich einzig und allein auf die Steigerung der Sensibilität von Sicherheit, dass man damit einfach nicht spielen sollte.
Mit lückenhafter Software passiert so viel, dass ich das einfach nicht deutlich genug sagen kann.

Das soll überhaupt nicht negativ auf die Neugierde von Software beziehen oder gar auf die Verringerung der Begeisterung.
Es ist einfach nur eine Sensibilisierung; weil zu viel passiert 😉