AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi LogonUser nicht möglich bei leerem PWD
Thema durchsuchen
Ansicht
Themen-Optionen

LogonUser nicht möglich bei leerem PWD

Ein Thema von Baeuerle · begonnen am 20. Aug 2009 · letzter Beitrag vom 21. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 12:56
Hallo,

ich veruche die eingebenen Benutzerdaten, zur Anmeldung am System (Vista/Win7), zu überprüfen in dem ich ein LogonUser durchführe.
Ist bei einem User ein Passwort hinterlegt, funktioniert das Ganze. Ohne Passwort bekomme ich leider ein False zurück auch GetLastError liefert keine aufschlussreiche Fehlermeldung.

Ideen???


Delphi-Quellcode:
// FUser, FDomain, FPass sind Klassenvariablen
function TProcessOptions.CanLogon: Boolean;
var sil: TSecurityImpersonationLevel;
    ltoken : Cardinal;
begin
ZeroMemory(@sil,sizeof(sil));
sil := SecurityIdentification;
Result:=LogonUser(PAnsiChar(String(FUser)),
  PAnsiChar(String(FDomain)),
  PAnsiChar(String(FPass)),
  LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,ltoken);
end;
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 14:03
Zitat von Baeuerle:
Hallo,

ich veruche die eingebenen Benutzerdaten, zur Anmeldung am System (Vista/Win7), zu überprüfen in dem ich ein LogonUser durchführe.
Ist bei einem User ein Passwort hinterlegt, funktioniert das Ganze. Ohne Passwort bekomme ich leider ein False zurück auch GetLastError liefert keine aufschlussreiche Fehlermeldung.
Hallo,

das ist wahrscheinlich das Gleiche wie bei Autologon und da ist es Absicht und auch so dokumentiert.

Gruss Reinhard
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#3

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 14:08
Schön aber wie kann ich jetzt überprüfen ob es möglich ist den Benutzer mit den Daten anzumelden???
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 21:18
Der Konsolenbefehl "RunAsUser" von Windows selbst funktioniert aiuch nur, wenn der Benutzer ein Passwort hinterlegt hat, weil der zugehörige Dienst eins verlangt aus Sicherheitsgründen.

Versuch mal mit dieer Unit: http://www.michael-puff.de/Developer/Delphi/Units/ -> SSPIValidatePassword.pas die Logindaten des Benutzers zu überprüfen. Unter Windows 2000 und XP funktioniert sie, ob sie das auch unter Vista tut, kann ich nicht sagen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 21:31
Zitat von Luckie:
Unter Windows 2000 und XP funktioniert sie, ob sie das auch unter Vista tut, kann ich nicht sagen.
Geht auch unter Vista, hab's soeben getestet.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 21:36
Prima. Danke. Fehlt noch Windows 7.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 22:05
zu SSPIValidatePassword.pas

Delphi-Quellcode:
function AddEntry(dwKey: DWORD; pData: pointer): boolean;
var
  pTemp: PNode;
begin
  GetMem(pTemp, sizeof(TNode));
  if Assigned(pTemp) then
  begin
    ...
    result := True
  end
  else
    result := False
end;
AddEntry wird niemals FALSE liefern, da GetMem eine Exception wirft, wenn der Speicher nicht reserviert werden kann. (also True oder Exception)


dieses
Delphi-Quellcode:
FillChar(AuthIdentity, sizeof(AuthIdentity), 0);
if DomainName <> 'then
begin
  AuthIdentity.Domain := PChar(DomainName);
  AuthIdentity.DomainLength := Length(DomainName)
end;
if UserName <> 'then
begin
  AuthIdentity.User := PChar(UserName);
  AuthIdentity.UserLength := Length(UserName);
end;
if Password <> 'then
begin
  AuthIdentity.Password := PChar(Password);
  AuthIdentity.PasswordLength := Length(Password)
end;
AuthIdentity.Flags := SEC_WINNT_AUTH_IDENTITY_ANSI;
könnte man auch so kürzen
Delphi-Quellcode:
AuthIdentity.Domain := Pointer(DomainName);
AuthIdentity.DomainLength := Length(DomainName)
AuthIdentity.User := Pointer(UserName);
AuthIdentity.UserLength := Length(UserName);
AuthIdentity.Password := Pointer(Password);
AuthIdentity.PasswordLength := Length(Password)
AuthIdentity.Flags := SEC_WINNT_AUTH_IDENTITY_ANSI;
Delphi-Quellcode:
function SSPLogonUser(const DomainName, UserName, Password: string): boolean;
  ReallocMem(pClientBuf, 0);
  ReallocMem(pServerBuf, 0);
auch wenn es nicht falsch ist, aber warum nicht FreeMem?
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 Luckie
Luckie

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

Re: LogonUser nicht möglich bei leerem PWD

  Alt 20. Aug 2009, 22:41
Habs korrigiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#9

Re: LogonUser nicht möglich bei leerem PWD

  Alt 21. Aug 2009, 08:45
Leider funktioniert auch diese Version von LogonUser unter Win7 mit leerem Passwort nicht und ja die Domain und der Benutzer ist korrekt geschrieben

Hat evtl. noch jemand eine Idee???

[EDIT:]
Es kommt die Exception "init context failed: -2146893044" inf der function GenServerContext....

[EDIT2:]

Exception entspricht SEC_I_CONTINUE_NEEDED
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#10

Re: LogonUser nicht möglich bei leerem PWD

  Alt 21. Aug 2009, 10:10
Da gibts ne Policy, die man ändern muss:
Siehe auch
http://stackoverflow.com/questions/4...th-no-password
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:45 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