zoukankan      html  css  js  c++  java
  • 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");
    }
  • 相关阅读:
    Spring MVC 程序首页的设置
    绿色版Tomcat 启动 + 停止 + 随系统自动启动
    Lazy Load, 延迟加载图片的 jQuery 插件
    ibatis参数传递小技巧
    SpringMVC接收页面表单参数-java-电脑编程网
    用 JS 点击左右按钮 使图片切换
    JS数组方法汇总 array数组元素的添加和删除
    关于jQuery UI 使用心得及技巧
    MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家
    JSTL c标签,fn标签,fmt标签
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/1867469.html
Copyright © 2011-2022 走看看