c# – 通过网络复制文件(需要身份验证)
发布时间:2020-12-15 07:51:10 所属栏目:百科 来源:网络整理
导读:是否有某种方法可以作为本地(非网络)用户进行身份验证,以便在.Net中通过网络复制文件? 净使用不是一种选择,我似乎无法让LogonUser工作. 有任何想法吗? [编辑]这是一些代码: public class UserImpersonator : IDisposable{ private WindowsImpersonationCo
是否有某种方法可以作为本地(非网络)用户进行身份验证,以便在.Net中通过网络复制文件?
净使用不是一种选择,我似乎无法让LogonUser工作. 有任何想法吗? [编辑]这是一些代码: public class UserImpersonator : IDisposable { private WindowsImpersonationContext _impersonationContext; private IntPtr _userHandle = IntPtr.Zero; [DllImport("advapi32.dll",SetLastError = true)] private static extern bool LogonUser( string lpszUsername,string lpszDomain,string lpszPassword,int dwLogonType,int dwLogonProvider,out IntPtr phToken ); [DllImport("kernel32.dll",SetLastError = true)] private static extern bool CloseHandle(IntPtr hHandle); public UserImpersonator(string username,string password) { LogonUser(username,"",password,(int)LogonType.LOGON32_LOGON_NETWORK,(int)LogonProvider.LOGON32_PROVIDER_DEFAULT,out _userHandle); _impersonationContext = WindowsIdentity.Impersonate(_userHandle); } public void Dispose() { CloseHandle(_userHandle); _impersonationContext.Undo(); } private enum LogonType : int { LOGON32_LOGON_INTERACTIVE = 2,LOGON32_LOGON_NETWORK = 3,LOGON32_LOGON_BATCH = 4,LOGON32_LOGON_SERVICE = 5,LOGON32_LOGON_UNLOCK = 7,LOGON32_LOGON_NETWORK_CLEARTEXT = 8,LOGON32_LOGON_NEW_CREDENTIALS = 9,} private enum LogonProvider { LOGON32_PROVIDER_DEFAULT = 0,} } 当我使用(新的UserImpersonator(用户名,密码))包装File.Copy操作时,我得到:
但是,如果我首先尝试连接到资源管理器中的共享(在请求时输入身份验证信息),则File.Copy可以正常工作.看来上面的代码根本没有做任何事情. 解决方法
您可以将WNetUseConnection与p / invokes一起使用.
看到这个帖子: Accessing a Shared File (UNC) From a Remote,Non-Trusted Domain With Credentials (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |