天天看点

#中使用网上邻居

using   System.Runtime.InteropServices;  

  public   class   CopyFileByNet  

  {  

  public   CopyFileByNet()  

  {  

  //  

  //   TODO:  

  //  

  }  

  //declare   WindowsNetwork   function  

  //cancel   net   mapped  

  [DllImport("mpr.dll")]  

  public   static   extern   WNetCancelConnection2ReturnCode   WNetCancelConnection2(  

  string   strResourceName,  

  ConnectionType   connectionType,  

  bool   bForce  

  );  

  //builde   net   mapped  

  [DllImport("mpr.dll")]  

  public   static   extern   WNetAddConnection2ReturnCode   WNetAddConnection2(  

  ref   NetResource   netResource,  

  string   strPassword,  

  string   strUserName,  

  ConnectionOption   dwFlags  

  );  

  }  

  //ConnectionType  

  public   enum   ConnectionType  

  {  

  CONNECT_DONT_UPDATE_PROFILE=0,  

  CONNECT_UPDATE_PROFILE=0x00000001,  

  CONNECT_UPDATE_RECENT=0x00000002,  

  CONNECT_TEMPORARY=0x00000004,  

  CONNECT_INTERACTIVE=0x00000008,  

  CONNECT_PROMPT=0x00000010,  

  CONNECT_NEED_DRIVE=0x00000020,  

  CONNECT_REFCOUNT=0x00000040,  

  CONNECT_REDIRECT=0x00000080,  

  CONNECT_LOCALDRIVE=0x00000100,  

  CONNECT_CURRENT_MEDIA=0x00000200,  

  CONNECT_DEFERRED=0x00000400,  

  CONNECT_RESERVED=unchecked((int)0xFF000000)  

  }  

  //WNetCancelConnection2  

  public   enum   WNetCancelConnection2ReturnCode  

  {  

  NO_ERROR=0,    

  ERROR_BAD_PROFILE=1206,    

  ERROR_CANNOT_OPEN_PROFILE=1205,    

  ERROR_DEVICE_IN_USE=2404,      

  ERROR_EXTENDED_ERROR=1208,    

  ERROR_NOT_CONNECTED=2250,    

  ERROR_OPEN_FILES=2401    

  }  

  //WNetAddConnection2  

  public   enum   WNetAddConnection2ReturnCode  

  {  

  NO_ERROR=0,    

  ERROR_ACCESS_DENIED=5,    

  ERROR_ALREADY_ASSIGNED=85,    

  ERROR_BAD_DEV_TYPE=66,    

  ERROR_BAD_DEVICE=1200,    

  ERROR_BAD_NET_NAME=67,    

  ERROR_BAD_PROFILE=1206,    

  ERROR_BAD_PROVIDER=1204,    

  ERROR_BUSY=170,    

  ERROR_CANCELLED=1223,    

  ERROR_CANNOT_OPEN_PROFILE=1205,  

  ERROR_DEVICE_ALREADY_REMEMBERED=1202,    

  ERROR_EXTENDED_ERROR=1208,    

  ERROR_INVALID_PASSWORD=86,    

  ERROR_NO_NET_OR_BAD_PATH=1203,    

  ERROR_NO_NETWORK=1222  

  }  

  //NETRESOURCE   struc:  

  public   struct   NetResource  

  {    

  public   ResourceEnumerationScope   dwScope;    

  public   ResourceType   dwType;    

  public   ResourceDisplayType   dwDisplayType;    

  public   ResourceUsage   dwUsage;    

  public   string   lpLocalName;    

  public   string   lpRemoteName;    

  public   string   lpComment;    

  public   string   lpProvider;    

  }  

  //ResourceType   enum:    

  public   enum   ResourceType  

  {  

  RESOURCETYPE_ANY=0x00000000,    

  RESOURCETYPE_DISK=0x00000001,    

  RESOURCETYPE_PRINT=0x00000002    

  }  

  //ResourceDisplayType   enum:    

  public   enum   ResourceDisplayType  

  {  

  RESOURCEDISPLAYTYPE_DOMAIN=0x00000001,   RESOURCEDISPLAYTYPE_SERVER=0x00000002,   RESOURCEDISPLAYTYPE_SHARE=0x00000003,   RESOURCEDISPLAYTYPE_GENERIC=0x00000000    

  }  

  //ResourceUsage   enum:    

  public   enum   ResourceUsage  

  {  

  RESOURCEUSAGE_CONNECTABLE=0x00000001,    

  RESOURCEUSAGE_CONTAINER=0x00000002    

  }  

  //ConnectionOption   enum:    

  public   enum   ConnectionOption  

  {  

  CONNECT_INTERACTIVE=0x00000008,    

  CONNECT_PROMPT=0x00000010,    

  CONNECT_REDIRECT=0x00000080,    

  CONNECT_UPDATE_PROFILE=0x00000001,    

  CONNECT_COMMANDLINE=0x00000800,  

  CONNECT_CMD_SAVECRED=0x00001000    

  }  

  这个是类

调用的时候:  

  NetResource   nr;  

  nr.dwDisplayType=ResourceDisplayType.RESOURCEDISPLAYTYPE_GENERIC;  

  nr.dwScope=ResourceEnumerationScope.RESOURCE_GLOBALNET;  

  nr.dwType=ResourceType.RESOURCETYPE_DISK;  

  nr.dwUsage=ResourceUsage.RESOURCEUSAGE_CONNECTABLE;  

  nr.lpComment="";  

  nr.lpLocalName="z:";  

  nr.lpProvider="";  

  nr.lpRemoteName=@"//192.168.1.126/XingDong";  

  if(CopyFileByNet.WNetAddConnection2(ref   nr,"密码","用户名",ConnectionOption.CONNECT_INTERACTIVE)==WNetAddConnection2ReturnCode.NO_ERROR)  

  {  

  MessageBox.Show("mapped   succeed");  

  }  

  else  

  {  

  MessageBox.Show("mapped   failure");  

  }  

  if(CopyFileByNet.WNetCancelConnection2("z:",0,true)==WNetCancelConnection2ReturnCode.NO_ERROR)  

  {  

  MessageBox.Show("cancel   succeed");  

  }  

  else  

  {  

  MessageBox.Show("cancel   error");  

  }  

  在映射后可以访问电脑A  

  转自:     lovefootball(蟑螂)    

  http://community.csdn.net/Expert/topic/4048/4048955.xml?temp=.4025995