特定のファイルをロックしているプロセスをプログラムで識別する方法を理解しようとしています。 Win32 APIとWMIを検索しましたが、今のところ何も見つかりません。私はそれが可能であることを知っています-Sysinternalsは、システム上のすべてのプロセスによってアクセス/ロックされたすべてのリソースをリストできます。
誰かが私にヒントをドロップできますか?
(handle.exe from Sysinternals を使用できます。
何かのようなもの:
> handle /accepteula C:\path\to\directory
...
program.exe pid: 1234 type: File 2E4: C:\path\to\directory
...
Microsoftの Process Explorer を使用できます
十分に新しいバージョンのWindowsに制限できる場合、Restart Managerは どのプロセスが特定のファイルを開いているか を通知します。
プロセスエクスプローラーのしくみのため、探す必要があるのは、特定のプロセスに関連付けられているファイルハンドルを見つける方法であり、システム内の各プロセスのリストをプルして探す必要があると思いますその中のあなたのファイル。
これは 記事 が参考になるかもしれません。
Ntdll.dllのドキュメントに記載されていない関数を使用して、システム上の各プロセスのファイルのリストを検索する必要があります。
私はWindowsではわかりませんが、誰かがLinuxでlsofコマンドを使用するか、フォルダ/ proc/PROCESS_ID/fdを検索してどのプロセスを参照できるかを知っていると役立つと思うかもしれませんファイルを開きました。
WhoLockMe は、ニースの右クリックウィンドウエクスプローラー拡張機能です。