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

2015-01-24信息快讯网

这篇文章主要介绍了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启用sphinx全文搜索的实现方法
php进行支付宝开发中return_url和notify_url的区别分析
腾讯微博提示missing parameter errorcode 102 错误的解决方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
php提示Warning:mysql_fetch_array() expects的解决方法
php中get_meta_tags()、CURL与user-agent用法分析
php使用pdo连接报错Connection failed SQLSTATE的解决方法
PHP缓存集成库phpFastCache用法
thinkphp文件处理类Dir.class.php的用法分析
Yii核心组件AssetManager原理分析
PHP中__FILE__、dirname与basename用法实例分析
ThinkPHP模板输出display用法分析
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
php中current、next与reset函数用法实例
PHP之sprintf函数用法详解
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
php中spl_autoload详解
跟我学Laravel之视图 & Response
php 模拟 asp.net webFrom 按钮提交事件实例
学习php中的正则表达式
php实现的DateDiff和DateAdd时间函数代码分享
PHP JSON出错:Cannot use object of type stdClass as array解决方法
php socket实现的聊天室代码分享
php与flash as3 socket通信传送文件实现代码
getJSON跨域SyntaxError问题分析
PHP+FastCGI+Nginx配置PHP运行环境
PHP的反射类ReflectionClass、ReflectionMethod使用实例
YII中assets的使用示例
VB中的RasEnumConnections函数返回632错误解决方法
PHP中unset,array_splice删除数组中元素的区别
PHP关于htmlspecialchars、strip_tags、addslashes的解释
ThinkPHP模板判断输出Defined标签用法详解
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
PHP微框架Dispatch简介
PHP命名空间(Namespace)简明教程
PHP中spl_autoload_register()和__autoload()区别分析
©2014-2024 dbsqp.com