2012-04-09 3 views
1

Я написал небольшой пакетный файл, который копирует exe из решения в папку system32.Выполнение пакетного файла из приложения Windows Forms

copy "blah.exe" "%systemroot%/System32" 

Пакетный файл работает отлично и копирует ех, если RAN с рабочим стола двойным clikcing (помещается ех на рабочем столе, а)

Однако я пытался делать, что с окнами приложений:

(EXE-файл и bat-файл -> Свойства -> Выход для копирования всегда) Окно cmd появляется, но файл .exe отсутствует в целевом каталоге. Что мне здесь не хватает?

+0

Почему вы ожидаете 'blah.exe' быть в папке вывода? – Oded

+0

Беспокойство с system32 - плохая идея ... в более поздней версии Windows есть несколько мер безопасности (среди других UAC), чтобы защитить от этого ... что именно вы пытаетесь сделать? – Yahia

+0

@Yahia: Попытка скопировать служебную программу sysinternal в System32 для доступа к ней из командной строки – user1240679

ответ

0

в вашем групповом файле измените путь к этой конкретной папке, где у вас есть blah.exe, перейдите на конкретный диск, а затем в определенные папки, укажите, что ваша исходная папка - C: \ test, затем введите cd \ test в пакетном файле, это должно быть что-то вроде:

C: 
cd\test 
copy "blah.exe" "%systemroot%/System32" 

или использования копии с указанием полного пути, например

copy "C:\test\blah.exe" "%systemroot%/System32" 

EDIT: Для копирования с помощью CMD попробовать:

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new  System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = "/C copy /b blah.exe %systemroot%/System32"; 
process.StartInfo = startInfo; 
process.Start(); 

Edit 2: Или для пакетного файла

System.Diagnostics.Process.Start("cmd", "/c sample.bat"); 
+0

У меня есть exe и командный файл в той же папке. Я попробовал это, поставив как «пакетный», так и «exe» на рабочий стол, и просто выполнив вышеуказанный командный файл, который отлично работает. В этом случае мне не нужно было менять исходный каталог на 'cd Users/someuser/Desktop'. Ввод полного пути в пакетный файл здесь может работать, но когда я буду развертывать проект, путь к этому 'cd' в пакетном файле изменится, и в этом случае ничего не произойдет. – user1240679

+0

Если я запускаю командный файл непосредственно из папки вывода bin/debug, он все равно работает, и exe копируется в 'System32'. Просто это не работает из 'Process.Start' – user1240679

+0

@ user1240679, просто проверьте отредактированный ответ, также проверьте этот вопрос http://stackoverflow.com/questions/1469764/c-sharp-run-command-prompt- команды – Habib

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