Lies doch mal die
Doku zu GetUserName:
Dein festes Array funktioniert da du die Größe schon auf 256 Zeichen festgelegt hast. Den String musst du natürlich auch lang genug machen sonst scheitert die Funktion, wie beschrieben. Ich lasse bei so etwas die Funktion beim ersten mal mit Absicht scheitern da sie mir, laut verlinkter Doku, im Ausgabeparameter
lpnSize
zurückgibt wieviele Zeichen der UserName denn braucht. Und dann kann man seinen String (oder Array) auch so lang machen wie es gebraucht wird und nicht unnötig länger.
[Quote]
Delphi-Quellcode:
procedure printUserName();
var
userName: String;
buffer: PChar;
bufferLen: DWORD;
begin
bufferLen := 0;
GetUserName(nil, bufferLen);
userName := String.Create('?', bufferLen-1);
buffer := PChar(userName);
Win32Check( GetUserName(buffer, bufferLen) );
WriteLn( userName.QuotedString() );
end;