[英]Network IO using Credentials
Is it possible to move files from a network location that requires credentials to another network location that also requires credentials without mapping any drive. 是否可以将文件从需要凭据的网络位置移动到也需要凭据的另一个网络位置,而无需映射任何驱动器。 (ie: Without any use of P/Invoke)
(即:不使用P / Invoke)
Example: 例:
FileInfo fi = new FileInfo(@"\\SomeComputer\SomeDrive\SomeFolder\someFile.txt");
fi.MoveTo(@"\\AnotherComputer\AnotherDrive\AnotherFolder\AnotherFile.txt");
This works fine if the source and destination network drives are already mapped but if they are not It doesn't. 如果源网络驱动器和目标网络驱动器已映射,但未映射,则效果很好。
Try something like: 尝试类似:
[DllImport("advapi32.dll")]
private static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
/// <summary>
/// Used for logging on the domain
/// </summary>
public enum LogonProvider
{
/// <summary>
///
/// </summary>
LOGON32_PROVIDER_DEFAULT = 0,
/// <summary>
///
/// </summary>
LOGON32_PROVIDER_WINNT35 = 1,
/// <summary>
///
/// </summary>
LOGON32_PROVIDER_WINNT40 = 2,
/// <summary>
///
/// </summary>
LOGON32_PROVIDER_WINNT50 = 3
};
/// <summary>
/// Used for logging on across the domain
/// </summary>
public enum LogonType
{
/// <summary>
///
/// </summary>
LOGON32_LOGON_INTERACTIVE = 2,
/// <summary>
///
/// </summary>
LOGON32_LOGON_NETWORK = 3,
/// <summary>
///
/// </summary>
LOGON32_LOGON_BATCH = 4,
/// <summary>
///
/// </summary>
LOGON32_LOGON_SERVICE = 5,
/// <summary>
///
/// </summary>
LOGON32_LOGON_UNLOCK = 6,
/// <summary>
///
/// </summary>
LOGON32_LOGON_NETWORK_CLEARTEXT = 8,
/// <summary>
///
/// </summary>
LOGON32_LOGON_NEW_CREDENTIALS = 9
}
IntPtr token = new IntPtr();
LogonUser(<username>, <domain>, <password>, (int)LogonType.LOGON32_LOGON_NEW_CREDENTIALS, (int)LogonProvider.LOGON32_PROVIDER_WINNT50, ref token);
WindowsIdentity w = new WindowsIdentity(token);
w.Impersonate();
This impersonates a domain user, and can then be used to copy files. 这将模拟域用户,然后可用于复制文件。
No. You'd need to p/invoke something . 不。您需要p /调用某些东西 。 This functionality is not provided in the BCL.
BCL中未提供此功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.