2015-09-28 2 views
0

Я пытаюсь скопировать файл на подключенный сетевой диск, но всегда получаю сообщение «Не удалось найти часть пути ...». Я пробовал различные сетевые диски, так что я мог исключить верительные проблемы (это ни работает с приводом connexcted с другими учетными данными, ни с моим обычным пользователем)Скопируйте файл для сопоставленного сетевого диска с помощью FileInfo.CopyTo

try 
    { 
    fi.CopyTo(SystemReg.TargetPath + fi.Name); 
    } 
    catch (Exception e) 
    { 
     SystemReg.Log.AppendLine("Copy failed! " + Environment.NewLine + e.Message); 
    } 

SystemReg.TargetPath считывается из файла XML. Если я использую локальный путь, например D:\temp\, он работает отлично, но, например, X:\temp\ с X в качестве отображаемого диска.

Я также пытался запустить свою программу в пакетном файле с использованием «net use ...» перед тем, как позвонить в свою программу, и он также не работает.

+0

Имен дисков находятся в области видимости на вашу машину. Привод может иметь полное другое имя на любой другой машине. Используйте имена машин. '\\ MACHINE \ folder $' – Marco

+0

Я все еще нахожу это странным. * Вы пытаетесь получить доступ к диску, который вы сопоставили на одном компьютере с другого компьютера, на котором он не отображается? Это, конечно же, не сработает. Но я предполагаю, что вы на одном компьютере, диск сопоставлен, у вас есть разрешения. Вы можете копировать вручную (используя проводник). Читая документы 'FileInfo.CopyTo()' (https://msdn.microsoft.com/en-us/library/f0e105zt%28v=vs.110%29.aspx), я прочитал, что вызывается «UnauthorizedAccessException», если «файл перемещается на другой диск». Это правда? Зачем? Почему это будет работать, если вместо этого вместо имени машины? –

ответ

1

Вы используете вместо адреса дисковода компьютерный адрес.

Например, если адрес вашего компьютера является 192.168.0.200, который держит общую папку temp\, то ваш полный путь \\192.168.0.200\temp\

+0

Спасибо, это работает! :) – Azrael

Смежные вопросы