Ошибка входа в C# Win Form
Я пытаюсь загрузить файл с моего компьютера на удаленный сервер с помощью формы win и получаю следующую ошибку: Ошибка входа: неизвестное имя пользователя или неверный пароль. На моем компьютере я использую пользователя моего домена и для загрузки файла локального пользователя удаленного сервера
Я обнаружил, что мне нужно выдать себя за моего пользователя, но я так и не понял, как имитировать NetworkCredential.
Это мой код:
if (tbUsername.Text != string.Empty && tbPassword.Text != string.Empty && userSelectedFilePath != string.Empty)
{
try
{
using (WindowsIdentity.GetCurrent().Impersonate())
{
WebClient client = new WebClient();
NetworkCredential nc = new NetworkCredential("\\\\" + targetServer.Host + "\\" + tbUsername.ToString(), tbPassword.ToString());
client.Credentials = nc;
client.UploadFile(targetServer, filepath);
MessageBox.Show("the file was successfully uploaded", "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("One of the fields is empty", "Fields Empty", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
2 ответа
Я переписал свой раздел кода, и теперь он работает нормально. Теперь это выглядит так:
IntPtr admin_token = default(IntPtr);
WindowsIdentity wid_current = WindowsIdentity.GetCurrent();
WindowsIdentity wid_admin = null;
WindowsImpersonationContext wic = null;
if ((LogonUser(tbUsername.Text, targetServer.Host, tbPassword.Text, 9, 0, ref admin_token)) != 0 || (LogonUser(tbUsername2.Text, targetServer.Host, tbPassword2.Text, 9, 0, ref admin_token)) != 0)
{
wid_admin = new WindowsIdentity(admin_token);
wic = wid_admin.Impersonate();
}
Выполните следующие шаги:
Откройте "Панель управления"
Выберите "Администрирование"
Откройте "Локальная политика безопасности"
На левой панели перейдите к "Настройки безопасности" => "Локальные политики" => "Параметры безопасности"
На правой панели найдите "Доступ к сети: модель общего доступа и безопасности для локальных учетных записей".
Дважды щелкните по нему, чтобы изменить
Установите "Классический - локальные пользователи аутентифицируются как сами"