2011-01-21 3 views
3

Я хочу скопировать картинку в общую папку homegroup. я открыл cmd.exe через меню Пуск> Выполнить> cmd.exe и напечатал:Скопируйте файл на другой компьютер с помощью cmd в C#

copy C:\pic1.png \\SOMECOMP\Users\SOMEONE\Shared 

картина была скопирована хорошо. Однако, когда я пытаюсь сделать то же самое с C#, как и что:

System.Diagnostics.Process.Start(@"cmd.exe", @"/c start copy C:\pic1.png \\SOMECOMP\Users\SOMEONE\Shared"); 

я получаю следующее сообщение:

Доступ запрещен.

Как я могу это исправить?

P.S. - File.Copy выдает ту же ошибку. Для меня метод cmd выглядел более многообещающим.

+6

Есть ли причина, по которой вы используете 'cmd.exe', чтобы попытаться запустить команду, а не просто копировать файл напрямую с C#? http://msdn.microsoft.com/en-us/library/cc148994.aspx –

+1

Зачем использовать System.Diagnostics.Process для копирования файла, когда .NET предоставляет методы для копирования файлов? – David

+0

@ David Возможно, потому, что он действительно не знал, что File.Copy является частью .NET Framework? – Alex7575

ответ

5

Почему бы вам не использовать Process.Start для копирования файлов, когда есть File.Copy?

File.Copy(@"C:\pic1.png", @"\\SOMECOMP\Users\SOMEONE\Shared\pic1.png", true); 

Насколько сообщение об отказе доступа обеспокоен вы должны убедиться, что учетная запись выполнения вашей программы под управлением имеет права на запись в эту долю UNC, которые не могли бы быть в случае с приложениями ASP.NET или Windows, NT, которые работают под учетной записью с ограниченными правами.

+0

Да, хорошо, вы замечаете 'pic1.png' в конце аргумента пути dest? Также как насчет разрешений? –

+0

Как я уже сказал, вы должны предоставить разрешения на запись для учетной записи, на которой выполняется ваше приложение. Что это за приложение? Windows, ASP.NET, ...? –

+0

попробуйте это. Напишите приложение C# с помощью File.Copy. После его создания не запускайте его из среды IDE. Щелкните правой кнопкой мыши на исполняемом файле в каталоге Debug и запустите его как администратор. – xbonez

0

Вы, вероятно, нужно карту исходного каталога

& "net" "use" "$mapdrive" "$password" "/USER:$username" 
& "copy" $src "$dest" 
& "net" "use" $mapdrive "/delete" 

Но да, если вы можете использовать пространство имен System.IO.File, чтобы скопировать файл.

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