特定のファイルをロックしているプロセスをプログラムで特定する方法を見つけようとしています。Win32 API と WMI を検索しましたが、今のところ何も見つかりません。私はそれが可能であることを知っています.Sysinternalsは、システム上のすべてのプロセスによってアクセス/ロックされているすべてのリソースを一覧表示できます.
誰かヒントをくれませんか?
Sysinternals の handle.exe を使用できます。
何かのようなもの:
> handle /accepteula C:\path\to\directory
...
program.exe pid: 1234 type: File 2E4: C:\path\to\directory
...
十分に新しいバージョンの Windows に限定できる場合、Restart Manager は、どのプロセスが特定のファイルを開いているかを通知できます。
Process Explorerの動作方法のため、検索する必要があるのは、特定のプロセスにアタッチされているファイルハンドルを見つける方法であり、システム内のプロセスごとにそのリストを取得して、検索する必要があると思われます。その中のファイル。
Windows ではわかりませんが、Linux ではlsofコマンドを使用するか、フォルダー /proc/PROCESS_ID/fd を検索してどのプロセスがファイルを開いたかを確認できることを知っておくと便利な人がいるかもしれません。