Entwickler-Ecke
Windows API - LogonUser und seine Fehlercodes
Harry M. - So 31.07.05 15:47
Titel: LogonUser und seine Fehlercodes
Hi
ich möchte meine Client-Server-Anwendung für die ein Authentifizierung notwening ist etwas ändern Bissher habe ich den Server das Password etc "verwalten" lassen. Ich möchte aber jetzt auf die Benutzerkonten umstellen. Das heißt mein Programm soll in den lokalen Konten prüfen ob User / Pass richtig sind und entsprechend verfahren.
Ich habe aber etwas Probs mit LogonUser. Ich bekomme dort Fehlermeldung mit den ich nicht wirklich was anfangen kann. Hier mal der Code
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var ErrCode: Cardinal; begin LogonUser('User', 'Domain', 'Pass', LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ErrCode); ShowMessage('ErrCode: '+IntToStr(ErrCode)+' = '+SysErrorMessage(ErrCode)+#10#13 +'GetLastError: '+IntToStr(GetLastError)+' = '+SysErrorMessage(GetLastError)); end; |
Ich komme aber immer bei "ErrCode" auf 0 und bei "GetLastError" auf 1314.
ErrCode: 0 = Der Vorgang wurde erfolgreich beendet
GetLastError: 1314 = Der Client besitzt ein erforderliches Recht nicht
Was is hier nicht richrig?!
AXMD - So 31.07.05 15:51
Also alles in Ordnung ;)
AXMD
Harry M. - So 31.07.05 16:17
Ne leider nicht alles klar, weil ich mit falscher Kennung zum Selben Ergebnis komme.
AXMD - So 31.07.05 16:28
Ja eben. Ich zitiere nochmal:
Heißt: wenn ein Fehler auftritt, ist ErrCode (deine Variable) 0; wenn
kein Fehler auftritt, ist ErrCode
nicht 0
Und eben, wenn ErrCode = 0, dann fragst du LastErrorCode ab, ansonsten nicht. Klar soweit?
AXMD
Harry M. - So 31.07.05 16:40
Dann komme ich ja ebenauf -> GetLastError: 1314 = Der Client besitzt ein erforderliches Recht nicht
Welches Recht besitze ích denn nicht. Ich bin als Admin an meinem Rechner angemeldet. Muss ich noch Privilegien setzten oder sowas?
AXMD - So 31.07.05 17:05
Harry M. hat folgendes geschrieben: |
Dann komme ich ja ebenauf -> GetLastError: 1314 = Der Client besitzt ein erforderliches Recht nicht
Welches Recht besitze ích denn nicht. Ich bin als Admin an meinem Rechner angemeldet. Muss ich noch Privilegien setzten oder sowas? |
Dabei kann ich dir leider nicht weiterhelfen. Versuch mal, über MSDN was rauszufinden.
AXMD
Motzi - So 31.07.05 17:08
Ich zitiere aus dem SDK:
| PSDK hat folgendes geschrieben: |
| The process calling LogonUser requires the SE_TCB_NAME privilege. If the calling process does not have this privilege, LogonUser fails and GetLastError returns ERROR_PRIVILEGE_NOT_HELD. |
Und das TCB-Privilege besitzen nur Services. Es gibt aber sowieso bessere Möglichkeiten das Passwort zu überprüfen als den Benutzer einzuloggen:
SSPI
Motzi - So 31.07.05 17:20
Steht doch da - du benötigst das SE_TCB_NAME Privileg. TCB steht dabei für Trusted Computing Base. Diese Privileg kann man aber nicht einfach so setzen, wie zB das Debug-Privileg (das Debug-Privileg kann eigentlich auch nicht wirklich "setzen", entweder man hat es oder man hat es nicht, es ist nur einfach standardmäßig deaktiviert. Wenn man es aber nicht hat, dann kann man es auch nicht aktivieren). Das TCB-Privilege besitzen, wie der Name bereits sagt, nur "vertrauenswürdige" Prozesse - die Services. Diese sind insofern als vertrauenswürdig einzustufen, da sie nur von einem Admin installiert werden können und man davon ausgeht, dass dieser weiß was er tut. Andere Prozesse besitzen dieses Privileg nicht (außer sie wurden von einem Service aus gestartet).
Einzige Möglichkeit LogonUser zu verwenden ist also einen Service zu programmieren. Eine andere Möglichkeit ohne Service und ohne LogonUser (und die würde ich vorziehen) bietet das "Security Support Provider Interface" (SSPI) - siehe Suchlink in meinem letzten Posting.
Gruß, Motzi
Harry M. - So 31.07.05 19:29
@Motzi: Danke. Ich habe Dein 1. Posting erst gelesen als ich meine schon abgesckickt hatte :( Und dann ach musst ich dringend weg. Ich probiere mal den Weg den Du vorgeschlagen hast. Das Programm will ich sowie so noch als Service umbauen (aus mehren Grunden). Ein Grund mehr endlich damit anzufangen :lol:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!