【Windowsプログラミング】プログラムから他のプロセスが使っているファイルを削除する方法を教えてください。

(方法はなんでもOkですが、Windows上で動作するのが条件です)

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/02/25 11:57:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:b19901108 No.1

回答回数55ベストアンサー獲得回数6

ポイント200pt

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

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

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


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

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

id:harunoharuno

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

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

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

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

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

認識いたしました。

2010/02/22 11:25:55
id:zifree No.2

回答回数175ベストアンサー獲得回数6

ポイント200pt

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

id:harunoharuno

参考になりました。

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

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

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

2010/02/22 18:30:03

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません