Windows ConfidentialWindows 탐색기에서 텍스트를 사용할 수 없는 이유

Raymond Chen

예전에 Send To X PowerToy라는 도구가 있었습니다. 이 도구를 사용하면 파일을 여러 개 선택하여 마우스 오른쪽 단추로 클릭한 다음 Send To Clipboard as Names를 선택하여 파일 이름을 붙여 넣을 수 있습니다. 쉽게 예상할 수 있듯이 이 도구는 선택한 파일의 이름을 클립보드로 보냅니다.

확실히 유용한 PowerToy이기는 했지만, 왜 이런 도구가 필요했을까요? 처음부터 Windows® 탐색기에서 여러 파일을 복사한 다음 해당 파일의 이름만 텍스트로 붙여 넣을 수 있도록 하지 않은 이유는 무엇일까요? 또한 Windows 탐색기에서 마우스로 파일을 끌어서 메모장에 놓는 방법으로 파일 이름만 복사되도록 하지 않은 이유는 무엇일까요?

그렇게 하려고 해 보았지만 잘 되지 않았습니다.

클립보드를 통한 전송이든 끌어서 놓기 기능을 통한 전송이든 모든 데이터 전송은 IDataObject 인터페이스로 표시되는 OLE 데이터 개체를 통해 이루어집니다. 데이터 개체는 다양한 형식을 제공합니다. 텍스트와 비트맵을 비롯한 몇 가지 클립보드 형식은 Windows 초창기부터 지금까지 사용되고 있습니다. 그리고 시간이 지남에 따라 다른 형식이 추가된 것입니다. 파일을 끌어서 놓는 기능이 Windows에 처음 도입되었을 때는 HDROP의 형태였습니다. 예를 들어 DragQueryFile과 같은 함수에 파일을 전달하면 파일 이름을 추출할 수 있었습니다. Windows 탐색기에서 클립보드로 어떤 것을 복사한 경우 얻게 되는 데이터 개체는 앞서 언급한 HDROP, 파일 내용, 파일 그룹 설명자 등을 제공합니다. 그런데 이 데이터 개체가 제공하지 않는 형식 중 하나가 바로 텍스트입니다.

끌어온 것을 놓을 대상(끌어온 개체를 놓을 수 있는 위치)은 사용자가 해당 대상으로 끌어왔거나 끌어서 놓으려는 데이터 개체가 있다는 것을 알게 되면, 데이터 개체에게 '무엇을 갖고 있는지' 묻습니다. 데이터 개체는 자신이 지원하는 모든 형식을 우선 순위에 따라 나열하여 응답합니다. 즉, 해당 데이터 개체의 특징을 가장 잘 나타내는 형식이 가장 먼저 반환됩니다. 그런 다음 그 다음으로 중요한 형식이 순서대로 반환됩니다. 이러한 방식으로 원래 개체의 특징과 가장 거리가 먼 형식이 마지막에 반환됩니다. 예를 들어 Windows 탐색기 창 밖으로 끄는 개체를 나타내는 데이터 개체는 셸 ID 목록을 가장 먼저 제공할 것입니다. 그 이유는 Windows 탐색기 창의 내용을 거의 완벽하게 나타내는 형식이 셀 ID 목록이기 때문입니다. 그 다음으로 파일 그룹 설명자, 파일 내용, 그리고 HDROP가 순서대로 목록에 제공될 것입니다.

1998년에 셸 팀에서는 이 때 제공되는 형식 목록의 맨 끝에 일반 텍스트를 추가하려고 했습니다. 기본적으로 "정말로 필요한 경우 최소한 텍스트(즉, 파일 목록)라도 얻을 수 있도록 한다"는 취지에서 출발한 것입니다. 그런데 문제는 이러한 텍스트 형식에 이끌려 오작동을 일으키는 프로그램이 너무나도 많았다는 데 있습니다. 이러한 프로그램은 제시된 우선 순위는 무시하고 곧바로 텍스트 형식으로 이동하여 단순한 파일 목록을 그대로 사용했습니다. 결과적으로 Windows 탐색기에서 파일을 끌어서 특정 문서에 놓으면 파일 자체가 문서에 삽입되지 않고 단지 파일 이름만 삽입되는 현상이 나타났습니다.

어떻게 해야 했을까요?

응용 프로그램에 미치는 부정적인 영향이 너무 강했기 때문에 이 기능은 제거되었습니다. 따라서 Windows 탐색기에서 파일을 끌어서 다른 곳에 놓거나 Windows 탐색기에서 복사한 파일을 다른 곳에 붙여 넣을 때 셸 데이터 개체는 파일 이름을 텍스트로 제공하지 않습니다.

그러나 Windows Vista®에서는 경로를 텍스트로 복사할 수 있는 방법을 마련함으로써 이 오래된 문제를 바로잡았습니다. Shift 키를 누른 채로 마우스 오른쪽 단추를 클릭하면 확장된 상황에 맞는 메뉴가 표시됩니다. 이 메뉴에 '경로로 복사'라는 새로운 옵션이 나타납니다. 이제 PowerToy는 필요 없습니다.

Raymond Chen은 The Old New Thing 웹 사이트와 동명의 저서(Addison-Wesley, 2007)에서 Windows의 역사와 Win32 프로그래밍에 대해 다루고 있습니다. Chen은 운영 메커니즘 업무를 다른 사람에게 넘겼습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..