手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net实现访问局域网共享目录下文件的解决方法
asp.net实现访问局域网共享目录下文件的解决方法
摘要:本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示:usingSystem;usingSystem.Co...

本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示:

using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.IO; using System.Security.Principal; using System.Runtime.InteropServices; public partial class _Default : System.Web.UI.Page { public const int LOGON32_LOGON_INTERACTIVE = 2; public const int LOGON32_PROVIDER_DEFAULT = 0; WindowsImpersonationContext impersonationContext; [DllImport("advapi32.dll")] public static extern int LogonUserA(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken); [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool RevertToSelf(); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern bool CloseHandle(IntPtr handle); public void Page_Load(Object s, EventArgs e) { if (impersonateValidUser("lucas", "Workgroup", "lcas")) { string path = @"//zhehui001/lu"; foreach (string f in Directory.GetFiles(path)) { Response.Write(f); } undoImpersonation(); } else { //Your impersonation failed. Therefore, include a fail-safe mechanism here. } } private bool impersonateValidUser(String userName, String domain, String password) { WindowsIdentity tempWindowsIdentity; IntPtr token = IntPtr.Zero; IntPtr tokenDuplicate = IntPtr.Zero; if (RevertToSelf()) { if (LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0) { if (DuplicateToken(token, 2, ref tokenDuplicate) != 0) { tempWindowsIdentity = new WindowsIdentity(tokenDuplicate); impersonationContext = tempWindowsIdentity.Impersonate(); if (impersonationContext != null) { CloseHandle(token); CloseHandle(tokenDuplicate); return true; } } } } if (token != IntPtr.Zero) CloseHandle(token); if (tokenDuplicate != IntPtr.Zero) CloseHandle(tokenDuplicate); return false; } private void undoImpersonation() { impersonationContext.Undo(); } }

【asp.net实现访问局域网共享目录下文件的解决方法】相关文章:

Linq to SQL Delete时遇到问题的解决方法

asp.net下大文件上传知识整理

Asp.net获取服务器指定文件夹目录文件并提供下载的方法

ASP.NET页面按钮单击事件失效的解决方法

asp.net显示自己的网页图标的几种方式

asp.net下出现其中的组件“访问被拒绝”的解决方法

Asp.net FCKEditor 2.6.3 上传文件没有权限解决方法

asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法

asp.net 数据访问层基类

ASP.Net下载大文件的实现方法

精品推荐
分类导航