主页 > 知识库 > asp.net访问网络路径方法(模拟用户登录)

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

热门标签:浦发电话机器人提醒还款 昆明语音电销机器人价格 电销语音机器人型号参数 柳州电销机器人公司 太原400电话上门办理 腾讯地图标注手机 百度地图怎样做地图标注 400电话如何申请取消 征途美甲店地图标注

核心代码:

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");
}
您可能感兴趣的文章:
  • asp.net(c#) RSS功能实现代码
  • asp.net下URL网址重写成.html格式、RSS、OPML的知识总结
  • 用 Asp.Net 建立一个在线 RSS 新闻聚合器的方法
  • 一个ASP.NET的MYSQL的数据库操作类自己封装的
  • asp.net截屏功能实现截取web页面
  • Asp.net中将Word文件转换成HTML的方法
  • ASP.NET自动为URL加上超链接的代码
  • 服务器安全狗导致ASP.NET网站运行出错的一个案例
  • Asp.Net中的字符串和HTML十进制编码转换实现代码
  • ASP.NET读取RSS的方法

标签:白山 兰州 新疆 江苏 天门 阳泉 张家界 德阳

巨人网络通讯声明:本文标题《asp.net访问网络路径方法(模拟用户登录)》,本文关键词  asp.net,访问,网络,路径,方法,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《asp.net访问网络路径方法(模拟用户登录)》相关的同类信息!
  • 本页收集关于asp.net访问网络路径方法(模拟用户登录)的相关信息资讯供网民参考!
  • 推荐文章