C#中WNetAddConnection2A的使用


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
 
namespace NetConnect{
     public  partial  class NetWareFileCopy : Form
    {
        
        public NetWareFileCopy()
        {
            InitializeComponent();
        }

         private  void btNetCopy_Click( object sender, EventArgs e)
        {
            NetWorkConnection();
        }

         #region Define NetWare Connect Class

         public  enum ERROR_ID
        {
            ERROR_SUCCESS =  0,   //  Success
            ERROR_BUSY =  170,
            ERROR_MORE_DATA =  234,
            ERROR_NO_BROWSER_SERVERS_FOUND =  6118,
            ERROR_INVALID_LEVEL =  124,
            ERROR_ACCESS_DENIED =  5,
            ERROR_INVALID_PASSWORD =  86,
            ERROR_INVALID_PARAMETER =  87,
            ERROR_BAD_DEV_TYPE =  66,
            ERROR_NOT_ENOUGH_MEMORY =  8,
            ERROR_NETWORK_BUSY =  54,
            ERROR_BAD_NETPATH =  53,
            ERROR_NO_NETWORK =  1222,
            ERROR_INVALID_HANDLE_STATE =  1609,
            ERROR_EXTENDED_ERROR =  1208,
            ERROR_DEVICE_ALREADY_REMEMBERED =  1202,
            ERROR_NO_NET_OR_BAD_PATH =  1203,
            ERROR_SESSION_CREDENTIAL_CONFLICT =  1219
        }

         public  enum RESOURCE_SCOPE
        {
            RESOURCE_CONNECTED =  1,
            RESOURCE_GLOBALNET =  2,
            RESOURCE_REMEMBERED =  3,
            RESOURCE_RECENT =  4,
            RESOURCE_CONTEXT =  5
        }

         public  enum RESOURCE_TYPE
        {
            RESOURCETYPE_ANY =  0,
            RESOURCETYPE_DISK =  1,
            RESOURCETYPE_PRINT =  2,
            RESOURCETYPE_RESERVED =  8,
        }

         public  enum RESOURCE_USAGE
        {
            RESOURCEUSAGE_CONNECTABLE =  1,
            RESOURCEUSAGE_CONTAINER =  2,
            RESOURCEUSAGE_NOLOCALDEVICE =  4,
            RESOURCEUSAGE_SIBLING =  8,
            RESOURCEUSAGE_ATTACHED =  16,
            RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED),
        }

         public  enum RESOURCE_DISPLAYTYPE
        {
            RESOURCEDISPLAYTYPE_GENERIC =  0,
            RESOURCEDISPLAYTYPE_DOMAIN =  1,
            RESOURCEDISPLAYTYPE_SERVER =  2,
            RESOURCEDISPLAYTYPE_SHARE =  3,
            RESOURCEDISPLAYTYPE_FILE =  4,
            RESOURCEDISPLAYTYPE_GROUP =  5,
            RESOURCEDISPLAYTYPE_NETWORK =  6,
            RESOURCEDISPLAYTYPE_ROOT =  7,
            RESOURCEDISPLAYTYPE_SHAREADMIN =  8,
            RESOURCEDISPLAYTYPE_DIRECTORY =  9,
            RESOURCEDISPLAYTYPE_TREE =  10,
            RESOURCEDISPLAYTYPE_NDSCONTAINER =  11
        }

        [StructLayout(LayoutKind.Sequential)]
         public  struct NETRESOURCE
        {
             public RESOURCE_SCOPE dwScope;
             public RESOURCE_TYPE dwType;
             public RESOURCE_DISPLAYTYPE dwDisplayType;
             public RESOURCE_USAGE dwUsage;

            [MarshalAs(UnmanagedType.LPStr)]
             public  string lpLocalName;

            [MarshalAs(UnmanagedType.LPStr)]
             public  string lpRemoteName;

            [MarshalAs(UnmanagedType.LPStr)]
             public  string lpComment;

            [MarshalAs(UnmanagedType.LPStr)]
             public  string lpProvider;
        }

         public  class NetworkConnection
        {

            [DllImport( " mpr.dll ")]
             public  static  extern  int WNetAddConnection2A(NETRESOURCE[] lpNetResource,  string lpPassword,  string lpUserName,  int dwFlags);

            [DllImport( " mpr.dll ")]
             public  static  extern  int WNetCancelConnection2A( string sharename,  int dwFlags,  int fForce);


             public  static  int Connect( string remotePath,  string localPath,  string username,  string password)
            {
                NETRESOURCE[] share_driver =  new NETRESOURCE[ 1];
                share_driver[ 0].dwScope = RESOURCE_SCOPE.RESOURCE_GLOBALNET;
                share_driver[ 0].dwType = RESOURCE_TYPE.RESOURCETYPE_DISK;
                share_driver[ 0].dwDisplayType = RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_SHARE;
                share_driver[ 0].dwUsage = RESOURCE_USAGE.RESOURCEUSAGE_CONNECTABLE;
                share_driver[ 0].lpLocalName = localPath;
                share_driver[ 0].lpRemoteName = remotePath;

                Disconnect(localPath);
                 int ret = WNetAddConnection2A(share_driver, password, username,  1);

                 return ret;
            }

             public  static  int Disconnect( string localpath)
            {
                 return WNetCancelConnection2A(localpath,  11);
            }

        }

         #endregion

         // 調用:
         public  static  void NetWorkConnection()
        {
                 string localpath =  "Z:";
                 string serverPath =  @" \\10.0.0.1\FileShared ";
                 string loginUser =  " userid ";
                 string loginPassword =  " password ";

                 int status = NetworkConnection.Connect(serverPath, localpath, loginUser, loginPassword);
                 if (status == ( int)ERROR_ID.ERROR_SUCCESS)
                {
                     //  連接成功,在服務器端創建一文件,並寫入一字串 , 
                    FileStream fs =  new FileStream(localpath +  @" //ConnectSuccess.txt ", FileMode.OpenOrCreate);
                     using (StreamWriter stream =  new StreamWriter(fs))
                    {
                        stream.WriteLine( " 網絡連接成功 ");
                        stream.Flush();
                        stream.Close();
                    }
                    fs.Close();
                }
                 else
                {
                    // 連接失敗
                    Console.WriteLine(status);
                }
                // 斷開連接
                NetworkConnection.Disconnect(localpath);
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM