Как выдать себя за пользователя за копию файла по сети, когда днс или нетбиос недоступны [дубликаты]
Возможный дубликат:
Доступ к защищенным паролем сетевым дискам в Windows в C #?
У меня есть ComputerA в Домене A, работающий как пользователь A, которому нужно скопировать очень большой файл в ComputerB в WorkgroupB с IP-адресом 192.168.10.2 на общий ресурс Windows, доступ к которому имеет только пользователь B.
Нет разрешения netbios или dns, поэтому компьютер должен быть привязан по IP
Я сначала попробовал
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
WindowsIdentity UserB = new WindowsIdentity("192.168.10.2\\UserB", "PasswordB"); //Execption
WindowsImpersonationContext contex = UserB.Impersonate()
File.Copy(@"d:\bigfile", @"\\192.168.10.2\bifgile");
contex.Undo();
но я получаюSystem.Security.SecurityException
«Предоставленное имя не является правильно сформированным именем учетной записи».
Так я попробовал
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
WindowsIdentity webinfinty = new WindowsIdentity("ComputerB\\UserB", "PasswordB"); //Execption
Но я получаю «Ошибка входа в систему: неизвестное имя пользователя или неверный пароль». ошибка вместо
тогда я попробовал
IntPtr token;
bool succeded = LogonUser("UserB", "192.168.10.2", "PasswordB", LogonTypes.Network, LogonProviders.Default, out token);
if (!succeded)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
WindowsImpersonationContext contex = WindowsIdentity.Impersonate(token);
(...)
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonTypes logonType,
LogonProviders logonProvider,
out IntPtr token);
ноLogonUser
возвращает false с ошибкой win32 «Ошибка входа: неизвестное имя пользователя или неверный пароль»
Я знаю, что с моим именем пользователя и паролем все в порядке, я вошел в систему computerB как этот пользователь.
Любые рекомендации