天天看点

C#访问远程共享加锁文件夹

第一种:

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace ManageCenter

{

    public  class ConnShareRes

    {

        private string userName;

        private string userPwd;

        private string shareResDictionary;

        //构造函数

        public ConnShareRes(string myUserName, string myUserPwd, string myShareResDictionary)

        {

            this.userName = myUserName;

            this.userPwd = myUserPwd;

            this.shareResDictionary = myShareResDictionary;

        }

        [StructLayout(LayoutKind.Sequential)]

        public struct NETRESOURCEA

            public int dwScope;

            public int dwType;

            public int dwDisplayType;

            public int dwUsage;

            [MarshalAs(UnmanagedType.LPStr)]

            public string lpLocalName;

            public string lpRemoteName;

            public string lpComment;

            public string lpProvider;

            public override String ToString()

            {

                String str = "LocalName: " + lpLocalName + " RemoteName: " + lpRemoteName + " Comment: " + lpComment + " lpProvider: " + lpProvider;

                return (str);

            }

        [DllImport("mpr.dll")]

        public static extern int WNetAddConnection2([MarshalAs(UnmanagedType.LPArray)] NETRESOURCEA[] lpNetResource, [MarshalAs(UnmanagedType.LPStr)] string lpPassword, [MarshalAs(UnmanagedType.LPStr)] string UserName, int dwFlags);

        public static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce);

        //开始远程连接

        public  bool RemoteConnect(bool bConnected)

            int res;

            NETRESOURCEA[] n = new NETRESOURCEA[1];

            n[0] = new NETRESOURCEA();

            n[0].dwType = 1;

            int dwFlags = 1; // CONNECT_INTERACTIVE;

            //n[0].lpLocalName = @"X:";

            n[0].lpLocalName = @"";

            n[0].lpRemoteName = shareResDictionary;

            //n[0].lpRemoteName = @"";

            n[0].lpProvider = null;

            //Console.WriteLine(n[0]);

            if (bConnected)

                res = WNetAddConnection2(n, userPwd, userName, dwFlags);

            else

                res=WNetCancelConnection2(shareResDictionary, 1, true);

            return (res == 0) ? true : false;

    }//class

}//namespace

第二种:

}

本文转自 梦在旅途 博客园博客,原文链接:http://www.cnblogs.com/zuowj/archive/2013/05/11/3072724.html ,如需转载请自行联系原作者