如何得到当前的操作系统的登陆用户名?

解决方案 »

  1.   

    char str[255];
    DWORD dw_size = 0;
    memset(str, 0, 255);
    if (!GetUserName(str, &dw_size))
              MessageBox("failed!");
    MessageBox(str);我在xp sp2上用vc运行,失败, failed! why?
    以上程序加在onbutton1()中.
      

  2.   

    char str[255];
    DWORD dw_size = 255;
    memset(str, 0, 255);
    if (!GetUserName(str, &dw_size))
              MessageBox("failed!");
    MessageBox(str);
      

  3.   

    这是完整代码。我已测试完全正确。
    如果你还有问题,请下载最新的sdk。包含相关头文件。#include <windows.h>
    #include <stdio.h>TCHAR* envVarStrings[] =
    {
      "OS         = %OS%",
      "PATH       = %PATH%",
      "HOMEPATH   = %HOMEPATH%",
      "TEMP       = %TEMP%"
    };
    #define  ENV_VAR_STRING_COUNT  (sizeof(envVarStrings)/sizeof(TCHAR*))
    #define INFO_BUFFER_SIZE 32767
    void printError( TCHAR* msg );void main( )
    {
      DWORD i;
      TCHAR  infoBuf[INFO_BUFFER_SIZE];
      DWORD  bufCharCount = INFO_BUFFER_SIZE;
     
      // Get and display the name of the computer. 
      bufCharCount = INFO_BUFFER_SIZE;
      if( !GetComputerName( infoBuf, &bufCharCount ) )
        printError( "GetComputerName" ); 
      printf( "\nComputer name:      %s", infoBuf ); 
     
      // Get and display the user name. 
      bufCharCount = INFO_BUFFER_SIZE;
      if( !GetUserName( infoBuf, &bufCharCount ) )
        printError( "GetUserName" ); 
      printf( "\nUser name:          %s", infoBuf ); 
     
      // Get and display the system directory. 
      if( !GetSystemDirectory( infoBuf, INFO_BUFFER_SIZE ) )
        printError( "GetSystemDirectory" ); 
      printf( "\nSystem Directory:   %s", infoBuf ); 
     
      // Get and display the Windows directory. 
      if( !GetWindowsDirectory( infoBuf, INFO_BUFFER_SIZE ) )
        printError( "GetWindowsDirectory" ); 
      printf( "\nWindows Directory:  %s", infoBuf ); 
     
      // Expand and display a few environment variables. 
      printf( "\n\nSmall selection of Environment Variables:" ); 
      for( i = 0; i < ENV_VAR_STRING_COUNT; ++i )
      {
        bufCharCount = ExpandEnvironmentStrings(envVarStrings[i], infoBuf,
            INFO_BUFFER_SIZE ); 
        if( bufCharCount > INFO_BUFFER_SIZE )
          printf( "\n\t(Buffer too small to expand: \"%s\")", 
                  envVarStrings[i] );
        else if( !bufCharCount )
          printError( "ExpandEnvironmentStrings" );
        else
          printf( "\n   %s", infoBuf );
      }
    }void printError( TCHAR* msg )
    {
      DWORD eNum;
      TCHAR sysMsg[256];
      TCHAR* p;  eNum = GetLastError( );
      FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | 
             FORMAT_MESSAGE_IGNORE_INSERTS,
             NULL, eNum,
             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
             sysMsg, 256, NULL );  // Trim the end of the line and terminate it with a null
      p = sysMsg;
      while( ( *p > 31 ) || ( *p == 9 ) )
        ++p;
      do { *p-- = 0; } while( ( p >= sysMsg ) &&
                              ( ( *p == '.' ) || ( *p < 33 ) ) );  // Display the message
      printf( "\n\t%s failed with error %d (%s)", msg, eNum, sysMsg );
    }
      

  4.   

    char str[255];
    DWORD dw_size = 255;
    memset(str, 0, 255);
    if (!GetUserName(str, &dw_size))
              MessageBox("failed!");
    MessageBox(str);