2012-04-09 30 views
1

Ich habe eine kleine Batch-Datei geschrieben, die eine Exe aus der Lösung in den Ordner system32 kopiert.Ausführen einer Batch-Datei aus Windows Forms-Anwendung

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

Die Batch-Datei funktioniert gut und kopiert die exe wenn RAN vom Desktop durch einen Doppelklick clikcing (exe auf dem Desktop als auch platziert)

Allerdings habe ich versucht, das von von Windows-Anwendung zu tun:

(EXE-Datei und batfile -> Eigenschaften -> Ausgabe immer zu kopieren) Das Cmd-Fenster wird angezeigt, aber die .exe-Datei ist nicht im Zielverzeichnis vorhanden. Was fehlt mir hier?

+0

Warum Sie erwarten Sie 'blah.exe' im Ausgabeordner sein? – Oded

+0

Mit System32 herumzufummeln ist eine schlechte Idee ... die neuere Windows-Version hat mehrere Sicherheitsmaßnahmen (unter anderem UAC), um sich davor zu schützen ... was genau versuchen Sie zu tun? – Yahia

+0

@Yahia: Versucht, ein sysinternal Dienstprogramm zu System32 zu kopieren, um abel von der Befehlszeile – user1240679

Antwort

0

in Ihrer Batch-Datei ändern Sie den Pfad zu diesem bestimmten Ordner, in dem Sie blah.exe haben, wechseln Sie zu dem jeweiligen Laufwerk und dann zu bestimmten Ordner sagen Sie Ihren Quellordner ist C: \ test dann geben Sie cd \ test in der Batch-Datei,

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

oder Verwendung Kopie mit vollständigen Pfad zB

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

EDIT: es sollte so etwas sein kopieren mit CMD versuchen:

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: Oder für die Batch-Datei

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

Ich habe die exe und die Batch-Datei im selben Ordner. Ich probierte dies, indem ich sowohl "Batch" -Datei als auch "exe" auf den Desktop legte und nur die obige Batch-Datei ausführte, was gut funktioniert. In diesem Fall musste ich das Quellverzeichnis nicht in 'cd Users/someuser/Desktop' ändern. Wenn Sie hier den vollständigen Pfad zur Batch-Datei einfügen, kann das funktionieren, aber wenn ich das Projekt bereitstellen würde, würde sich der Pfad für diese "CD" in der Batch-Datei ändern. In diesem Fall würde nichts passieren. – user1240679

+0

Wenn ich die Batch-Datei direkt aus dem Bin/Debug-Output-Ordner ausführen, funktioniert es immer noch und die Exe wird auf 'System32' kopiert. Es ist nur, dass dies nicht von "Process.Start" – user1240679

+0

@ user1240679 läuft, überprüfen Sie einfach die bearbeitete Antwort, überprüfen Sie auch diese Frage http://StackOverflow.com/Questions/1469764/c-sharp-run-command-prompt- Befehle – Habib

Verwandte Themen