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
  • 相关阅读:
    Python 产生和验证IMEI Vevi
    Ubuntu常见问题及解决方案
    error LNK2019: 无法解析的外部符号 WinMain(vs2019)
    NVIDIA GPU 架构演进
    RFCN详解
    Visdom 使用教程
    传统特征提取方法总结
    模型转换、模型压缩、模型加速工具
    YoloV5实战
    React vscode 创建 react 项目流程
  • 原文地址:https://www.cnblogs.com/tomclock/p/6292608.html
Copyright © 2011-2022 走看看