请问如何获得本地机用户名?有没有这样一个API函数?

解决方案 »

  1.   

    不知道MSDN中的这个合适你吗?
    GetUserName
    The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system. BOOL GetUserName(
      LPTSTR lpBuffer,  // address of name buffer
      LPDWORD nSize     // address of size of name buffer
    );
     
    Parameters
    lpBuffer 
    Pointer to the buffer to receive the null-terminated string containing the user's logon name. If this buffer is not large enough to contain the entire user name, the function fails. A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in LMCONS.H. 
    nSize 
    Pointer to a DWORD variable that, on input, specifies the maximum size, in characters, of the buffer specified by the lpBuffer parameter. If the function succeeds, the variable receives the number of characters copied to the buffer. If the buffer is not large enough, the function fails and the variable receives the required buffer size, in characters, including the terminating null character. 
    Return Values
    If the function succeeds, the return value is nonzero, and the variable pointed to by nSize contains the number of characters copied to the buffer specified by lpBuffer, including the terminating null character. If the function fails, the return value is zero. To get extended error information, callGetLastError. Res
    If the current thread is impersonating another client, the GetUserName function returns the user name of the client that the thread is impersonating. 
      

  2.   

    调用GetUserName()函数
     char *cUser;
      unsigned long nSize;
      GetUserName(cUser, &nSize);
      CString strUser;
      strUser.Format("%s", &cUser);
      AfxMessageBox(strUser);结果得到无效值,请问是什么原因呢?
      

  3.   

    char buf[MAX_COMPUTERNAME_LENGTH+1];
    unsigned long uSize=MAX_COMPUTERNAME_LENGTH;
    if(!GetComputerName(buf,&uSize))
        AfxMessageBox("Failed");
    buf[uSize] = 0;
    AfxMessageBox(buf);
      

  4.   

    结果得到无效值,请问是什么原因呢?
    ???
    char lpBuffer[250];  // address of name buffer
    DWORD nSize = 250;    // address of size of name buffer
    GetUserName(lpBuffer,&nSize);
    我就这么着就把我的登录名给列出来了。
    我的是XP,相信其它的不会有问题吧。因为版本支持
    Windows NT: Requires version 3.1 or later.
    Windows: Requires Windows 95 or later.