Domanda

Uno dei miei strumenti preferiti per Linux è lsof - un vero coltellino svizzero!

Oggi mi sono ritrovato a chiedermi quali programmi su un sistema WinXP avessero aperto un file specifico.Esiste un'utilità equivalente a lsof?Inoltre, il file in questione si trovava su una condivisione di rete, quindi non sono sicuro che ciò complichi le cose.

È stato utile?

Soluzione

Utilizzo Esplora processi dalla suite Sysinternals, la funzione Trova handle o DLL ti consentirà di cercare il processo con quel file aperto.

Altri suggerimenti

L'equivalente di lsof -p pid è l'output combinato dell'handle sysinternals e delle listdlls, vale a dire

handle -p pid
listdlls -p pid

puoi scoprire pid con sysinternals pslist.

Tentativo Maniglia. Filemon & Regmon sono ottimi anche per cercare di capire cosa sta facendo il programma duce foo al tuo sistema.

Un equivalente di lsof potrebbe essere l'output combinato di Sysinternals maniglia E listdlls, cioè.:

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

Sfortunatamente, devi "eseguire come amministratore" per poterli utilizzare.

Anche listdlls E maniglia non produrre un modulo continuo simile a una tabella, quindi il filtraggio del nome file nasconderebbe il PID. findstr /c:pid: /c:<filename> dovrebbe avvicinarti molto ad entrambe le utilità, però

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
[...]

Qui possiamo vedere che gvim.exe è quello che ha questo file aperto.

Tentativo Sbloccatore.

Il sito Unlocker ha un grafico elegante (scorri verso il basso dopo aver seguito il collegamento) che mostra un confronto con altri strumenti.Ovviamente tali confronti sono solitamente parziali poiché sono generalmente scritti dall'autore dello strumento, ma il grafico almeno elenca le alternative in modo che tu possa provarle tu stesso.

Se il file è un .dll, puoi utilizzare il file .dll Elenco delle attività app da riga di comando per vedere chi l'ha aperta:

TaskList /M nameof.dll

Se fai clic con il pulsante destro del mouse sull'icona "Computer" (o "Risorse del computer") e selezioni "Gestisci" dal menu a comparsa, verrai indirizzato alla console Gestione computer.

Lì, sotto Strumenti di sistema\Cartelle condivise, troverai "Apri file".Questo è probabilmente vicino a quello che desideri, ma se il file si trova su una condivisione di rete, dovresti fare la stessa cosa sul server su cui risiede il file.

Esiste un programma "OpenFiles", sembra far parte di Windows 7.Sembra che possa fare quello che vuoi.Può elencare i file aperti da utenti remoti (tramite condivisione di file) e, dopo aver chiamato "Openfiles /Local ON" e un riavvio del sistema, dovrebbe essere in grado di mostrare i file aperti a livello locale.Si dice che quest'ultimo abbia penalità di prestazione.

Utilizzare Process Explorer per trovare l'ID del processo.Quindi utilizzare Maniglia per scoprire quali file sono aperti.

Ad esempio, maniglia -p

Mi piace questo approccio perché stai utilizzando le utilità della stessa Microsoft.

In Visualizzazione file aperti, nel menu Opzioni, è presente una voce di menu denominata "Mostra file di rete".Forse con quello abilitato, l'utilità di cui sopra è di qualche utilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top