![]() |
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:
Habt ihr eine Erklärung für diese Phänomen?
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; danke Steran |
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). |
Versuch mal die version, diich hier gepostet habe
![]() |
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:
einwandfrei funktioniert...wobei sie doch ziemlich ähnlich mit der GetUserName Funktion ist...irgendwie hab ich keinen Durchblick mehr :-(
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; Hat sonst noch jmd. einen Vorschlag??? Danke |
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:
ist zwar irgendwie "unschön" gelöst, aber es funktioniert zumindest!
procedure Pause (Zeit: LongInt);
var ZeitVar: LongInt; begin ZeitVar := GetTickCount; repeat Application.ProcessMessages until (GetTickCount - ZeitVar > Zeit) end; Danke nochmal an alle helfenden!! MfG Steran |
Moin Steran,
danke für den Tip, das werd' ich dann auch mal ausprobieren, allerdings Betriebssystemspezifisch eingebaut. |
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. |
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? |
GetUserName
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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