栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

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

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
    /// 
    /// 登?录?
    /// 
    /// 用?户§名?
    /// 域ò名?,?如?果?不?在ú域ò中D就í使1用?机ú器÷IP地?址·
    /// 密ü码?
    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.1folderName");
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/57049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号