Entwickler-Ecke

Sonstiges (Delphi) - Windows Benutzernamen auslesen


volvox - Sa 02.01.10 18:59
Titel: Windows Benutzernamen auslesen
Hi.

Ich möchte in mein Programm eine Funktion einbauen die den Windows Benutzernamen ausliest und als string speichert. Für nen Einzelplatzrechner hätte ich noch ne grobe Idee, aber mein Programm ist für unser Büro gedacht wo sich jeder mit Nutzernamen und Passwort über nen Server einloggt (WinXP Professional). Hat jemand ne Idee wo ich diese Information herbekomme?

Und wie siehts beispielsweise bei Win7 aus.

Vielen Dank


jaenicke - Sa 02.01.10 19:01

Die Funktion ist immer die selbe. Was möchtest du haben? Den Benutzernamen.
Hmm, was heißt das auf englisch? Richtig... GetUserName...
http://msdn.microsoft.com/en-us/library/ms724432.aspx


volvox - Sa 02.01.10 19:30

versteh ich nicht so ganz wie ich den Namen dann als String bekomme...
Variable.GetUserName oder wie?


jaenicke - Sa 02.01.10 19:39

user profile iconvolvox hat folgendes geschrieben Zum zitierten Posting springen:
Variable.GetUserName oder wie?
:shock: Du solltest dir dringend die allerersten Grundlagen anschauen...
GetUserName ist eine Funktion und Variable kein Objekt mit GetUserName als Methode...

Ein Beispiel in Delphi findest du hier:
http://www.delphipraxis.net/post34095.html#34095


Delete - Sa 02.01.10 21:06

Es gibt übrigens nicht den Benutzernamen. Es können auch Benutzer remote angemeldet sein zum Beispiel. Suche im MSDN GETUSERNAME liefert dir nur den Benutzer, den den aktuellen Thread ausführt. Es können aber auch andere Benutzer eine anderen Thread des gleichen Prozesses ausführen über Suche im MSDN IMPERSONATELOGGEDONUSER zum Beispiel.

Also, welchen Benutzer willst?


volvox - Sa 02.01.10 21:11

Den des aktuell angemeldeten Benutzers. Es wäre nett wenn mir mal jemand die komplette Procedure dafür posten könnte (Nutzername in string X speichern), weil ich so aufgrund meiner eher schlechten Delphi-Kenntnise leider nicht weiterkomme.


jaenicke - Sa 02.01.10 21:35

user profile iconvolvox hat folgendes geschrieben Zum zitierten Posting springen:
Den des aktuell angemeldeten Benutzers.
Das können ja mehrere sein, hat user profile iconLuckie doch gerade geschrieben...

user profile iconvolvox hat folgendes geschrieben Zum zitierten Posting springen:
Es wäre nett wenn mir mal jemand die komplette Procedure dafür posten könnte (Nutzername in string X speichern)
*hust* *räusper*
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Beispiel in Delphi findest du hier:
http://www.delphipraxis.net/post34095.html#34095


volvox - So 03.01.10 21:28

Oder so :D :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function GetUsername: string;
var
  Buffer: array[0..255of Char;
  Size: DWord;
begin
  Size := SizeOf(Buffer);
  if not Windows.GetUserName(Buffer, Size) then
    RaiseLastOSError; //RaiseLastWin32Error; {Bis D5};
  SetString(Result, Buffer, Size - 1);
end;