知道如何编程实现在win2000中得到当前登陆用户名吗?(100分)

  • 主题发起人 主题发起人 honghs
  • 开始时间 开始时间
H

honghs

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:知道如何编程实现在win2000中得到当前登陆用户名吗?
 
我尝试了一下。
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;
{ GetUserName }
只能用在win98,nt.win2000会返回空
 
我在Windows 2000 Advanced Server上试了以下代码,没有问题的。
char pszLoginid[200];
DWORD nSize = 200;
if (WNetGetUser(NULL, pszLoginid, &nSize) != NO_ERROR)
ShowMessage("Error");
else
ShowMessage(AnsiString(pszLoginid));
 
上面的代码是C++Builder中的,在Delphi中,下面的代码也没有问题:
var
pszLoginid: array[0 .. 199] of char;
nSize: Cardinal;
begin
nSize := 200;
if WNetGetUser(nil, pszLoginid, nSize) = NO_ERROR then
ShowMessage(StrPas(pszLoginid))
else
ShowMessage('Error');
end;
 
if WNetGetUser(nil, lpUserName, lpnLength) = NO_ERROR then
。。。
就能得到本机的用户名了
 
唯美少年,早知道你这么快就进来了,我给几十分算了。
 
多人接受答案了。
 
后退
顶部