![]() |
Vollen Benutzernamen ermitteln
Hallo,
ich benötige für mein Programm den vollen Namen des angemeldeten Benutzers - nicht dessen Benutzernamen. Bei mir ist das z.B. "Alexander Winzer", während ich mich am Computer mit einem Kürzel, also eben dem Benutzernamen, anmelde. Das Problem mit der Suche ist, dass mir keine besseren Suchworte als "Benutzername" oder "Username" einfallen und ich dann immer zu Codes für die Ermittlung des Benutzernamens geführt werde. Ich würde mich über Links oder kurzen Code freuen. Danke, Alex |
AW: Vollen Benutzernamen ermitteln
![]() |
AW: Vollen Benutzernamen ermitteln
|
AW: Vollen Benutzernamen ermitteln
Riesen Dank Euch beiden!
Ihr habt wie immer richtig gelegen. Nur der Vollständigkeit halber:
Delphi-Quellcode:
Gruß, Alex
Function GetUserNameEx(NameFormat: DWORD; lpNameBuffer: PChar; Var nSize: DWORD): Boolean; Stdcall;
External 'secur32.dll' Name 'GetUserNameExA'; Function NameDisplay: String; Const nfNameDisplay = 3; // A "friendly" display name Var Buffer : Array [0..1024] Of Char; Size : DWORD; Begin Size:=SizeOf(Buffer); If GetUserNameEx(nfNameDisplay, @Buffer, Size) Then Result:=Buffer Else Result:=''; End; |
AW: Vollen Benutzernamen ermitteln
Zitat:
(na gut, es ist wohl recht selten, daß jemand einen Namen mit mehr als 511 Zeichen nutzt :angle: ) |
AW: Vollen Benutzernamen ermitteln
Abba er nutzt ja die ANSI-Variante der Funktion, somit gibt es kein Unicode zurück.
Allerdings ist der Code so nicht auf einem System >= Delphi 2009 zu empfehlen :) |
AW: Vollen Benutzernamen ermitteln
Zitat:
Danke, Alex |
AW: Vollen Benutzernamen ermitteln
Ganz einfach: SizeOf gibt die Größe in Bytes zurück, Length die Länge in Char. Da Ansi -> Char = 1 Byte und Unicode -> Char = 2 Byte kann das zu Problemen führen, da eine doppelt so große Zahl übergeben würde, als tatsächlich zur Verfügung steht.
|
AW: Vollen Benutzernamen ermitteln
Zitat:
|
AW: Vollen Benutzernamen ermitteln
Jupp, für ihn aktuell irrelevant, aber nicht daß noch ein D2009+-Besitzer diesen Code bei sich einbaut. :angle2:
Also mit Length funktioniert der Code überall. (Ansi oder Unicode) [add] Uhhh, ich seh's grad ... da ist nochein Fehler drin. PChar und die AnsiVersion der Funktion importiert.
Delphi-Quellcode:
entweder
Function GetUserNameEx(NameFormat: DWORD; lpNameBuffer: PChar; Var nSize: DWORD): Boolean; StdCall;
External 'secur32.dll' Name {$IF SizeOf(Char) = 1} 'GetUserNameExA' {$ELSE} 'GetUserNameExW' {$IFEND}; Function GetUserNameExA(NameFormat: DWORD; lpNameBuffer: PAnsiChar; Var nSize: DWORD): Boolean; StdCall; External 'secur32.dll' Name 'GetUserNameExA'; Function GetUserNameExW(NameFormat: DWORD; lpNameBuffer: PWideChar; Var nSize: DWORD): Boolean; StdCall; External 'secur32.dll' Name 'GetUserNameExW'; PAnsiChar + die Ansi-Version (A wie Ansi) , PWideChar + die Unicode-Version (W wie Wide) oder PChar + die Version, welche zum Compiler paßt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 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