![]() |
Windows Login in eigener Applikation aufrufen
Hey zusammen,
kenn jemand von euch eine Möglichkeit bzw. gibt es eine um den Windows-Login aufzurufen innerhalb meines Programms? Folgendes: Ich möchte, dass sich ein Benutzer innerhalb meines Programms anmelden muss. Er soll ganz normal seinen Benutzername mit Passwort und die Domaine angeben. Mir ist klar, dass ich das selbst implementieren könnte und mit LogonUser oder SSPI überprüfen kann, aber ich möchte, dass das Passwort nicht auszulesen ist. Mich interessiert lediglich der Benutzername und ob dieser ein gültiger Benutzer ist bzw. dieser sich mit den angegeben Daten im System einloggen kann. Ich hoffe ihr versteht worauf ich hinaus will ;) //Edit: Es soll nicht das Login des aktuell angemeldeten Users verwendet werden, da dies ein Gruppenlogin ist ;) Greetz KNDelphi |
AW: Windows Login in eigener Applikation aufrufen
Ja.
![]() Mit CreateProcessWithLogonW authentifizierst Du am lokalen Rechner. Wenn Du an einem Netzwerkrechner authentifizieren willst, dann kannst Du WNetAddConnection2 verwenden: ![]() Allerdings ist dann zu beachten, daß Du Dich nicht zweimal zum selben Netzwerkserver mit unterschiedlichen Anmeldenamen verbinden kannst (innerhalb einer Benutzersitzung). Wenn Du unterschiedliche Adressen nehmen kannst (IP-Adresse, Netbios-Name, FQDN), dann geht das trotzdem. |
AW: Windows Login in eigener Applikation aufrufen
Danke für die schnelle Antwort :)
Versteh ich das richtig: Diese funktionen erwarten doch auch das Passwort als Parameter, d.h. ich muss es ja vorher abfragen?! Das ist ja genau das was ich nicht möchte... KNDelphi |
AW: Windows Login in eigener Applikation aufrufen
Zitat:
Zitat:
Irgendwie ist glaub ich doch nicht so ganz klar, was du willst. |
AW: Windows Login in eigener Applikation aufrufen
Ja, natürlich muss er sein Passwort angeben, ohne geht es schlecht ;)
Ich möchte quasi eine Funktion die das ein Fenster öffnet in dem man Benutzername, Passwort und Domain eingibt (wie z.B. wenn man neue Hardware einsteckt, aber keine Rechte hat diese zu installieren --> ![]() Und diese Funktion soll mir dann nur sagen ob der Login erfoglreich war und wenn ja, wie dieser Benutzer heisst. Es geht darum dass der PC über ein Gruppenlogin startet, ich aber in meinem Programm wissen möchte wer in einem bestimmten Fenster etwas gemacht hat. Dazu soll einfach ein gültiges Login eingegeben und überprüft werden... Nochmal: Es soll nirgends im Code möglich sein das Passwort auszulesen! Ich hoffe jetzt ist es etwas deutlicher geworden ;) KNDelphi |
AW: Windows Login in eigener Applikation aufrufen
Zitat:
Oder geh gleich über LDAP. Gruß K-H |
AW: Windows Login in eigener Applikation aufrufen
Hier mal sowas, dass mir erst vor kurzem hier gezeigt wurde, Domäne ist immer fix, d.h. muss/kann bei mir nicht angegeben werden:
Delphi-Quellcode:
//User ist eine globale Variable in der Klasse, in der ich den Usernamen speichere.
procedure TMain.acErweitertExecute(Sender: TObject); var u,p:String; begin u:=User; p:=''; if RemoteLoginDialog(u,p) then begin if CheckUserAccount(u,p,'UnsreDomäne') then begin User:=u else showmessage('Falscher Benutzername oder falsches Passwort!'); end; end; function TMain.CheckUserAccount(Username, Password, Domain : string) : boolean; var token: THandle; begin if LogonUser(PChar(Username), PChar(Domain), PChar(Password), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, Token) then begin CloseHandle(Token); Result := Token <> 0; end else Result := False; end; |
AW: Windows Login in eigener Applikation aufrufen
Zitat:
Wie der User heißt = ![]() |
AW: Windows Login in eigener Applikation aufrufen
Wie wär's mit ShellExecuteEx mit dem Verb 'runas' (UAC ab Vista) bzw. 'runasuser' (ab Vista nötig, um den von XP gewohnten 'Ausführen als'-Dialog aufzurufen)? Ich hatte so ein ähnliches Problem vor ein paar Monaten und hab das
![]() MfG Dalai |
AW: Windows Login in eigener Applikation aufrufen
Ich glaub, er will 'einfach nur' eine Funktion, wie z.B.
Delphi-Quellcode:
Und die Funktion mit dem ziemlich langen Namen soll eben halt nicht war von Windows direkt kommen weil man ja das Passwort nirgens im Code auslesen können soll.
If ShowLoginDialogAndAskForUserNameAndPasswordAndReturnTheUserName(userName) then begin
ShowMessage('You are '+userName); If IsAllowedToDoWhatever (userName) then DoWhatever(); end; Das soll dann wohl obersichermäßig sein. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 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