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

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

Сегодня 9X_windows-programming мне стало интересно, какие программы в системе 9X_windows-programming WinXP открывают определенный файл. Есть 9X_windows ли эквивалентная утилита для lsof? Кроме 9X_filesystem того, рассматриваемый файл находился на 9X_filesystems общем сетевом ресурсе, поэтому я не уверен, что 9X_windows-applications это усложняет ситуацию.

95
0
10
Общее количество ответов: 10

Ответ #1

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

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

83
3

  • @MatthewMcCullough Есть ссылки? Вы ошиблись, [Process Explorer] (http://technet.microsoft.com/en-us/sysinternals/bb896653) и ...

Ответ #2

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

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

handle -p pid listdlls -p pid 

вы 9X_command-line можете узнать pid с помощью sysinternals 9X_windows-application pslist.

47
0

Ответ #3

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

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

11
1

  • @slipsec FileMon и Regmon теперь заменены на [Process Monitor v3.2] (https://technet.microsoft.com/en-us/sysinter ...

Ответ #4

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

Один эквивалент lsof может быть объединен с 9X_windows выводом handle и listdll Sysinternals, то есть:

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 

К сожалению, вы 9X_command-line должны «работать от имени администратора», чтобы 9X_filesystem использовать их.

Также listdll и handle не создают непрерывную 9X_windows-applications табличную форму, поэтому фильтрация имени 9X_filesystems файла скроет PID. Однако findstr /c:pid: /c: должен максимально 9X_windows-application приблизить вас к обеим утилитам

c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm System pid: 4 \ 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 [...] 

Здесь мы 9X_command-line видим, что файл gvim.exe открыт.

8
0

Ответ #5

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

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

На сайте Unlocker есть отличная 9X_windows диаграмма (прокрутите вниз после перехода 9X_filesystems по ссылке), которая показывает сравнение 9X_filesystems с другими инструментами. Очевидно, что такие 9X_windows-programming сравнения обычно необъективны, поскольку 9X_command-line они обычно пишутся автором инструмента, но 9X_windows-programming на диаграмме, по крайней мере, перечислены 9X_windows-applications альтернативы, чтобы вы могли попробовать 9X_filesystems их сами.

6
1

  • Unlocker отображает только заблокированные файлы, но не открытые ф ...

Ответ #6

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

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

TaskList /M nameof.dll 

6
0

Ответ #7

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

Есть программа "OpenFiles", вроде как часть 9X_windows-application windows 7. Похоже, она может делать то, что 9X_linux вы хотите. Он может отображать файлы, открытые 9X_windows-application удаленными пользователями (через файловый 9X_windows ресурс), и после вызова "openfiles / Local 9X_windows on" и перезапуск системы, он должен иметь 9X_command-line возможность отображать файлы, открытые локально. Считается, что 9X_windows-programming последнее влечет за собой снижение производительности.

4
1

  • Я пришел сюда в поисках способа узнать, кто мешает мне удалить папку и избежать перезапуска, и я обнаружил, что нужная мне команда требует настройки конфигурации, которая ... как вы уже догадались ... требует переза ...

Ответ #8

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

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

Например, дескриптор 9X_filesystems -p

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

3
0

Ответ #9

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

Если щелкнуть правой кнопкой мыши значок 9X_windows-programming «Компьютер» (или «Мой компьютер») и выбрать 9X_windows-application «Управление» во всплывающем меню, откроется 9X_windows-applications консоль управления компьютером.

Там в разделе 9X_command-line «Системные инструменты\Общие папки» вы найдете 9X_filesystem «Открыть файлы». Это, вероятно, близко к 9X_windows-applications тому, что вы хотите, но если файл находится 9X_command-line в сетевой папке, вам нужно будет сделать 9X_command-line то же самое на сервере, на котором находится 9X_linux файл.

2
1

  • Обратите внимание, что здесь отображаются только общие файлы, открытые другими пользователями сети. Это не помогает найти файлы, открытые в ...

Ответ #10

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

В OpenedFilesView в меню «Параметры» есть пункт «Показать 9X_filesystems сетевые файлы». Возможно, если эта функция 9X_command-line включена, вышеупомянутая утилита пригодится.

2
0