人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Windowsプログラミング】プログラムから他のプロセスが使っているファイルを削除する方法を教えてください。
(方法はなんでもOkですが、Windows上で動作するのが条件です)

前提1:他のプロセスにメッセージを送り、ファイルを開放する指示を出すことはできない
前提2:他のプロセスには例外が組み込まれていてファイルが削除されても正常に異常処理を行うものとする

●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:Windows ファイル プログラミング プログラム プロセス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b19901108
●200ポイント

openfiles /disconect /id "指定のプロセスID"

をプログラムから実行すればいいんじゃないでしょうか?

http://www.atmarkit.co.jp/fwin2k/win2ktips/306openfiles/openfile...


vista以降ならAPIでファイルを検出できるみたいです。

http://msdn.microsoft.com/ja-jp/magazine/cc163450.aspx

◎質問者からの返答

回答ありがとうございます。

リソースを食ってしまうのがネックですね。

openfiles工夫すればいろいろ出来そうな気がします。

Vistaの情報につきまして、申し訳ありませんがXPでも動作させたいので

今回はあまり検討していませんが、使えるAPIも少しずつ更新されていることを

認識いたしました。


2 ● zifree
●200ポイント

http://yebisuya.dip.jp/WinTips/tips4.html

「他のプロセス」が確実にいなくなるWindows再起動時に、ファイルを削除する方法でもOKでしょうか。

MoveFileEx(lpszExisting,NULL,MOVEFILE_DELAY_UNTIL_REBOOT);

で可能です。

MoveFileExに関するMSDNの説明はこちら

http://msdn.microsoft.com/ja-jp/library/cc429621.aspx

◎質問者からの返答

参考になりました。

再起動しても問題ないと判断できる場合は

シンプルで良い方法だと思います。

回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ