Ошибка входа в 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();
                    }

Выполните следующие шаги:

Откройте "Панель управления"

Выберите "Администрирование"

Откройте "Локальная политика безопасности"

На левой панели перейдите к "Настройки безопасности" => "Локальные политики" => "Параметры безопасности"

На правой панели найдите "Доступ к сети: модель общего доступа и безопасности для локальных учетных записей".

Дважды щелкните по нему, чтобы изменить

Установите "Классический - локальные пользователи аутентифицируются как сами"

Другие вопросы по тегам