Entwickler-Ecke
Windows API - Windows-Loginpasswort nutzen
MarkusBauer - Fr 29.08.08 20:32
Titel: Windows-Loginpasswort nutzen
Hallo,
gibt es unter Delphi irgenteine Funktion, mit der man ein eingegebenes Windows-Benutzerpasswort überprüfen kann?
Hab im Forum nix gefunden und Google spuckt nur Ergebnisse in C aus.
Hat irgentjemand eine Idee?
lg Markus
mkinzler - Fr 29.08.08 20:34
Die Windows-Api kann man auch aus Delphi heraus aufrufen
MarkusBauer - So 31.08.08 18:14
Bei mir funktioniert die Unit leider nicht richtig, egal welche Argumente ich an die Funktion übergebe (gültige/ungültige Domain, (nicht) existierender Nutzer, richtiges oder falsches Passwort), ich erhalte immer den Wert true zurück. Ich verwende XP SP2 und Delphi 7 PE.
Wegen der API: Ich weiß leider nicht wie man diese Apifunktionen in Delphi aufrufen kann. Wenn jemand helfen könnte, hier die Seite mit dem C-Code:
http://dotnet-snippets.de/dns/windows-passwort-ueberpruefen-uebersetzung-SID861.aspx
Chryzler - So 31.08.08 19:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type function LogonUser(lpszUsername: String; lpszDomain: String; lpszPassword: String; dwLogonType: Integer; dwLogonProvider: Integer; var phToken: Integer): Integer; external 'advapi32.dll';
function IsNTPasswordValid(Username: String; Password: String; Domain: String): Boolean; var token: Integer; begin LogonUser(Username, Domain, Password, 2, 0, token); CloseHandle(token); Result := token != 0; end; |
Ungetestet.
MarkusBauer hat folgendes geschrieben: |
Bei mir funktioniert die Unit leider nicht richtig, egal welche Argumente ich an die Funktion übergebe (gültige/ungültige Domain, (nicht) existierender Nutzer, richtiges oder falsches Passwort), ich erhalte immer den Wert true zurück. Ich verwende XP SP2 und Delhpi 7 PE. |
Liegt glaube ich daran, dass man zuerst einen bestimmten Registryschlüssel ändern muss, damit die Funktion erfolgreich funktioniert. Kann ihn nur grad nicht finden.
EDIT: Nein! :P
alias5000 - So 31.08.08 19:57
Chryzler hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type function LogonUser(lpszUsername: String; lpszDomain: String; lpszPassword: String; dwLogonType: Integer; dwLogonProvider: Integer; var phToken: Integer): Integer; external 'advapi32.dll';
function IsNTPasswordValid(Username: String; Password: String; Domain: String): Boolean; var token: Integer; begin LogonUser(Username, Domain, Password, 2, 0, token); CloseHandle(token); Result := token <> 0; end; | |
Wie gut kenne ich das :lol:
Hidden - So 31.08.08 20:06
Hi,
Mal was ganz anderes: Ich würde niemals einem Programm soweit vertrauen, dass ich ihm meine Login-Daten überlasse und darauf vertraue, dass diese nur zur Bestätigung verwendet werden. Noch nichtmal, wenn das Programm zertifiziert ist ;)
mfG,
Dezipaitor - So 31.08.08 23:33
Hier sollten die Logindaten ,übergeben über die Parameter, mit "Const" deklariert werden, da sonst eine (unverschlüsselte) Kopie der Daten im Speicher übrigbleibt.
@Hidden: Schon richtig! Hast du mal RunAs oder so verwendet? Da gibt man seine Daten auch an. Das ist natürlich nicht sicher.
Daher soll man sein Passwort auch immer nur im sicheren LogonDesktop "Winlogon" ändern. Mit etwas Aufwand können das auch andere, selbstgemachte Programme. Dies erfordert jedoch eine Installation als Dienst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!