VisualBasic6について質問です。ファイルを削除したいのですが、まったく無関係なシステムが

ファイルをOpenしており命令が実行できないことがあります。この時に、ファイルフルパスを用いて、
現在ファイルを扱っているプロセスを特定することはできますか?
アドバイスいただきたく宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/02/15 16:26:43
  • 終了:2010/02/22 11:55:15

ベストアンサー

id:ardarim No.2

ardarim回答回数897ベストアンサー獲得回数1452010/02/16 22:29:54

ポイント100pt

APIを駆使することで、ファイルをオープンしているプロセスを特定することは可能です。ただし、VBで実装するのは難しいと思います。実現するとしたら、C言語でDLLを作ってそれを呼び出すような形になると思います。


こちらにプログラムサンプルがあります。

Listing Used Files - CodeProject

やり方を要約すると、NtQuerySystemInformation APIで、システム内に存在するすべてのハンドルをリストアップすることができます。このAPIでハンドルをリストアップした上で、一つ一つのハンドルに対してファイル名を取得し、調べたいファイル名と一致するかを確認する作業が必要となります。ただ、ハンドルからファイル名を取得するにはカーネルメモリ空間へのアクセスが必要となる為、ドライバを介す必要があります。


要するに面倒くさいです。簡単に、このAPIを1つ呼べば特定できる、というような類の話ではありません。


より簡易な代替案として、handleを使うことは可能かもしれません。handleはコマンドラインユーティリティです。ファイル名を指定すると、そのファイル名をオープンしているプロセスを列挙して出力します。なので、ファイル名をパラメータに指定した上でVBから呼び出し、標準出力への実行結果を受け取って解析することでPID(プロセスID)を特定することは可能だと思います。

id:harunoharuno

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

方法にとどまらず考え方までお答えいただきありがとうございました。

ardarim様にご回答いただいた内容を見て作業量を考える必要を感じました。

2010/02/22 11:54:17

その他の回答(1件)

id:b19901108 No.1

b19901108回答回数55ベストアンサー獲得回数62010/02/15 17:26:30

ポイント100pt

openfilesでプロセスとファイルを取得してみてはどうでしょう?

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

id:harunoharuno

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

2010/02/22 11:54:36
id:ardarim No.2

ardarim回答回数897ベストアンサー獲得回数1452010/02/16 22:29:54ここでベストアンサー

ポイント100pt

APIを駆使することで、ファイルをオープンしているプロセスを特定することは可能です。ただし、VBで実装するのは難しいと思います。実現するとしたら、C言語でDLLを作ってそれを呼び出すような形になると思います。


こちらにプログラムサンプルがあります。

Listing Used Files - CodeProject

やり方を要約すると、NtQuerySystemInformation APIで、システム内に存在するすべてのハンドルをリストアップすることができます。このAPIでハンドルをリストアップした上で、一つ一つのハンドルに対してファイル名を取得し、調べたいファイル名と一致するかを確認する作業が必要となります。ただ、ハンドルからファイル名を取得するにはカーネルメモリ空間へのアクセスが必要となる為、ドライバを介す必要があります。


要するに面倒くさいです。簡単に、このAPIを1つ呼べば特定できる、というような類の話ではありません。


より簡易な代替案として、handleを使うことは可能かもしれません。handleはコマンドラインユーティリティです。ファイル名を指定すると、そのファイル名をオープンしているプロセスを列挙して出力します。なので、ファイル名をパラメータに指定した上でVBから呼び出し、標準出力への実行結果を受け取って解析することでPID(プロセスID)を特定することは可能だと思います。

id:harunoharuno

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

方法にとどまらず考え方までお答えいただきありがとうございました。

ardarim様にご回答いただいた内容を見て作業量を考える必要を感じました。

2010/02/22 11:54:17

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

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

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

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

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