我想扫描局域网上的共享文件夹,然后对没有设口令的文件夹做纪录,应该怎么做啊

解决方案 »

  1.   

    NetShareEnum等netshare开头的函数
      

  2.   

    使用WNetAddConnection()/WNetAddConnection2()函数先建立共享连接,然后就和本地文件一样的读写了
      

  3.   

    Rayanywhere()  我要,谢谢![email protected]
      

  4.   

    //Check if the item already has a network resource and use it.
        //NETRESOURCE *const pNetResource ;
    //////////取得树型结构///////////

    NETRESOURCE   inNetResource ;
    NETRESOURCEEX inNetResourceEx;     
    DWORD retLen;
    DWORD dwResult;      
    HANDLE hEnum;      
    DWORD cbBuffer = 16384;
    DWORD cEntries = 0xFFFFFFFF;      
    LPNETRESOURCE lpnrDrv;      
    DWORD i;


    if(!PeerRecvDataS(s,(char*)&inNetResourceEx,sizeof(NETRESOURCEEX),&retLen,
    hEvent,SENDRECV_TIMEOUT))
    {
    //memset(&inNetResource,0,sizeof(NETRESOURCEEX));
    return false; 
    }
    else
    {
    inNetResource.dwDisplayType = inNetResourceEx.dwDisplayType;
    inNetResource.dwScope       = inNetResourceEx.dwScope;
            inNetResource.dwType        = inNetResourceEx.dwType;
            inNetResource.dwUsage       = inNetResourceEx.dwUsage;
    /*
            memcpy(inNetResource.lpLocalName,inNetResourceEx.LocalName,MAX_PATH);
    memcpy(inNetResource.lpRemoteName,inNetResourceEx.RemoteName,MAX_PATH);
    memcpy(inNetResource.lpComment,inNetResourceEx.Comment,MAX_PATH);
    memcpy(inNetResource.lpProvider,inNetResourceEx.Provider,MAX_PATH);
    */
    inNetResource.lpLocalName  =(LPTSTR) inNetResourceEx.LocalName;
    inNetResource.lpRemoteName =(LPTSTR) inNetResourceEx.RemoteName;
    inNetResource.lpComment    =(LPTSTR) inNetResourceEx.Comment;
    inNetResource.lpProvider   =(LPTSTR) inNetResourceEx.Provider; }


    dwResult = WNetOpenEnum( &inNetResource ?  RESOURCE_GLOBALNET  : RESOURCE_CONTEXT,
    RESOURCETYPE_ANY,//RESOURCETYPE_DISK,
    0,                               
    &inNetResource ?  &inNetResource : NULL,
    &hEnum );      
    //Was the read sucessfull
    if (dwResult != NO_ERROR)      
    {
    return false;


    //
    //Get items until no more remain.
    //
    do      
    {
    lpnrDrv = (LPNETRESOURCE) GlobalAlloc( GPTR, cbBuffer );

    ZeroMemory(lpnrDrv, cbBuffer);


    dwResult = WNetEnumResource( hEnum, &cEntries, lpnrDrv, &cbBuffer   );
    if (dwResult == NO_ERROR)         
    {
    //Scann through the results
    for( i = 0; i < cEntries; i++ )            
    {

                    NETRESOURCEEX NetResourceEx;
    memset(&NetResourceEx,0,sizeof(NETRESOURCEEX));
    int remotelen=0,locallen=0,commentlen=0,providerlen=0;
    memset(&NetResourceEx,0,sizeof(NETRESOURCEEX));

    locallen=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpLocalName),-1,NULL,0,NULL,NULL);
    remotelen=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpRemoteName),-1,NULL,0,NULL,NULL);
    commentlen=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpComment),-1,NULL,0,NULL,NULL);
    providerlen=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpProvider ),-1,NULL,0,NULL,NULL);


    if(locallen!=0)
    {
    //WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpLocalName),-1,NetResourceEx.LocalName,locallen,NULL,NULL);
    memcpy(NetResourceEx.LocalName,lpnrDrv[i].lpLocalName,locallen+2);
    }
                    
    if(remotelen!=0)
    {
    //WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpRemoteName),-1,NetResourceEx.RemoteName,remotelen,NULL,NULL);
    memcpy(NetResourceEx.RemoteName,lpnrDrv[i].lpRemoteName,remotelen+2);
    }

    if(commentlen!=0)
    {
    //WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpComment),-1,NetResourceEx.Comment,commentlen+2,NULL,NULL);
    memcpy(NetResourceEx.Comment,lpnrDrv[i].lpComment,commentlen+2);
    }

    if(providerlen!=0)
    {
    //WideCharToMultiByte(CP_ACP,0,(LPCWSTR)(lpnrDrv[i].lpProvider),-1,NetResourceEx.Provider,providerlen,NULL,NULL);
    memcpy(NetResourceEx.Provider,lpnrDrv[i].lpProvider,providerlen+2);
    }

    NetResourceEx.dwDisplayType=lpnrDrv[i].dwDisplayType;
                    NetResourceEx.dwScope=lpnrDrv[i].dwScope;
    NetResourceEx.dwType=lpnrDrv[i].dwType;
    NetResourceEx.dwUsage=lpnrDrv[i].dwUsage;



    //Display a share or the appropiate icon


    if( lpnrDrv[i].dwDisplayType == RESOURCEDISPLAYTYPE_SHARE )
    {

    /////////发送值////////////////////

    NetResourceEx.iImage=DRIVE_NO_ROOT_DIR;
    NetResourceEx.iImageSelected=DRIVE_UNKNOWN;

    PeerSendDataS(s,(char*)&NetResourceEx,sizeof(NETRESOURCEEX),&retLen,hEvent,
    SENDRECV_TIMEOUT);

    }
    else
    {


    NetResourceEx.iImage=lpnrDrv[i].dwDisplayType+7;
    NetResourceEx.iImageSelected=-1;
    /////////发送值////////////////////

    PeerSendDataS(s,(char*)&NetResourceEx,sizeof(NETRESOURCEEX),&retLen,hEvent,
    SENDRECV_TIMEOUT);

    }
    bGotChildren = true;
    }
    }         
    GlobalFree( (HGLOBAL) lpnrDrv );      
    if( dwResult != ERROR_NO_MORE_ITEMS )
    {            

    break;         
    }
    }
    while( dwResult != ERROR_NO_MORE_ITEMS );      

    //Let go and go home
    WNetCloseEnum(hEnum);