Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Username in Anmeldeskript ermitteln -> (https://www.delphipraxis.net/4315-username-anmeldeskript-ermitteln.html)

Steran 24. Apr 2003 09:10


Username in Anmeldeskript ermitteln ->
 
Hallo,

ich hab irgendwie ein komisches Problem:

Habe ein Programm geschrieben, welches im Anmeldeskript (NT4 Domäne; 9x/2K/XP Clients) läuft!

Dieses Programm ermittelt Usernamen und PC-Namen..es funktioniert auch eigentlich einwandfrei, nur bei manchen Usern wird anstelle des User-Names der Hexwert 18 (Quadrad) in die Log-Datei geschrieben!
Führe ich das Programm nach der Anmeldung manuelle aus, wird der Username richtig ermittelt! => Log-Datei wird richtig geschrieben!

Das Problem tritt aber immer bei den gleichen usern auf!

Der Code für die GetUserName funktion:

Delphi-Quellcode:
function GetUserName(): String;
var
    Buffer: Array[0..MAX_COMPUTERNAME_LENGTH+1] of Char;
    Size: DWORD;
begin
    size:=1024;
    Windows.GetUserName(Buffer, Size);
    Result:=StrPas(Buffer);
end;
Habt ihr eine Erklärung für diese Phänomen?

danke

Steran

Christian Seehase 25. Apr 2003 16:53

Moin Steran,

kann es sein, dass der Fehler nur bei 9x Clients auftritt?
Ich hab' da nämlich etwas Ähnliches, das nur bei 9x Clients auftritt (geht ebenfalls um den Usernamen).

Luckie 25. Apr 2003 17:43

Versuch mal die version, diich hier gepostet habe
http://www.delphipraxis.net/viewtopic.php?t=4800 (Die aus dem letzten Posting natürlich).

Steran 28. Apr 2003 12:17

Hi!!

Ja, der Fehler tritt eigentlich nur bei 9x Clients auf...aber nicht bei allen!

...werd das von luckie mal probieren..und poste dann wieder!

danke!

Steran


Nachtrag:

..habs jetzt getestet...Luckie's Version funzt leider auch nicht *heul*
..bei UserName in meiner Log-Datei steht jetzt gar nichts...wird aber richtig geschrieben, wenn ich das Programm nach der Anmeldung manuell starte...:cry:

..komisch ist allerdings, dass meine Funktion GetComputerName:

Delphi-Quellcode:
function GetComputerName(): String;
var
    Buffer: Array[0..MAX_COMPUTERNAME_LENGTH+1] of Char;
    Size: DWORD;
begin
    size:=1024;
    Windows.GetComputerName(Buffer, Size);
    Result:=StrPas(Buffer);
end;
einwandfrei funktioniert...wobei sie doch ziemlich ähnlich mit der GetUserName Funktion ist...irgendwie hab ich keinen Durchblick mehr :-(

Hat sonst noch jmd. einen Vorschlag???

Danke

Steran 29. Apr 2003 06:50

so...jetzt hab ich's doch geschafft, den UserName richtig in eine log-datei zu schreiben...ich fand leider keine andere Lösung, als mein Programm eine 5 sekündige Pause machen zu lassen, und dann erst den UserName abzufragen:

Delphi-Quellcode:
procedure Pause (Zeit: LongInt);
var
  ZeitVar: LongInt;
begin
  ZeitVar := GetTickCount;
  repeat
    Application.ProcessMessages
  until (GetTickCount - ZeitVar > Zeit)
end;
ist zwar irgendwie "unschön" gelöst, aber es funktioniert zumindest!

Danke nochmal an alle helfenden!!

MfG

Steran

Christian Seehase 30. Apr 2003 16:24

Moin Steran,

danke für den Tip, das werd' ich dann auch mal ausprobieren, allerdings Betriebssystemspezifisch eingebaut.

DelphiDeveloper 30. Apr 2003 16:56

GetUserName
 
Ich benutze auch Die Funktion GetUserName für derartiges. Mir ist jedoch aufgefallen dass wenn die Userkennung geändert wird, die Funktion immer noch den alten Wert liefert.

Als z.B Fräulein "müller" hat die Kennung 'müller' jetzt heiratet sie und der account wird geändert in "maier". GetUserName liefert dann immer noch "müller".
Da muß es doch noch andere api-Funktionen geben um auch an die neue Kennung heranzukommen.

Christian Seehase 30. Apr 2003 17:40

Moin DelphiDeveloper,

also dass sich der Profilpfad nach einer Umbenennung des Accounts nicht ändert weiss ich aus eigener Erfahrung, aber das GetUserName den alten Account zurückliefert ist mir neu.
Unter welchen Betriebbsystemen ist Dir das aufgefallen?

DelphiDeveloper 5. Mai 2003 10:41

GetUserName
 
Zitat:

Unter welchen Betriebbsystemen ist Dir das aufgefallen?
XP Home


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 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