Windows 파일 확장자, 애플리케이션 간 연결

Windows 파일 확장자, 애플리케이션 간 연결

Windows OS 는 기본 애플리케이션이라는 기능을 제공하며, 특정 확장자의 파일 타입에 대해 지정된 프로그램을 연결하여 실행한다. 예를 들어 .pdf 확장자 파일을 더블 클릭하면, 사용자 설정에 따라 Acrobat Reader 에 의해 문서가 로딩 될 수도 있고, ezPDF 에 의해 로딩될 수도 있다.

이러한 정보는 다음과 같은 Windows 레지스트리 경로에 저장된다.

  • HKEY_CLASSES_ROOT\Software\Classes
  • HKEY_LOCAL_MACHINE\Software\Classe
  • HKEY_CURRENT_USER\Software\Classes

cmd 의 assoc명령어HKEY_LOCAL_MACHINE\Software\Classes 경로에서 파일 확장자와 연결된 파일 유형을 찾아 출력한다.

ftype 명령어HKEY_LOCAL_MACHINE\Software\Classes 경로에서 지정된 파일 유형을 실행하는 실행 명령어를 출력한다.

Windows OS 가 레지스트리를 탐색하며 파일 타입을 찾는 과정을 보여준다.

  1. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[EXT]\UserChoice\ProgId 경로에서 ProgId를 찾는다. 존재하지 않으면 5번으로 이동한다.
  2. ProgId 가 파일 클래스(e.g. Python.File ) 이면 6번으로 이동한다. 만약 ProgId 가 애플리케이션 ID(e.g. Applications\SciTE.exe) 이면 3번으로 이동한다
  3. Application ID 값을 따라 커맨드 명령어를 찾는다. 예를 들어 Application ID 값이 Applications\SciTE.exe 일 때 커맨드 명령어는 HKEY_CLASSES_ROOT\Applications\SciTE.exe\shell\open\command 에 존재한다.
  4. 종료.
  5. Computer\HKEY_CLASSES_ROOT\[EXT] 레지스트리 값에서 파일 클래스의 기본 값을 찾는다. e.g. Python.File
  6. 파일 클래스를 이용하여 기본 커맨드 값을 찾는다. 예를 들어 파일 클래스 값이 Python.File 이면 HKEY_CLASSES_ROOT\Python.File\shell 를 찾는다.
  7. 6번에서 찾는 레지스트 중 edit Key의 값은 파일을 실행했을 때 기본으로 실행되는 명령어를 보여준다. edit 이외의 명령어는 탐색기에서 파일을 우클릭했을 때 보여지는 다른 동작들을 지정한다.