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;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpRemoteName;
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpComment;
            [MarshalAs(UnmanagedType.LPStr)]
            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);
        [DllImport("mpr.dll")]
        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 ,如需转载请自行联系原作者

相关文章
|
8月前
|
C#
C# DataTable不能通过已删除的行访问该行的信息
C# DataTable不能通过已删除的行访问该行的信息
|
8月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
C#线程锁
C#线程锁
36 1
|
3月前
|
C# Windows
C#实现指南:将文件夹与exe合并为一个exe
C#实现指南:将文件夹与exe合并为一个exe
221 9
|
3月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
177 0
|
4月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
392 6
|
5月前
|
监控 安全 C#
使用C#如何监控选定文件夹中文件的变动情况?
使用C#如何监控选定文件夹中文件的变动情况?
131 19
|
5月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
|
8月前
|
JavaScript 前端开发 C#
C# webbrowser控件设置代理IP访问网站
C# webbrowser控件设置代理IP访问网站
427 5