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

相关推荐

  • Asp.Net中的字符串和HTML十进制编码转换实现代码

    Asp.Net将字符串转为&#区码位编码,或者将&#区码位编码字符串转为对应的字符串内容. &#数字;这种编码其实就是将单个字符转为对应的区码位(数字),然后区码位前缀加上"&#",后缀加上";"组成,对于这种编码的字符串,浏览器会自动解析为对应的字符. Asp.Net字符串和&#编码转换源代码和测试代码如下: using System; using System.Text.RegularExpressions; public

  • 一个ASP.NET的MYSQL的数据库操作类自己封装的

    /** * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MySql.Data.MySqlClient; namespace Niunan.BYLW.Utility { /// <summary>对MYSQL数据库的操作类 /// /// </summary> public class MYSQLHelper { private MySqlConnection conn = null; private MyS

  • asp.net(c#) RSS功能实现代码

    可能还有很多未完善,但终归可以使用了,以后再慢慢改进!! 以下是我RSS界面的后台代码,给需要的朋友提供下我的经验: 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebCont

  • ASP.NET读取RSS的方法

    RSS对于网站有着很重要的用途,本文即以实例展示了ASP.NET读取RSS的方法,供大家参考借鉴,具体方法如下: 主要功能代码如下: /// <summary> /// 加载RSS /// </summary> /// <param name="RssUrl">RSS地址</param> /// <param name="RssCount">要提取的文章数量</param> /// <re

  • ASP.NET自动为URL加上超链接的代码

    作为一个程序员,在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进,这样才能不断地完善自己的作品.笔者在制作完软件商务网的论坛后,发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址.而笔者当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能转到相应的链接地址或发送电子邮件到相应的Email地址. 发现这个问题后,笔者即着手进

  • Asp.net中将Word文件转换成HTML的方法

    本文所述为一个Asp.net实现将Word转换为HTML的功能,其关键代码如下: //存放word文件的完整路径 string wordPath = Server.MapPath("/word/test.doc"); //存放html文件的完整路径 string htmlPath = Server.MapPath("/html/test.html"); //上传word文件, 由于只是做示例,在这里不多做文件类型.大小.格式以及是否存在的判断 FileUpload1

  • 服务器安全狗导致ASP.NET网站运行出错的一个案例

    字典中的关键字:"RegistryPermission"所添加的关键字:"RegistryPermission" 报错,因为服务器上安全狗对.net程序关键字过于苛刻引出报错. 今天碰到一个.net的报错,之前并没见过这种报错,也没有太多的详细信息."/"应用程序中的服务器错误. 字典中的关键字:"RegistryPermission"所添加的关键字:"RegistryPermission" 说明: 执行当

  • 用 Asp.Net 建立一个在线 RSS 新闻聚合器的方法

    随着办公室和家庭上网在线时间的延长,以及 Web 站点和可访问的互联网应用程序呈持续爆炸性增长,应用程序之间能数据共享变得越来越重要.在异构平台之间共享数据需要一种平台中立的数据格式,这种数据格式要求能易于通过标准的互联网协议来传输,而这正是XML的用武之地.因为XML文件本质上只是一个文本文件,其编码格式众所周知,而且现有的XML解析器能为所有主流编程语言所用,所以XML数据能被任何平台轻松使用. Web 网站聚合就是一种使用 XML 来共享数据的范例,在新闻站点和网志中经常可以看到.采用 W

  • asp.net下URL网址重写成.html格式、RSS、OPML的知识总结

    一.URL网址重写1.在MSDN中下载一个文件,将ActionlessForm.dll和URLRewriter.dll放到bin目录下.这是MSDN中关于URL重写的一篇文章里的地址.在 ASP.NET 中执行 URL 重写2.将web.config文件中添加下面的代码 <!-- 自定义配置节 --> <configSections>    <section name="RewriterConfig" type="URLRewriter.Conf

  • asp.net截屏功能实现截取web页面

    本文实例展示了asp.net截屏功能实现截取web页面的方法,代码简洁易懂,分享给大家供大家参考. 具体实现代码如下: using System.Drawing; //打开该页面 System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://localhost:56/Spacxxe.html"); System.Threading.Thread.Sleep(3000); //截屏 //创建并设置画布大小 Syste

随机推荐