1. public class IdentityScope : IDisposable
  2. {
  3. /// <summary>
  4. /// 登录一个新用户
  5. /// </summary>
  6. /// <param name="pszUsername"></param>
  7. /// <param name="pszDomain"></param>
  8. /// <param name="pszPassword"></param>
  9. /// <param name="dwLogonType"></param>
  10. /// <param name="dwLogonProvider"></param>
  11. /// <param name="phToken"></param>
  12. /// <returns></returns>
  13. [DllImport("advapi32.dll", SetLastError = true)]
  14. static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
  15.  
  16. //closes open handes returned by LogonUser
  17. [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
  18. extern static bool CloseHandle(IntPtr handle);
  19.  
  20. /// <summary>
  21. /// 让调用线程模拟一个用户
  22. /// </summary>
  23. /// <param name="hToken"></param>
  24. /// <returns></returns>
  25. [DllImport("Advapi32.DLL")]
  26. static extern bool ImpersonateLoggedOnUser(IntPtr hToken);
  27.  
  28. /// <summary>
  29. ///终止模拟的客户应用程序
  30. /// </summary>
  31. /// <returns></returns>
  32. [DllImport("Advapi32.DLL")]
  33. static extern bool RevertToSelf();
  34.  
  35. public IdentityScope(string Username, string Domain, string Password)
  36. {
  37. // initialize tokens
  38. IntPtr pExistingTokenHandle = new IntPtr();
  39. IntPtr pDuplicateTokenHandle = new IntPtr();
  40.  
  41. try
  42. {
  43. // get handle to token
  44. bool bImpersonated = LogonUser(Username, Domain, Password, LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle);
  45.  
  46. if (true == bImpersonated)
  47. {
  48. if (!ImpersonateLoggedOnUser(pExistingTokenHandle))
  49. {
  50. int nErrorCode = Marshal.GetLastWin32Error();
  51. throw new Exception("ImpersonateLoggedOnUser error;Code=" + nErrorCode);
  52. }
  53. }
  54. else
  55. {
  56. int nErrorCode = Marshal.GetLastWin32Error();
  57. throw new Exception("LogonUser error;Code=" + nErrorCode);
  58. }
  59. }
  60. finally
  61. {
  62. // close handle(s)
  63. if (pExistingTokenHandle != IntPtr.Zero)
  64. CloseHandle(pExistingTokenHandle);
  65. if (pDuplicateTokenHandle != IntPtr.Zero)
  66. CloseHandle(pDuplicateTokenHandle);
  67. }
  68. }
  69.  
  70. const int LOGON32_PROVIDER_DEFAULT = ;
  71.  
  72. const int LOGON32_LOGON_NEWCREDENTIALS = ;
  73.  
  74. private bool disposed;
  75.  
  76. public void Dispose()
  77. {
  78. Dispose(true);
  79. }
  80.  
  81. protected virtual void Dispose(bool disposing)
  82. {
  83. if (!disposed)
  84. {
  85. RevertToSelf();
  86. disposed = true;
  87. }
  88. }
  89. }
  1. using (IdentityScope iss = new IdentityScope("登录服务器用户名", "服务器IP", "登录服务器密码"))
  2. {
  3. //连接服务器后,按正常的操作来做你想要的操作!
  4. }

.Net , 请取服务器上的文件的更多相关文章

  1. 打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹

    打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问 在win98,winme,win2000,win2003下都能正常上传文件夹,但在winxp+sp2下同样的文件夹就可能出现问题 1. 打开 ...

  2. “打开ftp服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹"

    阿里云虚拟主机上传网站程序 问题场景:网页制作完成后,程序需上传至虚拟主机 注意事项: 1.Windows系统的主机请将全部网页文件直接上传到FTP根目录,即 / . 2. 如果网页文件较多,上传较慢 ...

  3. 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器

    引入: 在我们昨天架设好了Samba服务器上并且创建了一个 Samba 账户后,我们就迫不及待的想用JAVA去操作Samba服务器了,我们找到了一个框架叫 jcifs,可以高效的完成我们工作. 实践: ...

  4. 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...

  5. Sublime Text编辑远程Linux服务器上的文件

    sublime有个叫sftp的插件,可以通过它直接打开远程机器上的文件进行编辑,并在保存后直接同步到远程linux服务器上. 用Package Control安装插件 按下Ctrl+Shift+P调出 ...

  6. linux 将一个服务器上的文件或者文件夹复制到另一台服务器上

    使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹(目录)命令:  一.复制文件:  (1)将本地文件拷贝到远程  scp 文件名 用户名@计算机IP或者计 ...

  7. [转]linux将一个服务器上的文件或者文件夹复制到另一台服务器上

    本文转载自<linux 将一个服务器上的文件或者文件夹复制到另一台服务器上>,有时间实践一把 使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹 ...

  8. ASP.NET跨服务器上传文件的相关解决方案

    第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ...

  9. FTP服务器上删除文件夹失败

    很多人都知道:要删除FTP服务器上的文件夹时,必须确保文件夹下面没有其他文件,否则会删除失败! 可是,有些服务器考虑到安全等因素,通常会隐藏以点开始的文件名,例如“.test.txt”.于是,有的坏人 ...

随机推荐

  1. Myeclipse2016 部署webapp 至 tomcat 上出现 “There are no resources that can be added or removed from the server”

    对要部署的项目右键---Properties---Myeclipse---选中Dynamic Web Module 和 Java

  2. Easy UI

    首先去Easy UI官网下载离线包 导入要用的js模块 <!DOCTYPE html> <html> <head lang="en"> < ...

  3. putty自动登录

    如果没有公钥/密钥对,就用 PuTTYgen 创建一个,已经有了就可以忽略这一步.一个公钥/密钥对可以用在不同的服务器上,所以也不需要重复创建,关键要有足够强健的密码和安全的存放. 象先前一样输入帐户 ...

  4. 网站优化之Asp.Net篇<一>

    一>禁用viewstate. 二>禁用动态编译.访问一个Aspx文件时 会编译为一个新的类放在C盘Asp.net临时文件夹下.下次请求不会再编译,会把先前的编译结果返回. 任何对Asp.n ...

  5. Android Listview & Adapter

    Listview主要有两个职责: 将数据填充到布局 处理用户的选择点击等操作 列表的显示需要三个元素: ListVeiw 用来展示列表的View 适配器(Adapter) 用来把数据映射到ListVi ...

  6. android 拉伸图片

    Android拉伸图片用的是9.png格式的图片,这种图片可以指定图片的那一部分拉伸,那一部分显示内容,美工给的小图片也能有很好的显示效果. 原背景图片 可以看到原背景图片很小,即使在再长的文字,背景 ...

  7. hibernate 的 CascadeType 属性

    hibernateintegerstringfloatclassmerge @Entity @Table(name="orders")public class Order { // ...

  8. js 实现继承相关

    ☊ [要求]:实现一个Animal类, 和一个继承它的Dog类 ☛ [实现]: function Animal(name) { this.name = name; } Animal.prototype ...

  9. PAT (Basic Level) Practise:1037. 在霍格沃茨找零钱

    [题目链接] 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易 ...

  10. Centos Python2 升级到Python3

    1. 从Python官网到获取Python3的包, 切换到目录/usr/local/src #wget https://www.python.org/ftp/python/3.5.1/Python-3 ...