Windows에서 특정 파일이 열려 있는지 어떻게 확인할 수 있습니까? [닫은]


87

내가 가장 좋아하는 리눅스 용 도구 중 하나는 lsof- 진짜 스위스 군용 칼입니다!

오늘 저는 WinXP 시스템에서 특정 파일이 열려있는 프로그램이 무엇인지 궁금합니다. lsof와 동등한 유틸리티가 있습니까? 또한 문제의 파일이 네트워크 공유를 통해 이루어 졌기 때문에 문제가 있는지 확실하지 않습니다.

답변:


76

Sysinternals Suite의 Process Explorer 를 사용 하면 Find Handle 또는 DLL 기능을 사용하여 해당 파일이 열려있는 프로세스를 검색 할 수 있습니다.


이것이 정말로 질문에 대한 대답입니까? Process Explorer를 사용하면 특정 프로세스 / 핸들 / dll / 무엇이든에 대해 열려있는 파일을 볼 수 있지만 이는 역 매핑입니다. 이 질문에 대한 내 대답 stackoverflow.com/questions/15708/… 을 참조하십시오 .
Greg Mattes

7
네 그렇습니다. Find Handle 또는 Dll (또는 Ctrl-F 누르기)을 클릭하고 검색중인 파일의 이름을 입력하면 해당 파일이 열린 프로세스 목록이 표시됩니다.
Jay Hofacker

Process Explorer는 이제 이름이 바뀌었고 "Process Monitor"로 번들되었습니다.
Matthew McCullough

7
@MatthewMcCullough 참고 문헌이 있습니까? 틀 렸습니다. Process ExplorerProcess Monitor 는 두 가지 다른 유틸리티입니다.
Alois Mahdal

2
Process Explorer에 명령 줄 인터페이스가 있습니까?
Anderson Green

41

동등한 lsof -p pid것은 sysinternals 핸들과 listdll의 결합 된 출력입니다.

handle -p pid
listdlls -p pid

sysinternals로 pid를 찾을 수 있습니다 pslist.


Windows 10과 같은 표준 Windows 설치와 함께 제공됩니까?
Morten

10

Handle 시도하십시오 . FilemonRegmon 은 duce 프로그램 foo가 시스템에 무엇을하는지 알아내는 데에도 좋습니다.


@slipsec FileMon 및 Regmon은 이제 Windows 2000 SP4, Windows XP SP2, Windows Server 2003 SP1 및 Windows Vista로 시작하는 Windows 버전에서 Process Monitor v3.2 로 대체됩니다 .
Lucky

7

lsof에 해당하는 하나 는 Sysinternals의 handlelistdlls 에서 출력을 결합 할 수 있습니다 . 즉,

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

안타깝게도이를 사용하려면 "관리자 권한으로 실행"해야합니다.

또한 listdll핸들 은 연속 테이블과 같은 형식을 생성하지 않으므로 파일 이름을 필터링하면 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가이 파일을 연 파일임을 알 수 있습니다.


5

Unlocker를 사용해보십시오 .

Unlocker 사이트에는 다른 도구와의 비교를 보여주는 멋진 차트 (링크를 따라 아래로 스크롤)가 있습니다. 분명히 그러한 비교는 일반적으로 도구 작성자가 작성하기 때문에 편향되어 있지만 차트에는 적어도 대안을 나열하여 직접 시도해 볼 수 있습니다.


4
Unlocker는 열린 파일이 아닌 잠긴 파일 만 나열합니다. 대부분의 Windows 소프트웨어는 사용하는 DLL을 잠그지 만 문서는 잠급니다.
Tobias

5

파일이 .dll이면 TaskList 명령 줄 앱을 사용하여 누가 파일을 열 었는지 확인할 수 있습니다 .

TaskList /M nameof.dll

3

"OpenFiles"프로그램이 있는데, Windows 7의 일부인 것 같습니다. 원하는 작업을 수행 할 수있는 것 같습니다. 파일 공유를 통해 원격 사용자가 연 파일을 나열 할 수 있으며 "openfiles / Local on"을 호출하고 시스템을 다시 시작한 후 로컬로 열린 파일을 표시 할 수 있어야합니다. 후자는 성능 페널티가 있다고합니다.


1
나는 누가 내가 폴더를 삭제하지 못하게하고 다시 시작을 피할 수 있는지 알아 내기위한 방법을 찾기 위해 여기에 왔습니다. 그리고 나는 내가 필요한 명령에 구성 설정이 필요하다는 것을 알았습니다. 창문이 얼마나 아주.
Gus 2016

여러분, openfiles 명령을 실행하는 데 오랜 시간이 걸립니다 (약 4 분)!
NH.

2

"컴퓨터"(또는 "내 컴퓨터") 아이콘을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 "관리"를 선택하면 컴퓨터 관리 콘솔로 이동합니다.

시스템 도구 \ 공유 폴더 아래에 "파일 열기"가 있습니다. 이것은 아마도 당신이 원하는 것에 가깝지만, 파일이 네트워크 공유에 있다면 파일이있는 서버에서도 같은 일을해야합니다.


3
이것은 다른 네트워크 사용자가 연 공유 파일 만 표시합니다. 로컬 시스템에서 열려있는 파일을 찾는 데 도움이되지 않습니다. 서버에서이 작업을 수행하면 파일을 연 사용자는 알 수 있지만 해당 사용자 컴퓨터의 프로그램은 알 수 없습니다. Process Explorer (@JayHofacker가 언급했듯이)는 저에게 잘 맞았습니다.
tomlogic

2

Process Explorer를 사용하여 프로세스 ID를 찾으십시오. 그런 다음 Handle 을 사용 하여 열려있는 파일을 찾습니다.

예 : 핸들 -p

Microsoft 자체의 유틸리티를 사용하고 있기 때문에이 방법이 마음에 듭니다.


우리는 사람들에게 소스 코드를 가지고있는 경우에만
graywolf

2

에서 OpenedFilesView , 옵션 메뉴에서, "연락처보기 네트워크 파일"이라는 메뉴 항목이있다. 이 기능을 활성화하면 앞서 언급 한 유틸리티를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.