zoukankan      html  css  js  c++  java
  • 在域内跨服务器上传文件

    using System.Runtime.InteropServices;

     try
                    {
                        string userName = ConfigurationSettings.AppSettings["UpLoadUserName"];
                        string passWord = ConfigurationSettings.AppSettings["UpLoadPassWord"];
                        string domain = ConfigurationSettings.AppSettings["UpLoadDomain"];

                        using (IdentityScope c = new IdentityScope(userName, domain, passWord))
                        {
                            if (!System.IO.Directory.Exists(Path1))
                            {
                                System.IO.Directory.CreateDirectory(Path1);
                            }
                            Guid icoguid = Guid.NewGuid();
                            string icoName = icoguid + this.upload_img.PostedFile.FileName.Substring(this.upload_img.PostedFile.FileName.LastIndexOf('.'));
                            //string imgpath = Path + @"\" + icoName;
                            string imgpath1 = Path1 + icoName;
                            model.ApplicationIconUri = icoName;
                            this.upload_img.PostedFile.SaveAs(imgpath1);
                            icoid.Value = icoName;

                            //往第2台服务器上传
                            string imgpath2 = Path2 + icoName;
                            this.upload_img.PostedFile.SaveAs(imgpath1);
                        }
                    }
                    catch (Exception ex)
                    {
                        string aa = ex.Message;
                    }

     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 = 2;//域控中的需要用:Interactive = 2;   非域控中的需要用:Interactive = 9‘; 

            private bool disposed;

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

            }
            /*
           //调用;指定共享机器上的用户名,机器名,密码,(不在域控中的.)  
          using (IdentityScope c = new IdentityScope("userId", "192.168.0.1", "psw"))  
     
          {//在此就可以访问了.  
     
          string[] filelist = System.IO.Directory.GetDirectories(@"http://www.cnblogs.com/yinchengliang/admin/file://192.168.0.1/folderName");  
     
          } 
           */
        }

  • 相关阅读:
    php smarty使用..
    深圳面试!
    jQuery 源码分析..
    jQuery 使用技巧!!!
    TOMCAT 访问过程...
    准备使用Delphi调用WCF
    Delphi 中Format的字符串格式化使用说明(转载http://hi.baidu.com/test__123/blog/item/e3bba1599d717a2d2834f092.html)
    电脑启动程序自动启动
    判断输入字符串是否等效Int32位数字的两种方法
    vs2005 快捷键
  • 原文地址:https://www.cnblogs.com/yinchengliang/p/1980394.html
Copyright © 2011-2022 走看看