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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/02/19 10:34:27
  • 終了:2010/02/25 11:57:01

回答(2件)

id:b19901108 No.1

b19901108回答回数55ベストアンサー獲得回数62010/02/19 10:59:30

ポイント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

zifree回答回数175ベストアンサー獲得回数62010/02/19 21:26:50

ポイント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

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

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません