Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Passwort-Übergabe an Windows (https://www.delphipraxis.net/28881-passwort-uebergabe-windows.html)

hesch21 31. Aug 2004 18:56


Passwort-Übergabe an Windows
 
Hallo zusammen
ich versuche ein Programm zu erstellen, das bei laufendem Screen-Saver mit Passwort-Schutz diesen automatisch ausschaltet und danach das in einem Edit-Feld bereit stehende Passwort in die Windows-Dialog-Box 'einfüllt'. Das Programm sollte unter W2000 oder XP laufen.
Ich bin mit nachfolgendem Code auch bereits soweit, dass mir der Screen-Saver ausgeschaltet wird und eben diese Dialog-Box angezeigt wird. Aber die enthaltene Routine mit den KEYBD_EVENT funktioniert nicht, resp. die Tasteneingaben laufen nicht ins Passwortfeld der Dialogbox, obwohl dieses fokusiert ist.
Was mache ich da falsch, resp. was habe ich vergessen oder übersehen?
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x : integer;
var q : char;
var hDesktop: HDESK;
begin
  if not ScreenSaverRunning then
     Memo1.Lines.Append('SS läuft nicht')
  else
     begin
     Memo1.Lines.Append('SS läuft');
     hDesktop := OpenDesktop('screen-saver', 0, False, MAXIMUM_ALLOWED);
     if hDesktop <> 0 then
        begin
        EnumDesktopWindows(hDesktop, @EnumWindowCallback, 0);
        Form1.JvWavePlayer1.Play;
        for x := 1 to length(Form1.Edit1.Text) do
            begin
            q := UpCase(Form1.Edit1.Text[x]);
            keybd_event(Ord(q), 0, 0, 0);
            end;
        keybd_event(13,0,0,0);
        CloseDesktop(hDesktop);
        end
     else
        begin
        PostMessage(GetForegroundWindow(), WM_CLOSE, 0, 0);
{     SetCursorPos(10,10);
     SetCursorPos(20,20); }
        for x := 1 to length(Form1.Edit1.Text) do
           begin
           q := UpCase(Form1.Edit1.Text[x]);
           keybd_event(Ord(q), 0, 0, 0);
           end;
        keybd_event(13,0,0,0);
        JvWavePlayer1.Play;
        end;
     end;
end;
Ich weiss, dass das ganze nicht besonders schön programmiert ist, da ich eben am ausprobieren bin.

HW764 31. Aug 2004 18:57

Re: Passwort-Übergabe an Windows
 
mach das plz mit delphi tags :-D

sakura 31. Aug 2004 19:01

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von HW764
mach das plz mit delphi tags :-D

FAQ-Eintrag zum Stichwort "9""9"

...:cat:...

hesch21 31. Aug 2004 20:52

Re: Passwort-Übergabe an Windows
 
Sorry, ist meine erste Einstellung hier in dieses Forum. Habe die Darstellung nun bereinigt.

himitsu 31. Aug 2004 21:34

Re: Passwort-Übergabe an Windows
 
Wieso schaltest du den den Passwortschutz des SS nicht einfach aus?


PS: wenn mich nicht alles täucht verwenden doch die Screensaver den Usernamen und das Passwort des aktiven Users (meißtens)
und wenn dann noch diese Daten frei zugänglich in irgendeinem Programm gespeichert, oder geladen sind, dann halte ich das aber für ein ganz nettes Sicherheitsloch.

[edit]
jetzt wo alcaeus das sagt, fällt mir wieder ein, dass ja das Windowsteil sich da anschlich ...
aber wer wills mir verübeln - hab ja schon seit Jahren keinen SS mehr drauf

alcaeus 31. Aug 2004 21:38

Re: Passwort-Übergabe an Windows
 
Hi hesch21,

vergiss deine Lösung mal für WinXP. Dort gibt es kein Passwort für den Bildschirmschoner mehr, vielmehr wird man an den Anmeldebildschirm zurückgeleitet. Ich glaube nicht dass deine Lösung da funktionieren wird.

Greetz
alcaeus

hesch21 1. Sep 2004 06:09

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von alcaeus
Hi hesch21,

vergiss deine Lösung mal für WinXP. Dort gibt es kein Passwort für den Bildschirmschoner mehr, vielmehr wird man an den Anmeldebildschirm zurückgeleitet. Ich glaube nicht dass deine Lösung da funktionieren wird.

Greetz
alcaeus

Das ist nicht nur in XP so, sondern auch beim 2000. Und das Passwort ausschalten ist nicht die Idee, schliesslich soll der Schutz ja bestehen bleiben. Vielleicht ein paar Worte zum Projekt fürs bessere Verständnis: Es handelt sich um ein Alarmierungssystem über TCP/IP. Wenn nun eine Alarmmeldung eingeht, sollte diese angezeigt werden, unabhängig ob der PC gerade blockiert ist oder nicht. Deshalb auch der JvPlayer im Code, der einen Alarmsound abspielt (was übrigens bestens funktioniert).
Ich sehe aber nicht ein, weshalb ich nicht mit keybd_event etwas diesen Anmeldebildschirm senden kann. Ist doch auch bloss ein Fenster.

TeronG 1. Sep 2004 08:18

Re: Passwort-Übergabe an Windows
 
hmm ... bin net sicher aber evtl. hilft dir DAS weiter.

[OT] Darf ich hier eigentlich an das swissdelphicenter verlinken?[/OT]

Spezi1980 1. Sep 2004 08:28

Re: Passwort-Übergabe an Windows
 
Das Anmeldefenster von Win 2k und XP ist nicht "blos irgendein Fenster". Kann sein, dass du Dein Programm als Dienst laufen lassen mußt um dort überhaupt zugreifen zu können.

Warum Programmierst du dir nicht deinen eigenen Bildschirmschoner, der auch die Alarmmeldung mit ausgibt?

Luckie 1. Sep 2004 10:16

Re: Passwort-Übergabe an Windows
 
Also die Anmelde Dialoge werden auf einer anderen Windowsstation angezeigt. Da wirst du von der Benutzer-Windowssation nicht so einfach drankommen.

hesch21 1. Sep 2004 16:08

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von Luckie
Also die Anmelde Dialoge werden auf einer anderen Windowsstation angezeigt. Da wirst du von der Benutzer-Windowssation nicht so einfach drankommen.

Das leuchtet ein und habe ich auch schon dem HowTo-Artikel 140723 der MS Knoledge Base abgeleitet. Aber irgendwie müsste es doch gehen, dass ich auf die 'andere' Station komme.

Motzi 1. Sep 2004 22:31

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von Luckie
Also die Anmelde Dialoge werden auf einer anderen Windowsstation angezeigt. Da wirst du von der Benutzer-Windowssation nicht so einfach drankommen.

Falsch, diese sind auch in WinSta0, da WinSta0 die einzige WindowStation ist die interaktive Benutzereingaben entgegennehmen kann. Die Dialoge sind jedoch auf einem anderen Desktop..!

hesch21 2. Sep 2004 06:08

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von Motzi
Die Dialoge sind jedoch auf einem anderen Desktop..!

... und genau da stecke ich zur Zeit fest. Wenn ich versuche, auf diesen Desktop mit
Delphi-Quellcode:
OpenDesktop('winlogon', 0, False, MAXIMUM_ALLOWED)
zu gelangen (egal, mit welchem Parameter am Ende), bekomme ich einen ACCESS_DENIED-Fehler zurück.
Weiss jemand, ob und wie man trotzdem drauf kommt?
Die guten Ratschläge, mein Programm in einen eigenen Screen-Saver einzubinden, sind nämlich nicht die Lösung. Ich sollte ja auch eine Eingabe ins Passwort-Feld generieren können, wenn der Benützer den PC mit Crtl-Alt-Del gesperrt hat.

Luckie 2. Sep 2004 22:11

Re: Passwort-Übergabe an Windows
 
Mist, da hab eich Desktops und Windows-Stationen durch einander geschmissen. :?

Assarbad 2. Sep 2004 23:01

Re: Passwort-Übergabe an Windows
 
Zitat:

Zitat von Motzi
Zitat:

Zitat von Luckie
Also die Anmelde Dialoge werden auf einer anderen Windowsstation angezeigt. Da wirst du von der Benutzer-Windowssation nicht so einfach drankommen.

Falsch, diese sind auch in WinSta0, da WinSta0 die einzige WindowStation ist die interaktive Benutzereingaben entgegennehmen kann. Die Dialoge sind jedoch auf einem anderen Desktop..!

Naja, oder bei TS eben mehrere WinSta0 :-D

So, an den Fragesteller: Warum kannst du das ganze nicht in einer Replacement-GINA realisieren? Die hat Zugriff (und vor allem Privilegien) auf alle Teile (also alle Desktops, inkl Screensaver) und kann je nach aktivem Desktop auf dem aktuellen eine Meldung anzeigen. Und das Beste: Das ginge auch ohne die Systemsicherheit durch automatische Entsperren zu gefährden!

Wie geht das?

Hier ein paar Links:
http://assarbad.net/stuff/!export/winwlx.pas
http://assarbad.net/stuff/!export/agreementgina_special.rar
http://assarbad.net/stuff/!export/agreementgina.rar
http://assarbad.net/stuff/!export/agreementgina%20(old).rar
ftp://delphi-jedi.org/api/WinWlx.zip <- von Nico


Gruß,


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz