Thema: Delphi Winlogon, Welcome Screen

Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Winlogon, Welcome Screen

  Alt 28. Apr 2008, 18:40
Was ist der Willkommensbildschirm für dich?

Der Desktop mit dem LoginDialog ist ein anderer als der normale Desktop für die Anwendungen.

Ich nehme an, du willst den Anmeldebildschirm-Desktop oder? Dieser Desktop heißt "winlogon". Er ist von normalen Benutzerprogrammen nicht erreichbar. Man müsste ein Program durch einen Dienst in die Session des Benutzers starten (mit SYSTEM Rechten). Dieses programm könnte ein kleines Fenster mit dem Text in den Winlogonbildschirm einblenden. Ohne Fensterrand und mit Hintergrundfarbe (oder Transparenz) sieht das so aus, als ob da ein Text auf dem Desktop steht.

Wenn du auf den normalen Desktop einfach so - und nur einmal - einen Text zeichnest, dann wird dieser Text gelöscht, sobald der Desktop sich neumalt, z.B. weil ein Fenster darüber bewegt wird.

Wen dein Code als Systembenutzer ausgeführt wird, dann kannst du mit OpenDesktop('winlogon',...) und SetThreadDesktop sowie GetDesktopWindow den winlogon Desktop möglicherweise auch bekommen.

Die JWSCL kann das in OOP. Ich vermute mal, es sieht etwa so aus, wie im Quelltext. Aber ich kann nicht versprechen, dass es funkz:

Delphi-Quellcode:
uses Windows, JwsclDesktops;
var
     Desktop: TJwSecurityDesktop;

begin
      Desktop:=TJwSecurityDesktop.OpenDesktop('winlogon', [], false, GENERIC_ALL);
      Desktop.SetThreadDesktop;
      try
        DrawPicture('MG.bmp', 0, 0, 0, 0);
      finally
        Desktop.Free;
      end;
end;
Der Code muss als SYSTEM Benutzer ausgeführt werden. Zudem muss die SessionID des Prozesses, die Session des jeweiligen angemeldeten Benutzers sein.
Z.B.
Windows XP
- Ein Benutzer angemeldet. Session ID muss 0 sein. Das kann noch ein Dienst machen.
- Zwei Benutzer angemeldet. Session ID muss 0 und 1 sein. Also hier brauchen wir zwei Prozesse in Session 0 (erster Benutzer) und Session 1 (zweiter Benutzer). Session 0 kann noch ein Dienst machen. Session 1 nicht mehr. Hier muss der Dienst ein Programm in diese Session starten.
Windows Vista.
-Ein Benutzer angeldet. Session ID muss 1 sein. Ein Dienst kann hier nichts machen. Hier muss der Dienst ein Programm in diese Session starten.
-weitere Benutzer, wie in XP
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat