• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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(); 
      } 
    }
    您可能感兴趣的文章:
    • jsp和asp.net共享session值示例代码
    • ASP.NET中在不同的子域中共享Session的具体方法
    • ASP.NET+Web服务实现软件共享
    • ASP.NET访问共享文件夹的详细步骤
    上一篇:asp.net源程序编译为dll文件并调用的实现过程
    下一篇:Asp.Net中Cache操作类实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    asp.net实现访问局域网共享目录下文件的解决方法 asp.net,实现,访问,局域网,