반응형

윈도우 환경에서 프로그램을 만들다보면 긴 이름[각주:1]제대로 인식하지 못하는 경우를 종종 마주칠 수 있다.

 

물론, 대부분의 경우는 그럭저럭 우회가 가능하다.

특정 버전 이전의 윈도우에서는 레지스트리에 값을 기록하고, 파일명 앞에 \\?\를 붙이는 것으로서 해결이 가능하다.

 

하지만, 좀 더 복잡한 상황이 되면 얘기가 달라진다.

Shell Path Handling Function들의 경우 관련 구조체에 MAX_PATH로 정의되어있는 값들이 있다.

예컨데, 아래와 같은 구조체가 이미 정의되어있기 때문에 파일 탐색 등에서는 근본적인 해결이 쉽지 않다.

 

typedef struct _WIN32_FIND_DATAW {
  DWORD    dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  DWORD    nFileSizeHigh;
  DWORD    nFileSizeLow;
  DWORD    dwReserved0;
  DWORD    dwReserved1;
  WCHAR    cFileName[MAX_PATH];
  WCHAR    cAlternateFileName[14];
  DWORD    dwFileType; // Obsolete. Do not use.
  DWORD    dwCreatorType; // Obsolete. Do not use
  WORD     wFinderFlags; // Obsolete. Do not use
} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;

 

팟플레이어 역시 같은 문제가 있어 개발자에게 문의를 하였으나, 해결이 불가능하다는 답을 받았다.

 

 

단순하게 파일을 읽고 재생하는 것뿐만 아니라 자막 파일을 탐색하는 등의 작업이 필요하기 때문에 해결이 불가능한 것.

 

 

  1. 드라이브명을 포함한 전체 길이가 260자 초과하는 이름 [본문으로]
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band