zoukankan      html  css  js  c++  java
  • C#中Remote文件复制简例子

    Class Program

    {

        Void Main(){

        CopyFileToEDIServer("C:LogsNIS_20160930.log")

    }

    private void CopyFileToEDIServer(string path)
    {
    RemoteInfo remote = new RemoteInfo();
    //Remote Server IPAddress
    remote.RemoteIP = "192.168.131.133";
    //Remote Server User
    remote.RemoteUser = "administrator";
    //Remote Server Password
    remote.RemotePwd = "S3300859!";
    //Remote Server Share Folder Full Name
    remote.ShareName = @"\192.168.131.133pdf";
    string destinFile = remote.ShareName + FileUpload1.FileName;


    using (IdentityScope c = new IdentityScope(remote.RemoteIP, remote.RemoteUser, remote.RemotePwd))
    {
    System.IO.File.Copy(path, destinFile);
    }

    }

    }

    public class RemoteInfo
    {
    public string RemoteIP;
    public string RemotePwd;
    public string RemoteUser;
    public string ShareName;
    public string srcFileName;

    public RemoteInfo();
    }


    /// <summary>
    /// IdentityScope
    /// </summary>
    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;

    private bool disposed;

    public IdentityScope(string sDomain, string sUsername, 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);
    }
    }

    Love it, and you live without it
  • 相关阅读:
    chrome webkitappearance
    图片占用内存
    javascript性能优化repaint和reflow
    vim 系统剪切板
    CSS选择符的命名(转载)
    relative 内部 margin
    中国软件企业
    dom元素排序
    shell
    tips for asm
  • 原文地址:https://www.cnblogs.com/tomclock/p/6292608.html
Copyright © 2011-2022 走看看