Reem Moh Ответов: 2

Копирование файла с ПК на сервер с аутентификацией


хотите скопировать файл с ПК на сервер < имя пользователя, пароль>,
когда я написал следующий код и запустил его, было выброшено исключение "формат данного пути не поддерживается", любая помощь
if (File.Exists(SrcFileName))
{
    DestFileName = "\\administrator:123456@10.10.2.24\\d$\\document\\documents\\photo$\\testcopy.bmp";
    DestFileName = "\\\\10.10.2.24/administrator:123456\\d$\\document\\documents\\photo$\\testcopy.bmp";
    if (File.Exists(DestFileName))
        MessageBox.Show("already exists in destination");
    else
        File.Copy(SrcFileName, DestFileName, true);
}

2 Ответов

Рейтинг:
5

Kim Togo

Вы должны выдать себя за пользователя, прежде чем File.Copy. Регистрация статьи Небольшой класс C# для олицетворения пользователя[^]

using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
  File.Copy(...) 
}


Espen Harlinn

Хорошая ссылка, моя 5

Kim Togo

Спасибо

Reem Moh

Я попробовал этот код ,он работает
Спасибо

Kim Togo

Отлично! :-)

Reem Moh

"ошибка входа в систему неизвестное имя пользователя или неверный пароль" ошибка msg!!!
любая помощь

Kim Togo

Вы выяснили, в чем была ошибка ?

MrAbdoz

та же проблема

Member 13398184

Это все еще не работает. Показывается как отказано в доступе. Пожалуйста, предложите любую альтернативу.

Рейтинг:
14

Yvan Rodrigues

Вы не можете подключиться к сетевому диску, выполнив аутентификацию таким образом. Кроме того, нет класса .NET, который бы это приспособил.

У вас есть два варианта: вызвать Win32 API с помощью interop или создать команду "net use" с помощью интерпретатора команд.

Эта статья[^] показывает, как сопоставить диск с помощью interop. Вам не нужна сложность всего этого проекта, но сканирование исходного кода покажет вам основные шаги.

Обратите внимание, что на самом деле вам не нужно сопоставлять букву диска, чтобы сделать это, вы можете просто использовать этот метод для подключения к удаленному общему ресурсу без его сопоставления. Как только вы это сделаете, вы можете вызвать файл.Copy () не пытаясь внедрить учетные данные.


Espen Harlinn

Честный ответ, мой 5-й

Kim Togo

Хороший ответ, мой 5

Reem Moh

Спасибо