2009-07-29 24 views
2

私はC++のexeを持っています。特定のシナリオでは、私はexeを停止し、再度起動する必要があります。これは外部からではなく同じexe内から行わなければなりません。これを達成する最良の方法は何ですか?Windowsのプロセス[exe]を再起動

私の推測では、プロセスの新しいインスタンスを開始し、実行中のプロセスを終了することです。しかし、RestartProcess()などのようにこれを行うための正直なAPIはありますか?あなたは何をお勧めしますか?

+0

ちょっと興味がありません。どうしてこのコミュニティをWikiにしましたか? – andy

+0

あなたはこれを行う必要があると思う理由を説明することをお勧めします - より良い、より簡単な解決策があるかもしれません。 –

+1

@Neil:rustyについてはわかりませんが、ユーザーの介入なしに自動的にソフトウェアを実行するアップグレードをサポートするために、まったく同じことを実装しています。現在のapp.exeの名前をapp_old.exeに変更してから新しい.exeをダウンロードし、app.exeとしてディスクに書き込み、次にCreateProcess()を呼び出します。失敗した場合、古いバージョンでは新しいapp.exeが削除され、app_old.exeの名前がapp.exeに変更され、エラーが記録されます。明らかに成功すれば、それはただ閉じます。しかし、より良い解決策があれば教えてください! (私はそれがsharptoothの説明=>彼に+1したのと非常によく似ていました:) – Reunanen

答えて

5

いいえ、このような組み込みメソッドはありません。実行可能ファイル(GetCurrentModule()、GetModuleFileName())へのパスを検出し、新しいプロセス(CreateProcess())を実行し、現在のプロセス(ExitProcess())を終了する必要があります。

1

標準exec機能を使用してください。それはプログラムを実行し、実際に実行中のプログラムを新しいものに置き換えて戻ってこない。

関連する問題