怎么取的XP系统的用户名

如何取的XP系统的用户名?
如何取的XP系统的用户名?
我这个函数有点问题,在DELPHI5.0上可以编译运行,取不出来,但又不报错,不知道怎么回事,各位高手帮忙改改

function   GetUserName:   AnsiString;       //得到用户名
var
    lpName:   PAnsiChar;
    lpUserName:   PAnsiChar;
    lpnLength:   DWORD;
begin
        Result   :=   ' ';
        lpnLength   :=   0;
        WNetGetUser(nil,   nil,   lpnLength);   //   取得字串长度
        if   lpnLength   >   0   then   begin
              GetMem(lpUserName,   lpnLength);
              if   WNetGetUser(lpName,   lpUserName,   lpnLength)   =   NO_ERROR   then
                  Result   :=   lpUserName;
                  FreeMem(lpUserName,   lpnLength);
        end;
end;


------解决方案--------------------
function GetName: string;
const
MAX = MAX_COMPUTERNAME_LENGTH;
var
Computer: array[0..MAX]of Char;
Size: DWORD;
Str : String;
begin
Size := MAX;
FillChar(Computer, MAX, 0);
GetComputerName(Computer, Size);
Str := Computer;
Result := Str;
end;

上面这个函数可以获取计算机用户名
------解决方案--------------------
function GetUserName: AnsiString; //得到用户名
var
lpName: PAnsiChar;
lpUserName: PAnsiChar;
lpnLength: DWORD;
begin
Result := ' ';
lpnLength := 0;
WNetGetUser(nil, nil, lpnLength); // 取得字串长度
if lpnLength > 0 then begin
GetMem(lpUserName, lpnLength+1);
if WNetGetUser(nil, lpUserName, lpnLength) = NO_ERROR then
Result := lpUserName;
FreeMem(lpUserName);
end;
end;