zoukankan      html  css  js  c++  java
  • Asp.net 访问 共享目录

    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;//域控中的需要用:Interactive = 2
    
        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(@"\\192.168.0.1\folderName");
    
    }
  • 相关阅读:
    API学习
    某社区的常用免费图床 free image hosting websites,如何用Ruby与Perl启动浏览器, 打开指定网页
    Delphi7下SuperObject的JSON使用方法
    Delphi中使用ISuperObject解析Json数据
    Delphi 数据存储到oracle数据库TBLOB/TCLOB的方法 包括JSON串的解析
    Delphi7 JSON的读取和拼接
    SQL查看所有表大小的语句
    ora12541监听程序无法识别连接
    oracle新建用户类问题
    Delphi版本插值Lagrange
  • 原文地址:https://www.cnblogs.com/huigll/p/1993596.html
Copyright © 2011-2022 走看看