Windows的计算机管理里面有这个功能。

解决方案 »

  1.   

    net share命令?还是 NetShareEnum 这个API的功能?根据level的值来设就可以了
      

  2.   

    net view \\127.0.0.1 >C:\1.txt
    笨办法就是用这个打印到txt里,再分析
      

  3.   

    1
    在98下可以读注册表SOFTWARE\Microsoft\Windows\CurrentVersion\Network\LanMan得到全部的网络共享。   
        
      在2000下,用户共享保存在SYSTEM\CurrentControlSet\Services\lanmanserver\Shares,因此也可以通过读取这一位置得到用户自己添加的共享文件夹2
    net share3
    unit   Unit1;   
        
      interface   
        
      uses   
          Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,   
          StdCtrls;   
        
      type   
          TNetResourceArray   =   ^TNetResource;       //网络资源类型的数组   
          TfrmMain   =   class(TForm)   
              GroupBox1:   TGroupBox;   
              StaticText1:   TStaticText;   
              Edit1:   TEdit;   
              GroupBox2:   TGroupBox;   
              Button2:   TButton;   
              Button1:   TButton;   
              GroupBox3:   TGroupBox;   
              memResult:   TMemo;   
              procedure   Button1Click(Sender:   TObject);   
              procedure   FormCreate(Sender:   TObject);   
              procedure   Button2Click(Sender:   TObject);   
          private   
              {   Private   declarations   }   
          public   
              {   Public   declarations   }   
          end;   
        
      var   
          frmMain:   TfrmMain;   
        
      implementation   
        
      {$R   *.DFM}   
        
      Function   GetUserResource(   UserName   :   string   ;   var   List   :   TStringList   )   :   Boolean;   
      Var   
          NetResource   :   TNetResource;   
          Buf   :   Pointer;   
          Count,BufSize,Res   :   DWord;   
          Ind   :   Integer;   
          lphEnum   :   THandle;   
          Temp   :   TNetResourceArray;   
      Begin   
          Result   :=   False;   
          List.Clear;   
          FillChar(NetResource,   SizeOf(NetResource),   0);     //初始化网络层次信息   
          NetResource.lpRemoteName   :=   @UserName[1];               //指定计算机名称   
          Res   :=   WNetOpenEnum(   RESOURCE_GLOBALNET,   RESOURCETYPE_ANY,RESOURCEUSAGE_CONNECTABLE,   @NetResource,lphEnum);   
            //获取指定计算机的网络资源句柄   
        If   Res   <>   NO_ERROR   Then   exit;                                       //执行失败   
          While   True   Do                                                                     //列举指定工作组的网络资源   
            Begin   
              Count   :=   $FFFFFFFF;                                                         //不限资源数目   
              BufSize   :=   8192;                                                             //缓冲区大小设置为8K   
              GetMem(Buf,   BufSize);                                       //申请内存,用于获取工作组信息   
              Res   :=   WNetEnumResource(lphEnum,   Count,   Pointer(Buf),   BufSize);   
                                                                  //获取指定计算机的网络资源名称   
          If   Res   =   ERROR_NO_MORE_ITEMS   Then   break;//资源列举完毕   
            If   (Res   <>   NO_ERROR)   then   Exit;                 //执行失败   
                Temp   :=   TNetResourceArray(Buf);   
              For   Ind   :=   0   to   Count   -   1   do   
                Begin   
                List.Add(Temp^.lpRemoteName);   
                Inc(Temp);   
              End;   
        End;   
        Res   :=   WNetCloseEnum(lphEnum);                     //关闭一次列举   
        If   Res   <>   NO_ERROR   Then   exit;                       //执行失败   
            Result   :=   True;   
            FreeMem(Buf);   
      End;         
      procedure   TfrmMain.Button1Click(Sender:   TObject);   
      var   
          List:TstringList;   
          i:integer;   
      begin   
      try   
          List:=TstringList.Create;   
          if   GetUserResource(edit1.text,List)   then   
              if   List.count=0   then                   //指定计算机下没有找到共享资源   
                  begin   
                      memResult.Lines.Add   (edit1.text+'下没有找到共享资源!');   
                  end   
            else   
                memResult.Lines.Add   (edit1.text+'下的所有共享资源如下:');   
                for   i:=0   to   List.Count-1     do   
                  begin   
                      memResult.lines.Add   (List.strings[i]);   
                  end;   
      finally   
            List:=TstringList.Create;           //如有异常则释放分配的资源   
      end;   
      end;   
        
        
      procedure   TfrmMain.FormCreate(Sender:   TObject);   
      begin   
          memResult.Lines.clear;   
      end;   
        
      procedure   TfrmMain.Button2Click(Sender:   TObject);   
      begin   
          frmMain.Close;   
      end;   
        
      end.