Autor Beitrag
MarkusBauer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70

Win XP Pro
Delphi 7 PE+Indy
BeitragVerfasst: Fr 29.08.08 20:32 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 29.08.08 20:34 
Die Windows-Api kann man auch aus Delphi heraus aufrufen

_________________
Markus Kinzler.
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Fr 29.08.08 21:39 
MarkusBauer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70

Win XP Pro
Delphi 7 PE+Indy
BeitragVerfasst: 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: dotnet-snippets.de/d...rsetzung-SID861.aspx


Zuletzt bearbeitet von MarkusBauer am So 31.08.08 19:41, insgesamt 1-mal bearbeitet
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 31.08.08 19:31 
ausblenden 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, 20, token);
  CloseHandle(token);
  Result := token != 0;
end;

Ungetestet.
user profile iconMarkusBauer 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


Zuletzt bearbeitet von Chryzler am So 31.08.08 20:49, insgesamt 1-mal bearbeitet
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: So 31.08.08 19:57 
user profile iconChryzler hat folgendes geschrieben:
ausblenden 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, 20, token);
  CloseHandle(token);
  Result := token <> 0;  // != wäre ja C# ;)
end;

Wie gut kenne ich das :lol:

_________________
Programmers never die, they just GOSUB without RETURN
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Dezipaitor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: 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.

_________________
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: blog.delphi-jedi.net = JEDI API LIB & Windows Security Code Library (JWSCL)