web-dev-qa-db-ja.com

ファイルを使用してプロセスを特定する

特定のファイルをロックしているプロセスをプログラムで識別する方法を理解しようとしています。 Win32 APIとWMIを検索しましたが、今のところ何も見つかりません。私はそれが可能であることを知っています-Sysinternalsは、システム上のすべてのプロセスによってアクセス/ロックされたすべてのリソースをリストできます。

誰かが私にヒントをドロップできますか?

23
Amy

(handle.exe from Sysinternals を使用できます。

何かのようなもの:

> handle /accepteula C:\path\to\directory
...
program.exe           pid: 1234   type: File           2E4: C:\path\to\directory
...

https://stackoverflow.com/a/599268/367916 に感謝します。

17
thejoshwolfe

Microsoftの Process Explorer を使用できます

  1. ダウンロードして解凍して実行Process Explorer
  2. Findメニューをクリックし、次にFind Handle or DLL ...またはCTRL + Fを押します
  3. パスをコピーしてファイルのロックされたフォルダーに貼り付けます
  4. Searchをクリックすると、メインProcess Explorerウィンドウからプロセスを強制終了できます
5
jtomaszk

十分に新しいバージョンのWindowsに制限できる場合、Restart Managerは どのプロセスが特定のファイルを開いているか を通知します。

4
Neil

プロセスエクスプローラーのしくみのため、探す必要があるのは、特定のプロセスに関連付けられているファイルハンドルを見つける方法であり、システム内の各プロセスのリストをプルして探す必要があると思いますその中のあなたのファイル。

2
chaos

これは 記事 が参考になるかもしれません。

Ntdll.dllのドキュメントに記載されていない関数を使用して、システム上の各プロセスのファイルのリストを検索する必要があります。

0
Mathias

私はWindowsではわかりませんが、誰かがLinuxでlsofコマンドを使用するか、フォルダ/ proc/PROCESS_ID/fdを検索してどのプロセスを参照できるかを知っていると役立つと思うかもしれませんファイルを開きました。

0
Marc

WhoLockMe は、ニースの右クリックウィンドウエクスプローラー拡張機能です。

0
AndreasN