質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

2943閲覧

別プロセスのファイルハンドルを開放する

nobureon2

総合スコア21

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

0クリップ

投稿2018/03/16 03:12

編集2018/03/16 03:20

どなたかお力添えお願いします。

・困っていること
プロセスAからBMPファイルの削除すると、
プロセスBにファイルのハンドルを掴まれているため、削除できない。
プロセスBは正体不明。

・やりたいこと
プロセスAからプロセスBの正体を特定。(BMPファイルはローカルでフルパス指定可能)
プロセスAからプロセスBのファイルのハンドルを開放する。
言語はVBが希望だが、出来るのであれば何言語でも可。

MicroSoftから提供されている「handle.exe」で検証したところ、
やりたいことができたが「handle.exe」を入れることが出来ない環境かつ、
初回利用時にライセンス画面が表示されるため、業務では利用できなかった。

https://technet.microsoft.com/ja-jp/sysinternals/handle.aspx
http://100mds.blogspot.jp/2014/10/windows.html

・実行環境
Windows10
.net Framework 4.6.1

koiru👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

回答ではなく疑問ですが・・・。
正体不明のプロセスBが何か理由があって掴んでいるファイルのハンドルを強制的に解放してよいのでしょうか?
プロセスBは困らないのでしょうか?
プロセスBの挙動を無視するのであれば、プロセスごと殺しちゃえばいいような気もしますが。
そもそもBMPファイルなど共有ファイルでもなんでもないものを、正体不明のプロセスが使ってしまっていることの原因を探る必要はないのでしょうか。

投稿2018/03/16 05:22

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobureon2

2018/03/16 10:41

ごもっともです。。 ただ、再現性が無いため原因究明よりも対処を優先しています。 アドバイスありがとうございます!
guest

0

C#でプロセスのハンドル一覧を取得する(備忘録)が参考になりそうです。

他、DUPLICATE_CLOSE_SOURCENtQuerySystemInformationなどをキーワードに検索すると、以下のようなページも見つかります。
Close Win32 Handle from External Process
HOWTO: Enumerate handles

投稿2018/03/16 04:34

can110

総合スコア38264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobureon2

2018/03/16 10:42

コメントありがとうございます! 「NtQuerySystemInformation」のキーワード検索で目的のサイトにたどり着けました。
guest

0

ベストアンサー

C#ですけど、「ファイルを使用中のアプリケーションをC#から照べる

後は、openfilesコマンドが使えるかもしれません。

投稿2018/03/16 04:14

sazi

総合スコア25186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobureon2

2018/03/16 10:45

ちなみに、openfilesは端末の再起動が必要なので、環境でNGでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問