AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Passwort überprüfen

Ein Thema von 1234567890987654321 · begonnen am 19. Mär 2011 · letzter Beitrag vom 21. Mär 2011
Antwort Antwort
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#1

Windows Passwort überprüfen

  Alt 19. Mär 2011, 17:56
Hallo,
ich verwende diesen Code, um zu überprüfen ob Password=Windows Passwort:
Code:
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;
Diesen Code habe ich von http://entwickler-forum.de/showthread.php?t=36129
Es kommt aber immer dasselbe: Result:=False;
Auch wenn das Pw und Username richig sind.

Was ist an diesem Code falsch?
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Windows Passwort überprüfen

  Alt 19. Mär 2011, 17:59
Versuch mal die Strings vorher zu trimmen.
Ungenügend Rechte?
Markus Kinzler
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#3

AW: Windows Passwort überprüfen

  Alt 19. Mär 2011, 18:00
Ich bin Admin,
und was meinst du mit Strings Trimmen?
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Windows Passwort überprüfen

  Alt 19. Mär 2011, 18:01
Nutz dazu die Unit SSPIValidatePassword.pas: http://www.michael-puff.de/Programmierung/Delphi/Units/

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.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (19. Mär 2011 um 18:05 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Windows Passwort überprüfen

  Alt 19. Mär 2011, 18:03
Zitat:
und was meinst du mit Strings Trimmen?
Eventuelle Leerzeichen entfernen -> Trim()
Markus Kinzler
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#6

AW: Windows Passwort überprüfen

  Alt 19. Mär 2011, 18:06
Sind keine drin, der Aufruf ist:
Code:
showmessage(booltostr(isPW('Tim', '123')));
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#7

AW: Windows Passwort überprüfen

  Alt 21. Mär 2011, 07:20
Push
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#8

AW: Windows Passwort überprüfen

  Alt 21. Mär 2011, 08:36
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:
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;
Was sagt denn die Fehlermeldung?
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

AW: Windows Passwort überprüfen

  Alt 21. Mär 2011, 16:31
Warum wird denn die Passwort-Ändern-Funktion benutzt? - Windows bietet doch über MSDN-Library durchsuchenLogonUser() ausreichend Informationen, ob das PW stimmt oder nicht.

Bernhard

PS: Nicht vergessen das Handle zu schließen (auch bei 0).
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz