95

Linux用の私のお気に入りのツールの1つは、lsofです。これは本物のスイスアーミーナイフです。

今日、私はWinXPシステム上のどのプログラムが特定のファイルを開いているのか疑問に思いました。lsofと同等のユーティリティはありますか?さらに、問題のファイルはネットワーク共有を介していたため、それが問題を複雑にするかどうかはわかりません。

4

10 に答える 10

81

SysinternalsSuiteのProcessExplorerを使用すると、ハンドルの検索またはDLL関数を使用して、そのファイルを開いた状態でプロセスを検索できます。

于 2008-08-19T04:48:32.587 に答える
44

に相当するのlsof -p pidは、sysinternalsハンドルとlistdllsからの出力を組み合わせたものです。

handle -p pid
listdlls -p pid

sysinternalsでpidを見つけることができますpslist

于 2009-03-01T04:48:30.007 に答える
11

ハンドルを試してください。 FilemonRegmonは、duceプログラムfooがシステムに対して何をしているのかを理解するのにも最適です。

于 2008-08-19T04:46:41.997 に答える
7

lsofに相当するものは、Sysinternals のハンドルlistdllsからの出力を組み合わせたものです。つまり、次のようになります。

c:\SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO\alois.mahdal
   10: File  (RW-)   C:\Windows
   1C: File  (RW-)   D:\some\locked\path\OpenFile.txt
[...]

c:\SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls

  Base        Size      Version         Path
  0x00400000  0x29000   2.25.0000.0000  D:\opt\SysinternalsSuite\Listdlls.exe
  0x76ed0000  0x180000  6.01.7601.17725  C:\Windows\SysWOW64\ntdll.dll
[...]

c:\SysInternals>listdlls

残念ながら、それらを使用するには「管理者として実行」する必要があります。

また、 listdllsハンドルは連続したテーブルのような形式を生成しないため、ファイル名をフィルタリングすると PID が隠されます。findstr /c:pid: /c:<filename>ただし、両方のユーティリティに非常に近づくはずです

c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 \<unable to open process>
smss.exe pid: 308 NT AUTHORITY\SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM
[...]
cmd.exe pid: 7140 FOO\alois.mahdal
conhost.exe pid: 1212 FOO\alois.mahdal
gvim.exe pid: 3408 FOO\alois.mahdal
  188: File  (RW-)   D:\some\locked\path\OpenFile.txt
taskmgr.exe pid: 6016 FOO\alois.mahdal
[...]

ここで、gvim.exe がこのファイルを開いていることがわかります。

于 2012-03-21T10:36:34.907 に答える
6

Unlockerを試してください。

Unlockerサイトには、他のツールとの比較を示す気の利いたチャート(リンクをたどってから下にスクロール)があります。明らかに、そのような比較は、通常、ツールの作成者によって作成されるため、通常は偏っていますが、チャートには、自分で試すことができるように、少なくとも代替案がリストされています。

于 2008-10-09T17:35:23.483 に答える
4

Windows 7の一部のように見えるプログラム「OpenFiles」があります。それはあなたが望むことをすることができるようです。リモート ユーザーが (ファイル共有を介して) 開いたファイルを一覧表示でき、「openfiles /Local on」を呼び出してシステムを再起動した後、ローカルで開いたファイルを表示できるはずです。後者には、パフォーマンスのペナルティがあると言われています。

于 2012-05-09T15:24:48.857 に答える
2

「コンピューター」(または「マイコンピューター」)アイコンを右クリックして、ポップアップメニューから「管理」を選択すると、コンピューター管理コンソールが表示されます。

そこのSystemTools\ Shared Foldersの下に、「OpenFiles」があります。これはおそらくあなたが望むものに近いですが、ファイルがネットワーク共有上にある場合は、ファイルが存在するサーバー上で同じことを行う必要があります。

于 2008-08-19T04:40:13.680 に答える
2

Process Explorer を使用して、プロセス ID を見つけます。次に、ハンドルを使用して、開いているファイルを見つけます。

例: handle -p

Microsoft 自体のユーティリティを使用しているため、このアプローチが気に入っています。

于 2010-03-11T13:45:18.453 に答える
2

OpenedFilesViewの[オプション] メニューの下に、[ネットワーク ファイルを表示] という名前のメニュー項目があります。おそらくそれが有効になっていると、前述のユーティリティが役に立ちます。

于 2011-11-28T10:21:19.973 に答える