![]() |
Re: benutzername und passwort überprüfen
ich habs irgendwie geschafft, dass das programm nicht mehr abbricht, aber wie kann man die exception unterdrücken :?:
|
Re: benutzername und passwort überprüfen
Hallo,
Du solltest
Delphi-Quellcode:
von
try
except // wird nur ausgeführt wenn ein Fehler auftritt // Exception wird abgefangen (falls kein raise innerhalb des Blocks steht) end
Delphi-Quellcode:
unterscheiden.
try
finally // wird immer (d.h. bei normalem Ablauf & im Fehlerfall) ausgeführt // aufgetretene Exceptions werden immer weitergereicht!! end 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; |
Re: benutzername und passwort überprüfen
RaiseLastOSError ist keine Exception, lediglich eine Ausgabe des letzten Systemfehlers für diesen Prozess! Das war sein Fehler.
|
Re: benutzername und passwort überprüfen
nun hab ich das RaiseLastOSError weggelassen, doch nun bleibt das programm stecken!
|
Re: benutzername und passwort überprüfen
Zitat:
Hast Du die Hinweise aus einem der Beiträge zuvor beachtet? Zitat:
|
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:
bekomm aber leider immer 'true' heraus, auch wenn das passwort nicht stimmt!
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; |
Re: benutzername und passwort überprüfen
Hallo,
Dir ist aber schon bewußt, dass
Delphi-Quellcode:
das Kernstück ist, oder?
if not Fun(UserData)
then RaiseLastOSError; 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; |
Re: benutzername und passwort überprüfen
|
Re: benutzername und passwort überprüfen
@mr2: mit der änderung klappts!
thx! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 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