Autor |
Beitrag |
Harry M.
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: So 31.07.05 16:47
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?!
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: So 31.07.05 16:51
Also alles in Ordnung
AXMD
|
|
Harry M. 
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: So 31.07.05 17:17
Ne leider nicht alles klar, weil ich mit falscher Kennung zum Selben Ergebnis komme.
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: So 31.07.05 17: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. 
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: So 31.07.05 17: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?
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: So 31.07.05 18: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
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: So 31.07.05 18: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
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Harry M. 
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: So 31.07.05 18:12
Ich glaube da liege ich gan nicht so falsch. Wenn ich GetLasError auswerte komme ich immer auf "ERROR_PRIVILEGE_NOT_HELD" in den MSDN steht "A required privilege is not held by the client."
msdn.microsoft.com/l...odes__1300-1699_.asp
Welche Privilegien müsste ich den setzten ?
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: So 31.07.05 18: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
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Harry M. 
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: So 31.07.05 20: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 
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|