Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi benutzername und passwort überprüfen (https://www.delphipraxis.net/11619-benutzername-und-passwort-ueberpruefen.html)

Illuminator-23-5 12. Nov 2003 15:52

Re: benutzername und passwort überprüfen
 
ich habs irgendwie geschafft, dass das programm nicht mehr abbricht, aber wie kann man die exception unterdrücken :?:

mr2 12. Nov 2003 19:09

Re: benutzername und passwort überprüfen
 
Hallo,

Du solltest
Delphi-Quellcode:
try

except
// wird nur ausgeführt wenn ein Fehler auftritt
// Exception wird abgefangen (falls kein raise innerhalb des Blocks steht)
end
von
Delphi-Quellcode:
try

finally
// wird immer (d.h. bei normalem Ablauf & im Fehlerfall) ausgeführt
// aufgetretene Exceptions werden immer weitergereicht!!
end
unterscheiden.

So sollte es funtioniern:
Delphi-Quellcode:
// Beispielaufruf
var
  Res: THandle;
  bValid: Boolean;
begin
  try
    Res := Logon('Knut', '.', 'geheim', LOGON32_LOGON_INTERACTIVE);
  except
    Res := INVALID_HANDLE_VALUE;
  end;
  bValid := (Res <> INVALID_HANDLE_VALUE);
  if bValid then begin
    CloseHandle(Res); // Handle unbedingt wieder schließen!!
    ShowMessage('Logon erfolgreich');
  else ShowMessage('Logon fehlgeschlagen');
end;

Luckie 12. Nov 2003 19:15

Re: benutzername und passwort überprüfen
 
RaiseLastOSError ist keine Exception, lediglich eine Ausgabe des letzten Systemfehlers für diesen Prozess! Das war sein Fehler.

Illuminator-23-5 13. Nov 2003 16:20

Re: benutzername und passwort überprüfen
 
nun hab ich das RaiseLastOSError weggelassen, doch nun bleibt das programm stecken!

mr2 13. Nov 2003 18:32

Re: benutzername und passwort überprüfen
 
Zitat:

RaiseLastOSError löst eine Exception für den letzten Fehler im Betriebssystem oder in der Systembibliothek aus.
Also bei mir funktioniert das zuletzt angegebene Beispiel (MIT RaiseLastOSError) einwandfrei.
Hast Du die Hinweise aus einem der Beiträge zuvor beachtet?
Zitat:

Eventuell muss dem ausführenden Benutzer noch ein Recht gewährt werden:

- secpol.msc ausführen
- Lokale Sicherheitsrichtlinien / Zuweisen von Benutzerrechten
- Erstellen eines Token-Objekts & Einsetzen als Teil des Betriebsystems für den "Passwort-Prüfer" aktivieren
- danach neu anmelden

Illuminator-23-5 14. Nov 2003 14:06

Re: benutzername und passwort überprüfen
 
jup, das hab ich!
ich hab aber das Fun() auch weggelöscht, jetzt bleibt das Prog nicht mehr stecken!

deshalb hab ich mir nun folgende funktion gemacht:
Delphi-Quellcode:
function rightPwd(Name, Pwrd: string): boolean;
var
  Res: THandle;
  bValid: Boolean;
begin
  result := false;
  Res := Logon(Name, '.', Pwrd, LOGON32_LOGON_INTERACTIVE);
  bValid := (Res <> INVALID_HANDLE_VALUE);
  if bValid then begin
    CloseHandle(Res); // Handle unbedingt wieder schließen!!
    result := true;
  end;
end;
bekomm aber leider immer 'true' heraus, auch wenn das passwort nicht stimmt!

mr2 14. Nov 2003 19:46

Re: benutzername und passwort überprüfen
 
Hallo,

Dir ist aber schon bewußt, dass
Delphi-Quellcode:
  if not Fun(UserData)
  then RaiseLastOSError;
das Kernstück ist, oder?
Das muss unbedingt drinbleiben sonst ist der ganze Aufruf sinnlos!

ändere bitte mal die Funktion Logon wie folgt ab:
Delphi-Quellcode:
function Logon(const User, Domain, Passw: string; Flag: Integer): THandle;
var
  LR : TLogonRec;
begin
  LR.U := PChar(User);
  LR.D := PChar(Domain);
  LR.P := PChar(Passw);
  LR.Flag := Flag;
  LR.Token := INVALID_HANDLE_VALUE; // hier ändern !!!
  PrivilegedExec(SE_CHANGE_NOTIFY_NAME, _Logon2, LR);
  Result := LR.Token;
end;

DaFox 14. Nov 2003 20:25

Re: benutzername und passwort überprüfen
 
Hi,

http://support.microsoft.com:80/supp...NoWebContent=1

Gruß,
Markus

Illuminator-23-5 15. Nov 2003 10:59

Re: benutzername und passwort überprüfen
 
@mr2: mit der änderung klappts!
thx!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.
Seite 2 von 2     12   

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