是否可以将文件从需要凭据的网络位置移动到也需要凭据的另一个网络位置,而无需映射任何驱动器。(即:不使用任何P/Invoke)
示例:
FileInfo fi = new FileInfo(@"\\SomeComputer\SomeDrive\SomeFolder\someFile.txt");
fi.MoveTo(@"\\AnotherComputer\AnotherDrive\AnotherFolder\AnotherFile.txt");如果源和目标网络驱动器已经映射,则可以正常工作;如果没有映射,则不会。
发布于 2010-05-26 22:00:26
尝试如下所示:
[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();这将模拟域用户,然后可用于复制文件。
发布于 2010-05-26 21:59:42
不是的。你需要p/调用一些东西。BCL中不提供此功能。
https://stackoverflow.com/questions/2913571
复制相似问题