![]() |
Windows Passwort überprüfen
Hallo,
ich verwende diesen Code, um zu überprüfen ob Password=Windows Passwort:
Code:
Diesen Code habe ich von
function NetUserChangePassword(
domainname : Pwidechar; { IN OPTIONAL } username : Pwidechar; { IN OPTIONAL } oldpassword: Pwidechar; { IN } newpassword: Pwidechar { IN } ): DWORD; stdcall; external netapi32 name 'NetUserChangePassword'; implementation function isPw(User, Password: String):boolean; var NewPassword: array [0..1023] of WideChar; OldPassword: array [0..1023] of WideChar; UserBuff : array [0..1023] of WideChar; UserName: PWideChar; begin StringToWideChar(Password, PWideChar(@NewPassword[0]), SizeOf(NewPassword)); StringToWideChar(Password, PWideChar(@OldPassword[0]), SizeOf(OldPassword)); StringToWideChar(User, PWideChar(@UserBuff[0]), SizeOf(UserBuff)); UserName := PWideChar(@UserBuff[0]); if NetUserChangePassword(nil, UserName, PWideChar(@OldPassword[0]), PWideChar(@NewPassword[0]))=0 then result:=True else result:=False; end; ![]() Es kommt aber immer dasselbe: Result:=False; Auch wenn das Pw und Username richig sind. Was ist an diesem Code falsch? |
AW: Windows Passwort überprüfen
Versuch mal die Strings vorher zu trimmen.
Ungenügend Rechte? |
AW: Windows Passwort überprüfen
Ich bin Admin,
und was meinst du mit Strings Trimmen? |
AW: Windows Passwort überprüfen
Nutz dazu die Unit SSPIValidatePassword.pas:
![]() Null heißt, dass das Passwort erfolgreich geändert wurde. Und ich bin mir nicht sicher, ob das auch funktioniert, wenn es gar nicht geändert wurde. Wesentlich informativer wäre der tatsächliche Rückgabewert der Funktion. |
AW: Windows Passwort überprüfen
Zitat:
Delphi-Quellcode:
Trim()
|
AW: Windows Passwort überprüfen
Sind keine drin, der Aufruf ist:
Code:
showmessage(booltostr(isPW('Tim', '123')));
|
AW: Windows Passwort überprüfen
Push
|
AW: Windows Passwort überprüfen
Das ganze Stringkopieren kann man sich sparen
Delphi-Quellcode:
function isPw(const User, Password: String): Boolean;
begin Result := NetUserChangePassword(nil, PWideChar(WideString(User)), PWideChar(WideString(Password)), PWideChar(WideString(Password)) = 0; end;
Delphi-Quellcode:
Was sagt denn die Fehlermeldung?
function isPw(const User, Password: String): Boolean;
var Err: LongWord; begin Err := NetUserChangePassword(nil, PWideChar(WideString(User)), PWideChar(WideString(Password)), PWideChar(WideString(Password)); Result := Err = 0; if not Result then ShowMessage(IntToStr(Err) + ': ' + SysErrorMessage(Err)); end; Hast du es mal mit einer Angabe des Domainnamen versucht? Schonmal die SSPIValidatePassword.pas versucht? (ob SysErrorMessage überhaupt ein passendes Ergebnis liefert, weiß ich jetzt nicht) Und was passiert, wenn du mal das Passwort änderst?
Delphi-Quellcode:
function isPw(const User, Password, NewPassowrd: String): Boolean;
var Err: LongWord; begin Err := NetUserChangePassword(nil, PWideChar(WideString(User)), PWideChar(WideString(Password)), PWideChar(WideString(NewPassowrd)); Result := Err = 0; if not Result then ShowMessage(IntToStr(Err) + ': ' + SysErrorMessage(Err)); end; |
AW: Windows Passwort überprüfen
Warum wird denn die Passwort-Ändern-Funktion benutzt? - Windows bietet doch über
![]() Bernhard PS: Nicht vergessen das Handle zu schließen (auch bei 0). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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