2016-10-11 11 views
0

私の同僚と私はちょっとしたITトロールの戦いがありました。起動したときに自動起動に自身をコピーし、その後PCをシャットダウンするC#で.exeを作成したかったのです。これを動作させましたが、再起動後にファイルが既に存在するという例外があります。今私はFile.Delete(@Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), fileName)); とそれを削除しようとしましたが、私は別の例外System.IO.FileNotFoundException: "C:\ Windows \ system32 \ Test.exe"(Test.exeはプログラムです)が見つかりませんでしたその完全なエラーはドイツ語ではそうです、そうです。 例外を無視してそれを上書きする方法はありますか?C#でフォルダを削除して正しくコピーするには?

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

なぜドイツ語で完全なエラーが表示されないのですか? – Maarten

+0

ダンノーあなたが役に立ったと思ったら追加できます –

+1

lol @Maarten、あなたができることは、まずそれを削除する前にファイルの存在をチェックすることです。 –

答えて

0

を上書きする第三引数を取るFile.Copyのオーバーライドを使用します。 はここに私の完全なコードです。

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

それは私が推測した。その自動スタートのフォルダには、私は今でもそれを実行することはできません。私がそれを開くと、文字通り何も起こりません。アイデアはありますか? –

+0

同じファイルを上書きする場合、目に見える影響はありません。私はこれがコンソールアプリだと推測しています。その場合、私は個人的にすべてをtryブロックに入れ、コンソールに例外をプッシュします。 (Console.WriteLineを(ex.ToString()); Console.ReadKey(真)に続く;) 後者はそう、あなたがエラーが何であるかを見ることができます一時停止する必要がありますが、エラーがない場合は何も表示されないでしょう。 – Kirk

関連する問題