.Net , 请取服务器上的文件

 public class IdentityScope : IDisposable
    {
        /// <summary>
        /// 登录一个新用户
        /// </summary>
        /// <param name="pszUsername"></param>
        /// <param name="pszDomain"></param>
        /// <param name="pszPassword"></param>
        /// <param name="dwLogonType"></param>
        /// <param name="dwLogonProvider"></param>
        /// <param name="phToken"></param>
        /// <returns></returns>
        [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);

        /// <summary>
        /// 让调用线程模拟一个用户
        /// </summary>
        /// <param name="hToken"></param>
        /// <returns></returns>
        [DllImport("Advapi32.DLL")]
        static extern bool ImpersonateLoggedOnUser(IntPtr hToken);

        /// <summary>
        ///终止模拟的客户应用程序
        /// </summary>
        /// <returns></returns>
        [DllImport("Advapi32.DLL")]
        static extern bool RevertToSelf();

        public IdentityScope(string Username, string Domain, string Password)
        {
            // initialize tokens
            IntPtr pExistingTokenHandle = new IntPtr(0);
            IntPtr pDuplicateTokenHandle = new IntPtr(0);

            try
            {
                // get handle to token
                bool bImpersonated = LogonUser(Username, Domain, Password, 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);
            }
        }

        const int LOGON32_PROVIDER_DEFAULT = 0;

        const int LOGON32_LOGON_NEWCREDENTIALS = 9;

        private bool disposed;

        public void Dispose()
        {
            Dispose(true);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                RevertToSelf();
                disposed = true;
            }
        }
    }   
  using (IdentityScope iss = new IdentityScope("登录服务器用户名", "服务器IP", "登录服务器密码"))
            {
               //连接服务器后,按正常的操作来做你想要的操作!
            }
时间: 2024-10-28 15:43:35

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

WPF中利用WebClient向服务器上传文件

转载:原文地址http://blog.csdn.net/wj1589300/article/details/9255631 WPF中利用WebClient向服务器上传文件 忽然接到一个任务,在WPF中上传文件至服务器~在网上搜了很多种方法,最终决定利用WebCient实现文件的上传工作,看似很简单的任务,却遇到了很多问题.先说一下我的探索步骤吧~ 一.选用WebClient.UploadFile方法 (String,String, String) [csharp] view plaincopyp

跨服务器上传文件方式

跨服务器上传文件的方式有很多,其中一种是使用在中间服务器上使用临时文件的方式进行保存后再发送到另一个服务器上,实现文件上传. 问题点:中间保存临时文件,还需要不定时的进行文件清理,比较麻烦 直接进行文件的转发,使用byte[]数组方式直接进行文件转发,然后,服务器根据传递的byte[]数组进行转文件方式,使用httpclient方式将byte[]数组发送到服务端,特别注意的点在于, 发送的时候使用"content-type" = "application/json"

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

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

web服务器上传文件过程

通过web服务器上传文件,需要提前准备好下面3步,然后才能通过第4步上传文件1.web服务器的配置 1.1 将代码src目录中的select.c文件的170行的REQUEST_TIMEOUT改为10*REQUEST_TIMEOUT 1.2 在buildroot中选中boa后保存编译,然后更新nfs_root中内容: 1.3 重启单板 1.4 配置/etc/boa/boa.conf文件 1.4.1 屏蔽掉Group nobody,增加Group 0 1.4.2 去掉Errorlog前的屏蔽 1.4

模拟php curl向远程服务器上传文件

test.php: <?php header('content-type:text/html;charset=utf8'); $ch = curl_init(); //加@符号curl就会把它当成是文件上传处理 $data = array('img'=>'@'. dirname(__FILE__).'/img/1.jpg'); curl_setopt($ch,CURLOPT_URL,"http://localhost:8088/curl/get_img.php"); cur

从ftp服务器上下载文件

从ftp服务器上下载文件 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. 那么怎样从ftp服务器上下载文件呢?具体操作如下: ftpget -u zyx -p 123456  192.168.1.156  /hello ftpget :指令

idea 内置tomcat jersey 跨服务器 上传文件报400错误

报错内容 com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status of 400 Bad Request 因为跨服务器上传文件,文件名中里面含有中文名称,所以报错,解决: 让文件服务器支持utf-8编码或者将文件名变成英文.(最好的就是根据时间加随机数 或者是UUID来命名) 简单版的jsersey上传 @RequestMapping("/fileupload3&

struts2之如何向服务器上传文件

转载请注明:http://blog.csdn.net/uniquewonderq 问题:在struts2框架下实现文件上传 方案:struts2提供了拦截器可以自动实现文件上传,并且该拦截器存在于defaultStack中,是每个action默认使用的.复用之前的案例. 步骤一:打开上传页面 在struts.xml中,配置打开上传页面的action,代码如下: </pre><pre name="code" class="html"><?

linux 将一个服务器上的文件或文件夹拷贝到另一个服务器上(转载)

复制文件或目录命令:  复制文件:  (1)将本地文件拷贝到远程  scp 文件名用户名@计算机IP或者计算机名称:远程路径 本地192.168.1.8客户端  scp /root/install.* [email protected]:/usr/local/src (2)从远程将文件拷回本地  scp 用户名@计算机IP或者计算机名称:文件名本地路径 本地192.168.1.8客户端取远程服务器12.11上的文件  scp [email protected]:/usr/local/src/*.