특정 폴더에서만 파일 경로 앞에 잘못된 문자( \\?\
)가 나타나는 이유는 무엇입니까?
잘못된 파일 경로:
\\?\D:\computerfiles...
잘못된 경로의 파일은 원본 폴더에서 열 수 없습니다.
문자 \\?\
는 원래 위치에 있을 때 일부 파일에만 표시되고, 파일을 다른 폴더에 복사하면 표시되지 않습니다.
열리지 않는 파일(예: 이미지)을 찾고 속성을 확인하여 잘못된 접두어를 감지할 때만 이 메시지가 표시됩니다.
또한 잘못된 접두사가 있는 모든 경로를 어떻게 찾을 수 있습니까?
답변1
불법 캐릭터는 아닙니다. 이는 Windows가 경로 맹글링을 끄라는 신호입니다. 보다 긴 경로를 가질 수 있습니다 MAX_PATH
.
Windows API의 파일 I/O 기능은 이름을 NT 스타일 이름으로 변환하는 과정의 일부로 "/"를 "\"로 변환합니다. 단, 다음 섹션에 설명된 대로 "\\?\" 접두사를 사용하는 경우는 제외됩니다.
Windows API에는 최대 총 경로 길이 32,767자에 대해 확장 길이 경로를 허용하는 유니코드 버전이 있는 많은 함수가 있습니다. 이 유형의 경로는 백슬래시로 구분된 구성 요소로 구성되며, 각 구성 요소는 GetVolumeInformation 함수의 lpMaximumComponentLength 매개 변수에 반환된 값(이 값은 일반적으로 255자)입니다. 확장 길이 경로를 지정하려면 "\\?\" 접두사를 사용합니다. 예를 들어 "\\?\D:\매우 긴 경로"입니다.
Windows 탐색기가 어느 시점에서 긴 경로에 액세스할 수 있도록 활성화된 것 같습니다. 이 과정에서 파일/폴더 속성 페이지의 "위치" 필드에서 다음을 볼 수 있습니다.
- "일반" 경로(충분히 짧은 경우)
- 8.3 이름 경로(예:
C:\WHATEV~1\...
이 파일 시스템에 8.3 이름이 있고 충분히 짧은 경우) - 그렇지 않으면 확장된 길이 경로
tl;dr: 경로가 너무 깁니다.