• .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", "登录服务器密码"))
      {
                   //连接服务器后,按正常的操作来做你想要的操作!               
      }
    讓眾人的薪枝構起這團熱情的火焰
  • 相关阅读:
    day10 文件内指针移动 小练习 函数的基本使用 函数定义与调用的各三种形式 函数返回值 函数参数的使用
    day09 文件基本操作 上下文管理 文件的打开模式 文件修改的两种模式 今日作业
    day07 列表类型 练习题 元祖类型 元祖vs列表 字典类型 集合类型
    java笔试之参数解析(正则匹配)
    java笔试之提取不重复的整数
    java笔试之自守数
    java笔试之尼科彻斯定理
    java笔试之简单密码
    java笔试之求最大连续bit数
    java笔试之放苹果
  • 原文地址:https://www.cnblogs.com/valeb/p/4025671.html
Copyright © 2020-2023  润新知