Сведения о вопросе

LiKIY

02:30, 23rd August, 2020

Теги

Как определить, открыт ли конкретный файл в Windows?

Просмотров: 545   Ответов: 10

Один из моих любимых инструментов для linux - это lsof -настоящий швейцарский армейский нож!

Сегодня мне стало интересно, какие программы в системе WinXP имели конкретный открытый файл. Существует ли какая-либо эквивалентная утилита для lsof? Кроме того, файл, о котором идет речь, был на сетевом ресурсе, поэтому я не уверен, что это усложняет дело.



  Сведения об ответе

dump

06:28, 19th August, 2020

Используйте Process Explorer из Sysinternals Suite, функция Find Handle или DLL позволит вам искать процесс с открытым файлом.


  Сведения об ответе

P_S_S

02:45, 12th August, 2020

Эквивалент lsof -p pid -это комбинированный вывод из дескриптора sysinternals и listdlls, т. е.

handle -p pid
listdlls -p pid

вы можете узнать pid с помощью sysinternals pslist .


  Сведения об ответе

ASSembler

22:18, 25th August, 2020

Попробуй Справиться . Filemon & Regmon также отлично подходит для того, чтобы попытаться выяснить, что программа duce foo делает с вашей системой.


  Сведения об ответе

SKY

15:02, 2nd August, 2020

Одним из эквивалентов 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

К сожалению, вы должны "run as Administrator" быть в состоянии использовать их.

Кроме того, listdlls и handle не создают непрерывную табличную форму, поэтому фильтрация имени файла скрывает 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 является одним из тех, кто имеет этот файл открытым.


  Сведения об ответе

lourence

02:22, 13th August, 2020

Если файл является .dll, то вы можете использовать приложение командной строки TaskList , чтобы увидеть, кто его открыл:

TaskList /M nameof.dll


  Сведения об ответе

SEEYOU

14:49, 24th August, 2020

Попробуйте Unlocker .

Сайт Unlocker имеет изящную диаграмму (прокрутите вниз после перехода по ссылке), которая показывает сравнение с другими инструментами. Очевидно, что такие сравнения обычно предвзяты, поскольку они обычно написаны автором инструмента, но диаграмма, по крайней мере, перечисляет альтернативы, чтобы вы могли попробовать их самостоятельно.


  Сведения об ответе

$DOLLAR

11:31, 11th August, 2020

Если вы щелкните правой кнопкой мыши на значке "Computer" (или "Мой компьютер") и выберите "Manage" из всплывающего меню, это приведет вас к консоли управления компьютером.

Там, под системными папками Tools\Shared, вы найдете "Open Files". Это, вероятно, близко к тому, что вы хотите, но если файл находится на сетевом ресурсе, то вам нужно будет сделать то же самое на сервере, на котором живет файл.


  Сведения об ответе

ASER

23:06, 5th August, 2020

Есть программа "OpenFiles", кажется, часть windows 7. Кажется, что он может делать все, что вы хотите. Он может перечислять файлы, открытые удаленными пользователями (через общий файловый ресурс) и, после вызова "openfiles /Local on" и перезагрузка системы, он должен быть в состоянии показать файлы, открытые локально. Последний, как говорят, имеет штрафные санкции за исполнение.


  Сведения об ответе

9090

18:04, 3rd August, 2020

Используйте Process Explorer для поиска идентификатора процесса. Затем используйте Handle , чтобы узнать, какие файлы открыты.

Например ручка -p

Мне нравится этот подход, потому что вы используете утилиты от самой Microsoft.


  Сведения об ответе

SSESION

14:27, 19th August, 2020

В OpenedFilesView, под меню опций, есть пункт меню с именем "Show Network Files". Возможно, с этим включенным, вышеупомянутая утилита имеет некоторую пользу.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться