asp.net訪問網路路徑方法(類比使用者登入)_php技巧

來源:互聯網
上載者:User

核心代碼:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.