您现在的位置是:网站首页> 编程资料编程资料
asp.net实现访问局域网共享目录下文件的解决方法_实用技巧_
2023-05-24
330人已围观
简介 asp.net实现访问局域网共享目录下文件的解决方法_实用技巧_
本文以实例讲述了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源程序编译为dll文件并调用的实现过程_实用技巧_
- ASP.NET入门之HTML服务器控件概述_实用技巧_
- ASP.NET 使用application与session对象写的简单聊天室程序_实用技巧_
- 让Sqlite脱离VC++ Runtime独立运行的方法_基础应用_
- asp.net用三层实现多条件检索示例_实用技巧_
- 在ASP.NET中支持断点续传下载大文件(ZT)源码_实用技巧_
- WebForm获取checkbox选中的值(几个简单的示例)_实用技巧_
- .NET中获取程序根目录的常用方法介绍_实用技巧_
- 设置ASP.NET页面的运行超时时间详细到单个页面及站点_实用技巧_
- .net 数据表格显示控件介绍_实用技巧_