asp.net访问网络路径方法(模拟用户登录)

 更新时间:2014年08月17日 10:22:06   投稿:mdxy-dxy  
这篇文章主要介绍了asp.net访问网络路径方法,其实就是模拟用户登录,需要的朋友可以参考下

核心代码:

public class IdentityScope : IDisposable
{
    // obtains user token
    [DllImport("advapi32.dll", SetLastError = true)]
    static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword,int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
    // closes open handes returned by LogonUser
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    extern static bool CloseHandle(IntPtr handle);

    [DllImport("Advapi32.DLL")]
    static extern bool ImpersonateLoggedOnUser(IntPtr hToken);
    [DllImport("Advapi32.DLL")]
    static extern bool RevertToSelf();
    const int LOGON32_PROVIDER_DEFAULT = 0;
    const int LOGON32_LOGON_NEWCREDENTIALS = 9;//域ò控?中D的?需è要a用?:Interactive = 2
    private bool disposed;
    /// <summary>
    /// 登?录?
    /// </summary>
    /// <param name="sUsername">用?户§名?</param>
    /// <param name="sDomain">域ò名?,?如?果?不?在ú域ò中D就í使1用?机ú器÷IP地?址·</param>
    /// <param name="sPassword">密ü码?</param>
    public IdentityScope(string sUsername, string sDomain, string sPassword)
    {
      // initialize tokens
      IntPtr pExistingTokenHandle = new IntPtr(0);
      IntPtr pDuplicateTokenHandle = new IntPtr(0);
      try
      {
        // get handle to token
        bool bImpersonated = LogonUser(sUsername, sDomain, sPassword,LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle);
        if (true == bImpersonated)
        {
          if (!ImpersonateLoggedOnUser(pExistingTokenHandle))
          {
            int nErrorCode = Marshal.GetLastWin32Error();
            throw new Exception("ImpersonateLoggedOnUser error;Code=" + nErrorCode);
          }
        }
        else
        {
          int nErrorCode = Marshal.GetLastWin32Error();
          throw new Exception("LogonUser error;Code=" + nErrorCode);
        }
      }
      finally
      {
        // close handle(s)
        if (pExistingTokenHandle != IntPtr.Zero)
          CloseHandle(pExistingTokenHandle);
        if (pDuplicateTokenHandle != IntPtr.Zero)
          CloseHandle(pDuplicateTokenHandle);
      }
    }
    protected virtual void Dispose(bool disposing)
    {
      if (!disposed)
      {
        RevertToSelf();
        disposed = true;
      }
    }
    public void Dispose()
    {
      Dispose(true);
    }
  }

第二个参数是域名,有域名的话写域名,没有域名写目标机器的IP就可以了

using (IdentityScope c = new IdentityScope("administrator", "192.168.0.1", "11111"))
{
 string[] filelist = System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName");
}

相关文章

  • litjson读取数据示例

    litjson读取数据示例

    这篇文章主要介绍了litjson读取数据示例,大家参考使用吧
    2014-01-01
  • .NET Core系列之MemoryCache 初识

    .NET Core系列之MemoryCache 初识

    Cache是一个绝大多数项目会用到的一个技术,这篇文章主要介绍了.NET Core系列之MemoryCache 初识,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • c#.net中const和readonly的区别

    c#.net中const和readonly的区别

    readonly修饰符用来表示只读,const用来表示不变常量。顾名思义,只读表示不能进行写操作;不变常量不能被修改。这两者到底有什么区别呢
    2013-09-09
  • .NET读写Excel工具Spire.Xls使用入门教程(1)

    .NET读写Excel工具Spire.Xls使用入门教程(1)

    这篇文章主要为大家详细介绍了.NET读写Excel工具Spire.Xls使用入门教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • asp.net中让Repeater和GridView支持DataPager分页

    asp.net中让Repeater和GridView支持DataPager分页

    .NET 3.5中的DataPager碉堡了,可惜只支持ListView。传统的GridView和Repeater都无法直接使用DataPager分页。但我们如果稍加改造,就可以让Repeater和GridView支持DataPager分页
    2012-02-02
  • win2003服务器.NET+IIS环境常见问题排障总结

    win2003服务器.NET+IIS环境常见问题排障总结

    在使用iis运行asp.net环境的时候,总是会或多或少的碰到各种各样的.net运行错误,这里特别从网络整理了下,方便需要的朋友。
    2011-08-08
  • ASP.NET预定义模板介绍

    ASP.NET预定义模板介绍

    在调用这些方法的时候,如果我们指定了一个具体的通过分部View定义的模板,或者对应的ModelMetadata的TemplateHint属性具有一个模板名称,会自动采用该模板来生成最终的HTML,需要了解这方面内容的朋友可以参考一下
    2015-10-10
  • 把js文件编译成dll供页面调用的方法

    把js文件编译成dll供页面调用的方法

    这篇文章主要介绍了把js文件编译成dll供页面调用的方法,需要的朋友可以参考下
    2014-08-08
  • .NET无侵入式对象池最详解决方案

    .NET无侵入式对象池最详解决方案

    Pooling是一个编译时对象池组件,它在编译时将指定类型的new操作替换为对象池操作,无需开发者手动编写对象池代码,提供了完全无侵入式的解决方案,适用于临时性能优化和老旧项目改造,本文给大家介绍.NET无侵入式对象池最详解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • 详解ASP.NET MVC 解析模板生成静态页(RazorEngine)

    详解ASP.NET MVC 解析模板生成静态页(RazorEngine)

    我们在很多项目开发中会常常用到页面静态化,本篇文章主要介绍了详解ASP.NET MVC 解析模板生成静态页(RazorEngine) ,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03

最新评论