Вопрос

For getting the share folder name i have been used the following code , here i am able to get the folder names . But the problem what i am facing is along with the share folder created by the user it gives some extra folder also , i don't know how to prevent the programe to hide that unnecessary folder names . Like in my case i am getting "cc_views"(used for clearcase) and "Users" folders , which i want to remove from my folder lists .

I wrote the following codes , Please help in getting the correct output .

 #ifndef UNICODE
    #define UNICODE
    #endif
    #include <windows.h>
    #include <stdio.h>
    #include <lm.h>
    #pragma comment(lib, "Netapi32.lib")
    #pragma comment(lib, "Advapi32.lib")

    void wmain( int argc, TCHAR *lpszArgv[ ])
    {
       PSHARE_INFO_502 BufPtr,p;
       NET_API_STATUS res;
       LPTSTR   lpszServer = NULL;
       DWORD er=0,tr=0,resume=0, i;

       switch(argc)
       {
       case 2:
          lpszServer = lpszArgv[1];
          break;
       default:
          printf("Usage: NetShareEnum <servername>\n");
          //return;
       }
       //
       // Print a report header.
       //
       printf("ShareFolderName\n");
   printf("---------------\n");
       //
       // Call the NetShareEnum function; specify level 502.
       //
       do // begin do
       {
          res = NetShareEnum ((LPSTR)lpszServer, 502, (LPBYTE *) &BufPtr, MAX_PREFERRED_LENGTH, &er, &tr, &resume);
          //
          // If the call succeeds,
          //
          if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
          {
             p=BufPtr;
             //
             // Loop through the entries;
             //  print retrieved data.
             //
             for(i=1;i<=er;i++)
             {
                 LPCTSTR str = (LPCTSTR)p->shi502_remark;
                 if(!(lstrcmpi(str,L"Remote admin")==0 ||lstrcmpi(str, L"Remote IPC")==0 || lstrcmpi(str,L"Default share")==0)) //Help in removing from extra folder based on the remarks
                    printf("%-20S%\n",p->shi502_netname);
                p++;
             }
             //
             // Free the allocated buffer.
             //
             NetApiBufferFree(BufPtr);
          }
          else 
             printf("Error: %ld\n",res);
       }
       // Continue to call NetShareEnum while 
       //  there are more entries. 
       // 
       while (res==ERROR_MORE_DATA); // end do
       return;
    }
Это было полезно?

Решение

Just keep adding the values you want to exclude in your list here:

if(!(lstrcmpi(str,L"Remote admin")==0 ||
     lstrcmpi(str, L"Remote IPC")==0 || 
     lstrcmpi(str,L"Default share")==0 ||
     lstrcmpi(str,L"cc_views")==0 ||
     lstrcmpi(str,L"Users")==0))
       printf("%-20S%\n",p->shi502_netname);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top