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");}

php技术asp.net访问网络路径方法(模拟用户登录),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。