AI VIDEO BRIEFING

윈도우 "파일이 사용 중" 오류의 원인: 파일 핸들과 Process Explorer 정리

앱을 닫았는데도 윈도우가 파일이 사용 중이라고 하는 이유를 파일 핸들 관점에서 설명합니다. 백신 검사·네트워크 참조·DLL 매핑 등 흔한 원인과 Process Explorer로 확인하는 방법, 이름 변경 우회책까지 정리했습니다.

앱을 껐는데도 윈도우가 "파일이 사용 중"이라는 이유 영상 대표 이미지

핵심 메시지

  • 파일이 "사용 중"이라는 것은 어떤 프로세스가 그 파일에 대한 핸들을 잡고 있다는 뜻이다.
  • 앱을 종료해도 파일이 열려 있을 수 있는데, 백신 검사나 다른 시스템의 네트워크 참조가 흔한 원인이다.
  • SysInternals의 Process Explorer로 특정 핸들을 검색해 어떤 프로세스가 왜 파일을 잡고 있는지 확인할 수 있다.
  • 파일이 DLL로 메모리에 매핑되면 파일 핸들로 보이지 않으며, 이때는 해당 프로세스를 종료해야 삭제할 수 있다.

쉽게 이해하기

이 영상에서 발표자는 사람들이 자주 겪는 "파일이 사용 중"이라는 상황을 파일 핸들 개념으로 풀어 설명한다. 그는 1990년대에 같은 문제를 겪고 Handle이라는 도구를, 이어 Process Explorer라는 도구를 직접 만들었다고 소개한다. 이 도구들로 특정 핸들을 찾아 애플리케이션 밑에서 닫아 버리거나, 어떤 프로세스가 파일을 잡고 있는지 확인한 뒤 그 프로세스를 종료할 수 있다.

파일을 열고 있다고 생각한 앱을 종료해도 파일이 여전히 열려 있는 경우가 있다. 발표자는 흔한 원인으로 두 가지를 든다. 하나는 백신이 시스템 컨텍스트에서 그 파일을 검사하며 잡고 있는 경우이고, 다른 하나는 네트워크를 통해 다른 시스템의 어떤 프로세스가 그 파일을 참조하고 있는 경우다.

이럴 때는 SysInternals의 Process Explorer로 해당 핸들을 검색하면 파일이 왜 열려 있는지, 그리고 그것이 시스템 컨텍스트인지 아닌지를 정확히 파악할 수 있다고 설명한다.

윈도우의 미묘한 특성도 하나 짚는다. 파일이 프로세스에 DLL로 로드되면 파일 핸들이 아니라 메모리 내 참조로 나타나기 때문에 핸들 목록에는 보이지 않는다. 파일이 어떤 프로세스의 주소 공간에 매핑된 경우에도 삭제할 수 없으며, 그 애플리케이션을 종료해야 비로소 삭제가 가능하다.

주요 인사이트

  • "파일 잠금"은 운영체제의 고장이 아니라, 여러 프로세스가 파일에 대한 핸들이나 메모리 매핑을 유지하는 정상적인 동작의 결과다.
  • 앱을 닫아도 문제가 남는다면 백신처럼 시스템 컨텍스트에서 돌아가는 프로세스나 원격 시스템의 참조를 의심해 볼 수 있다.
  • DLL로 매핑된 파일은 일반적인 파일 핸들 검색으로는 드러나지 않으므로, 원인을 못 찾을 때 메모리 매핑 가능성을 함께 고려해야 한다.
  • 발표자가 제시하는 실용적 우회책은 파일 이름을 바꾸는 것이다. 그러면 새 버전의 파일을 그 자리에 넣어 다른 프로세스가 이를 집어 쓰게 할 수 있다.

자주 묻는 질문

앱을 분명히 껐는데도 파일이 사용 중인 이유는?

다른 프로세스가 여전히 그 파일의 핸들을 잡고 있기 때문입니다. 발표자는 백신이 시스템 컨텍스트에서 파일을 검사하는 경우와, 네트워크를 통해 다른 시스템의 프로세스가 파일을 참조하는 경우를 흔한 원인으로 듭니다.

어떤 프로세스가 파일을 잡고 있는지 어떻게 확인하나요?

SysInternals의 Process Explorer로 해당 핸들을 검색하면 어떤 프로세스가 왜 파일을 열고 있는지, 그것이 시스템 컨텍스트인지 여부까지 확인할 수 있습니다.

핸들이 안 보이는데도 파일을 못 지우는 경우가 있나요?

있습니다. 파일이 DLL로 프로세스에 로드되거나 주소 공간에 매핑되면 파일 핸들로 나타나지 않습니다. 이 경우 해당 파일을 매핑한 애플리케이션을 종료해야 삭제할 수 있습니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗
#윈도우#파일핸들#ProcessExplorer#SysInternals#문제해결