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 Benutzer abmelden? (https://www.delphipraxis.net/27007-benutzer-abmelden.html)

Nikolas 2. Aug 2004 19:03


Benutzer abmelden?
 
Ich würde gerne wenn ich kurz vom Computer weg bin, ihn daduch zumachen, dass ich nur den Benutzer wechsle, so dass danach das Passwort eingegeben werden muss, nicht aber alle Programme wieder gestartet werden müssen. Ich hab bis jetzt nur Code gefunden, der den Computer ausschaltet oder mich ganz abmeldet und dann dauerts bis ich wieder alles am Laufen habe. :wall:

Hat da jemand ein passendes Flag oder eine Idee für mich? :angle2:

CalganX 2. Aug 2004 19:16

Re: Benutzer abmelden?
 
Hi,
das meldet den User zwar nicht ab, sperrt aber den Computer:
Delphi-Quellcode:
LockWorkStation;
Chris

Nikolas 2. Aug 2004 19:20

Re: Benutzer abmelden?
 
Danke. Nur bevor ich das jetzt ausprobiere, eine kleine Frage noch: Wie öffne ich sie wieder?
Nochwas: Warum kennt mein F1 die functionprocedure (?) nicht, kompiliert sie aber trotzdem?

SirThornberry 2. Aug 2004 19:22

Re: Benutzer abmelden?
 
das kommt aufs gleiche raus als wenn du Strg+Alt+Entf und dann auf arbeitsstation sperren klickst. Deine Hilfe kennt die Function nicht weil es eine Api-Funktion ist und du vermutlich nicht in dieser Hilfe gesucht hast sondern in der allgemeinen delphihilfe

sCrAPt 2. Aug 2004 20:36

Re: Benutzer abmelden?
 
Falls du noch weitere Informationen zu LockWorkStation suchst dann solltest du in die MSDN gehen MSDN-Library durchsuchenLockWorkStation

XHelp 2. Aug 2004 20:54

Re: Benutzer abmelden?
 
Delphi-Quellcode:
procedure TfrmShutDown.SpeedButton1Click(Sender: TObject);
var
  hToken: THandle;
  tkp: _TOKEN_PRIVILEGES;
  returnLength: Cardinal;
begin
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
  begin
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if AdjustTokenPrivileges(hToken, false, tkp, 0, nil, returnLength) then
    begin
      case (Sender as TComponent).Tag of
        0: ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
        1: ExitWindowsEx(EWX_REBOOT, 0);
        2: ExitWindowsEx(EWX_LOGOFF, 0);
        3: ExitWindowsEx(EWX_FORCE, 0);
      end;
    end;
  end;
end;
Hilft das hier weiter?

Nikolas 2. Aug 2004 21:44

Re: Benutzer abmelden?
 
@ XHelp: Danke, das hatte ich schon so ähnlich gefunden. Damit kann ich aber nur auschalten, rebooten oder mich ganz abmelden.

@ SirT: Wo kann ich da meine Arbeitsstation sperren?

Ich glaub ich versuchs mal damit, dass ich so tue, als ob der User die Tastenkombination fürs Benutzerwechseln gedrückt hätte. Damit müsste ich eigentlich was hinbekommen. :roll:

Christian Seehase 2. Aug 2004 21:55

Re: Benutzer abmelden?
 
Moin Toxman,

hast Du LockWorkstation denn mal ausprobiert?

XHelp 2. Aug 2004 21:56

Re: Benutzer abmelden?
 
Stimmt, LockWorkStation ist das was du brauchst.
Einfach
Delphi-Quellcode:
LockWorkStation;
reinschreiben und das wars.

CalganX 2. Aug 2004 21:58

Re: Benutzer abmelden?
 
Hi,
:cry: Habe ich doch oben geschrieben.

Dann musst du einfach nur das Passwort eingeben und gut ist. ;)

Chris

Nikolas 2. Aug 2004 23:01

Re: Benutzer abmelden?
 
Ich hab's jetzt auch damit gemacht. Vielen Dank an alle :hello:

In der Zwischenzeit bin ich auch auf diese Lösung gestoßen:
Delphi-Quellcode:
KeyBd_Event(VK_LWIN, MapvirtualKey(VK_LWIN, 0), 0, 0);
KeyBd_Event(Ord('L'), MapvirtualKey(Ord('L'), 0), 0, 0);
KeyBd_Event(Ord('L'), MapvirtualKey(Ord('L'), 0), KEYEVENTF_KEYUP, 0);
KeyBd_Event(VK_LWIN, MapvirtualKey(VK_LWIN, 0), KEYEVENTF_KEYUP, 0);
Ist leicht abgewandelt ein Post von Daniel B ( alles minimieren )

CalganX 2. Aug 2004 23:03

Re: Benutzer abmelden?
 
Hi,
nur macht
Delphi-Quellcode:
LockWorkStation;
exakt das selbe. ;)

Chris

Nikolas 2. Aug 2004 23:05

Re: Benutzer abmelden?
 
Das hab ich auch vorhin festgestellt, nachdem ich etwa 1 Stunde einfach den Button auf meinem Form übersehen habe in den ich das Lockworkstation schon geschrieben hatte :wall: und dann weiter nach einer anderen Lösung gesucht hab. :?

rainerkunze124 8. Feb 2005 16:42

Re: Benutzer abmelden?
 
@X-Help: Hast du eine Ahnung, warum sich Win2000 Pro, wenn es EWX_LOGOFF von einem Service erhält, abmeldet und dann auf ein erneutes EWX_LOGOFF mit Shutdown reagiert? Wie kann ich das umgehen?

Luckie 8. Feb 2005 16:46

Re: Benutzer abmelden?
 
Zitat:

Zitat von Chakotay1308
Hi,
nur macht
Delphi-Quellcode:
LockWorkStation;
exakt das selbe. ;)

Nur mit dem Unterschied, dass es auch schon unter Windows 2000 geht.

Assarbad 10. Feb 2005 10:40

Re: Benutzer abmelden?
 
Zitat:

Zitat von rainerkunze124
@X-Help: Hast du eine Ahnung, warum sich Win2000 Pro, wenn es EWX_LOGOFF von einem Service erhält, abmeldet und dann auf ein erneutes EWX_LOGOFF mit Shutdown reagiert? Wie kann ich das umgehen?

ZB weil es immernoch einen "Computeraccount" gibt, der bereits vor dem Logon des interaktiven Benutzers eingeloggt ist und lokal höhere Rechte als Admin hat (auch wenn sich Admin diese Rechte jederzeit beschaffen kann).

Vielleicht möchtest du, lieber Frager, ja auch auf das Windows XP "Fast User Switching" anspielen. In diesem Falle kann ich nur empfehlen sich mal die WTS*-Funktionen anzuschauen.

rainerkunze124 10. Feb 2005 21:13

Re: Benutzer abmelden?
 
@Asserbad:

Ich möchte lediglich wissen, wie ich meinem Service zeigen kann, das noch ein "richtiger" User angemeldet ist!
Damit gerade dieses Herunterfahren nicht passiert.

Hat einer ein Stückchen Quelltext zur Hand, zum Beispiel eine Funktion für o.g., das wär echt nett!

Assarbad 10. Feb 2005 21:20

Re: Benutzer abmelden?
 
Benutze doch einfach den Code aus meinem Loggedon2. Dort wird ja abgefragt, ob es noch weitere eingeloggte Benutzer gibt.

Ab XP wird's sowieso schwer, weil dann Terminal Sessions ins Spiel kommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 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