本帖最后由 VisualEleven 于 2011-09-27 13:06:52 编辑

解决方案 »

  1.   

    1. 使用
      int DimCount;
      void main()

         LPNETRESOURCE   lpNetRC_p=NULL;
         DimCount=0;
         Enumerate(lpNetRC_p) ;  }
    2.回调函数bool  Enumerate(LPNETRESOURCE   lpNetRC_p) 

     int UserCount=0; 
     HANDLE   hEnum   =   0; 
     DWORD   dwScope   =   RESOURCE_GLOBALNET   ; 
     DWORD   dwType   =   RESOURCETYPE_ANY;  DWORD   dwResult   =   WNetOpenEnum( 
      dwScope,   //   scope   of   enumeration 
      dwType,   //   resource   types   to   list 
      0,   //   enumerate   all   resources   or   RESOURCEUSAGE_CONTAINER   
      lpNetRC_p,   //   pointer   to   resource   structure   (NULL   at   first   time) 
      &hEnum   //   handle   to   resource 
      ); 
     if(   dwResult   !=   NO_ERROR   ) 
     { 
      int   re=GetLastError();   return   FALSE; 
     } 
     DWORD   dwBuffer   =   16384   ;   //   16K   is   reasonable   size  DWORD   dwEntries   =   0xFFFFFFFF   ;   //   enumerate   all   possible   entries  LPNETRESOURCE   lpBuffer;  //   first   allocate   buffer   for   NETRESOURCE   structures   ...  lpBuffer=(LPNETRESOURCE)GlobalAlloc(GPTR,dwBuffer   )   ;  dwResult   =   WNetEnumResource(hEnum,&dwEntries,lpBuffer,&dwBuffer);  if(   dwResult   ==   NO_ERROR   ) 
     { 
      for(   register   DWORD   i   =   0   ;   i <dwEntries;i++)   
      {    // memcpy(&lpBuffer[i],&lpBuffer[i],sizeof(NETRESOURCE));    if(lpNetRC_p) 
       { 
        if(lpBuffer[i].dwDisplayType==RESOURCEDISPLAYTYPE_DOMAIN) 
        { 
         //这里就是得到获取本机 域名 或 工作组名并把它放到数组中 
         strcpy((char   *)DimInfo[DimCount++].dimName,lpBuffer[i].lpRemoteName); 
         
        } 
        else   
        { //这里就是得到的用户名并把它放到数组中 
      
         strcpy((char   *)DimInfo[DimCount-1].User[UserCount++].UserName,lpBuffer[i].lpRemoteName+2); 
         if(UserCount>=20)UserCount=0; 
        } 
       }       
       DWORD   a=lpBuffer[i].dwDisplayType,c=lpBuffer[i].dwUsage;    //RESOURCEUSAGE_CONTAINER   ==   (lpBuffer[i].dwUsage   &   RESOURCEUSAGE_CONTAINER) 
       //上面的条件枚举所有的网络资源 
       if(a==6||a&RESOURCEDISPLAYTYPE_DOMAIN==RESOURCEDISPLAYTYPE_DOMAIN||c&RESOURCEUSAGE_CONTAINER==RESOURCEUSAGE_CONTAINER) 
       {
        if(!Enumerate(&lpBuffer[i])) 
        { 
         return   FALSE; 
        } 
        //strcpy((char   *)User[UserCount++].UserName,lpBuffer[i].lpRemoteName+2); 
        //if(UserCount>=20)UserCount=0; 
       }
      } 
     }   
     else   if(dwResult   !=   ERROR_NO_MORE_ITEMS)   
     { 
      return   FALSE; 
     }  if(lpBuffer) GlobalFree((HGLOBAL)   lpBuffer)   ; 
     WNetCloseEnum(hEnum)   ;  return   TRUE; 
    }
      

  2.   

    http://zhidao.baidu.com/question/180841843.html
      

  3.   

    不要只管复制 粘贴好不好,你们都试了吗,先不说别的DimInfo变量明显没定义嘛,我去
      

  4.   

    You do not require any application program interface to access the domain names of the users which are logged in. If you are using an Windows NT operating system, the domain name can be accessed by accessing the registry key. To access the domain name access the following entry "DefaultDomainName" at the location 
    Quote:
    "HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"