AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vollen Benutzernamen ermitteln

Ein Thema von Schwedenbitter · begonnen am 13. Apr 2011 · letzter Beitrag vom 14. Apr 2011
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Vollen Benutzernamen ermitteln

  Alt 13. Apr 2011, 13:30
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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.716 Beiträge
 
Delphi 12 Athens
 
#2

AW: Vollen Benutzernamen ermitteln

  Alt 13. Apr 2011, 13:34
MSDN-Library durchsuchenGetUserNameEx bietet einige Möglichkeiten ... k.A. ob dein Wunsch auch befriedigt wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Vollen Benutzernamen ermitteln

  Alt 13. Apr 2011, 13:43
http://www.michael-puff.de/Programmi...erNameEx.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Vollen Benutzernamen ermitteln

  Alt 13. Apr 2011, 21:01
Riesen Dank Euch beiden!
Ihr habt wie immer richtig gelegen. Nur der Vollständigkeit halber:
Delphi-Quellcode:
Function GetUserNameEx(NameFormat: DWORD; lpNameBuffer: PChar; Var nSize: DWORD): Boolean; Stdcall;
   External 'secur32.dllName '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;
Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.716 Beiträge
 
Delphi 12 Athens
 
#5

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 06:06
Zitat von MSDN:
specifies the size of the lpBuffer buffer, in TCHARs
Also Length und nicht SizeOf, sonst könnte es bei Unicode einen Pufferüberlauf geben.
(na gut, es ist wohl recht selten, daß jemand einen Namen mit mehr als 511 Zeichen nutzt )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 06:36
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 09:09
Allerdings ist der Code so nicht auf einem System >= Delphi 2009 zu empfehlen
Bitte mal noch erklären, warum das so ist. Erstens will ich lernen, zweitens der Vollständigkeit halber für Leute, die evtl. auch mal vor demselben Problem stehen, das Thema über die Suche finden und drittens vielleicht leiste ich mir ja eines Tages mal ein (neueres) Delphi...

Danke, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.588 Beiträge
 
Delphi 12 Athens
 
#8

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 09:16
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 09:31
Allerdings ist der Code so nicht auf einem System >= Delphi 2009 zu empfehlen
Mein Code stammt auch noch aus Zeiten, da wusste Borland noch nicht mal wie Unicode geschrieben wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.716 Beiträge
 
Delphi 12 Athens
 
#10

AW: Vollen Benutzernamen ermitteln

  Alt 14. Apr 2011, 10:22
Jupp, für ihn aktuell irrelevant, aber nicht daß noch ein D2009+-Besitzer diesen Code bei sich einbaut.

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:
Function GetUserNameEx(NameFormat: DWORD; lpNameBuffer: PChar; Var nSize: DWORD): Boolean; StdCall;
  External 'secur32.dllName {$IF SizeOf(Char) = 1} 'GetUserNameExA{$ELSE} 'GetUserNameExW{$IFEND};

Function GetUserNameExA(NameFormat: DWORD; lpNameBuffer: PAnsiChar; Var nSize: DWORD): Boolean; StdCall;
  External 'secur32.dllName 'GetUserNameExA';

Function GetUserNameExW(NameFormat: DWORD; lpNameBuffer: PWideChar; Var nSize: DWORD): Boolean; StdCall;
  External 'secur32.dllName 'GetUserNameExW';
entweder
PAnsiChar + die Ansi-Version (A wie Ansi)
,
PWideChar + die Unicode-Version (W wie Wide)
oder
PChar + die Version, welche zum Compiler paßt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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