2012-03-14 12 views
1

Application.ExecutablePathを使用してメモリ上で実行されている実行ファイルの場所を取得し、現在の場所から削除しようとしましたが、エラーThe system cannot find the file specifiedが表示されます。ファイル名の処理方法

私の理解が行く限り、それは経路のスペースのためです。この問題をどのように解決すればよいですか?ここに関連するコードは次のとおりです。

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); 
psi.FileName = @"cmd.exe /C Del " + Path.GetFullPath(Application.ExecutablePath); 
p.StartInfo = psi; 
p.Start(); 
+3

パスを修正すると、おそらく「ファイル使用中」の例外が発生します。 –

答えて

6

私は単純な文字列concats上String.Formatを好む傾向にある:

psi.FileName = string.Format("cmd.exe /C Del \"{0}\"", 
           Path.GetFullPath(Application.ExecutablePath)); 

そうでなければ、私はこれは同様に動作するはずと信じて:

psi.FileName = @"cmd.exe /C Del """ + Path.GetFullPath(Application.ExecutablePath) + """"; 
+0

うまくいきませんでした...どのように5 upvotes –

+0

あなたが尋ねた質問:_私の理解が行く限り、それはパスのスペースのためです。どのように私はこの問題を解決するのですか?_これは答えています... –

2

それはだ問題"システムは指定されたファイルを見つけることができません" cmdでコマンドを実行しようとすると、実際にはそのファイルがアクセス拒否であることがわかりますが、これはうまくいくはずです:

System.Diagnostics.Process.Start("cmd.exe", 
"/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath); 
Application.Exit(); 
関連する問題