自身をコピーするには

解決


satoshi  2005-05-12 18:53:28  No: 57375  IP: 192.*.*.*

よくウィルスで見かけるのですが、インストラーを使わず、自分で作成したアプリケーションを実行したときに自身の実行ファイルをとあるフォルダにコピーするにはどのようにしたらよいのでしょうか?

編集 削除
あああ  2005-05-12 19:25:00  No: 57376  IP: 192.*.*.*

自分で作成したアプリケーションを実行したときに自身の実行ファイルをとあるフォルダにコピーする
という処理を書く。

編集 削除
satoshi  2005-05-12 19:28:12  No: 57377  IP: 192.*.*.*

その処理をする関数を教えていただけませんか?

編集 削除
シャノン  2005-05-12 19:47:14  No: 57378  IP: 192.*.*.*

実行中のファイルへの書き込みや削除は無理ですが、コピーなら普通にできませんか?

編集 削除
satoshi  2005-05-12 19:59:43  No: 57379  IP: 192.*.*.*

アプリを実行した時には当然実行中になるわけですが、それ自身のコピーは普通にできるのでしょうか?
恐れ入りますが、その関数をお教え願いますか?

編集 削除
YuO  2005-05-12 22:01:49  No: 57380  IP: 192.*.*.*

実行中のファイルであっても,読み込みは可能です。
# それぐらい,試せばわかると思いますが……。

コピーをするなら,
CopyFile
とか,
CopyFileEx
とか,
SHFileOperation
とか,
CreateFile + ReadFile + WriteFile + CloseHandle
とか,
CreateFile + CreateFileMapping + MapViewOfFile + UnmapViewOfFile + CloseHandle
とか,方法は色々ありますが。
# 自分でやると,属性のコピーとかが面倒ですが……。

編集 削除
satoshi  2005-05-12 22:34:55  No: 57381  IP: 192.*.*.*

ご回答ありがとうございます。例えばCopyFileを使う場合、コピー元情報が必要ですが、自身が実行しているアプリケーションの場所の絶対パスを取得する方法はありますでしょうか?

編集 削除
RAPT  2005-05-12 23:36:49  No: 57382  IP: 192.*.*.*

GetModuleFileName とか
GetModuleFileNameEx とか。

って、適当にアタリをつけてMSDNで検索してみれば?

編集 削除
satoshi  2005-05-14 16:18:57  No: 57383  IP: 192.*.*.*

できました。ありがとうございます。

編集 削除