Указание расположения расширения пространства имен

Корень расширения пространства имен обычно отображается windows Обозреватель в виде папки как в представлении дерева, так и в представлении папок. Чтобы windows Обозреватель отображать файлы и вложенные папки расширения, необходимо указать расположение корневой папки в иерархии пространства имен оболочки. Это расположение называется точкой соединения.

Использование виртуальных папок в качестве точек соединения

Самый простой способ определить точку соединения расширения — сделать корневую папку подпапкой системной виртуальной папки. Этот тип точки соединения называется виртуальной точкой соединения. Папки "Рабочий стол" и "Мой компьютер" являются типичными расположениями для виртуальных точек соединения, но вы также можете определить виртуальную точку соединения на удаленном компьютере или в папках "Мои сетевые расположения", "Интернет Обозреватель" и панель управления.

Чтобы определить виртуальную точку соединения, создайте подраздел ключа, который представляет соответствующую виртуальную папку, и назовите ее строковой формой идентификатора класса расширения (CLSID). Зарегистрированный ИДЕНТИФИКАТОР CLSID будет выглядеть следующим образом.

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  Virtual Folder Name
                     NameSpace
                        {Extension CLSID}
                           (Default) = Junction Point Name

Имя виртуальной папки является одним из подразделов в следующей таблице.

Расположение Имя виртуальной папки
Панель управления ControlPanel
Персональный компьютер Рабочий стол
Вся сеть NetworkNeighborhood\Вся сеть
Мой компьютер MyComputer
Мои сетевые расположения NetworkNeighborhood
Удаленный компьютер RemoteComputer
Файлы пользователей UsersFiles

 

Удаленные расширения необходимо инициализировать с помощью IRemoteComputer.

Использование папок файловой системы в качестве точек соединения

Существует два способа определения папок файловой системы в качестве точек соединения. Самый простой подход — создать папку в соответствующем расположении и добавить точку к имени папки, за которой следует строковая форма CLSID расширения. В Windows Обозреватель будет отображаться только имя папки. В следующем примере создается точка соединения с отображаемым именем MyFolder.

MyFolder.{Extension CLSID}

Кроме того, можно определить папку с обычными именами в качестве точки соединения, выполнив следующие действия:

  • Сделать папку доступной только для чтения.
  • Сделать папку системной, вызвав PathMakeSystemFolder.
  • Поместите скрытый файл Desktop.ini в папку, содержащую ИДЕНТИФИКАТОР CLSID расширения.

Desktop.ini — это стандартный текстовый файл, который можно добавить в любую папку для настройки определенных аспектов поведения папки. Общие сведения об использовании этого файла см. в статье Настройка папок с помощью Desktop.ini. Чтобы определить папку в качестве точки соединения, используется [. Раздел ShellClassInfo] Desktop.ini должен содержать CLSID расширения следующим образом:

[.ShellClassInfo]
CLSID={Extension CLSID}

Открытие представления расширения пространства имен

Когда пользователь переходит в точку соединения, Windows Обозреватель автоматически создает представление корневой папки. Вы также можете создать представление, явно запустив Explorer.exe с CLSID расширения в качестве аргумента. Например, этот подход можно использовать для запуска представления расширения из контекстного меню или ярлыка. Например, чтобы запустить представление MyExtension, включающее представление в виде дерева, можно использовать следующую командную строку.

%SystemRoot%\Explorer.exe /e,::{MyExtension CLSID}

Для запуска представления объекта в расширении можно использовать альтернативную командную строку. Эта функция была бы полезна, например, для расширения, которое использует представление папок, чтобы пользователи могли просматривать содержимое одного из нескольких сжатых файлов.

%SystemRoot%\Explorer.exe /e,::{MyExtension CLSID},objectname

Параметр objectname — это имя просматриваемого объекта. Windows Обозреватель преобразует имя в соответствующее значение PIDL и передает его в метод IPersistFolder::Initialize нового объекта папки.

Примечание

Строке CLSID должна предшествовать пара двоеточий (::) или команда завершится ошибкой. Флаг косой черты-e (/e), используемый в двух примерах командных строк, показанных ранее, предписывает Windows Обозреватель отображать представление в виде дерева. Флаг должен быть отделен от двух двоеточий запятой. Если представление в виде дерева не требуется, опустите флаг /e и запятую.