掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
実行ファイル自身を、実行中に削除するには (ID:36537)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
それらの方法でバッチやレジストリを使うのは、自身を直接削除することが不可能だからです。 やってみれば分かりますが、自分自身を実行中にDeleteFileすることはできません。 OSがEXEファイルにロックをかけていて、削除するにはバッチやレジストリを使わざるを得ないのです。 また、レジストリで削除する方法に関しては、MoveFileExで移動先(lpNewFileName)をnil、 フラグ(dwFlags)にMOVEFILE_DELAY_UNTIL_REBOOTを指定しても同等の効果が得られますし、 直接レジストリを弄らないので安全確実です。 ちなみにメモリは最近のOSでは終了時にすべて解放してくれるので、 例えばTObject.Createを100個実行したまま終了してもリークはしません。 さらに、実行中のプロセスはEXEファイルのコピーでしかないので、 ロックのことを無視すれば、削除されても実行中のプロセスには影響ありません。 (例えばCD-ROMなどからEXEを起動したあと、CDを取り出しても動くことで確認できます)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.