Поделиться через


Интеграция поставщика облачного хранилища

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

Важный

Интеграция поставщика облачного хранилища поддерживается только в Windows 10.

 

Первое, что нужно зарегистрировать в качестве корневого поставщика синхронизации. Это позволяет Оболочке Windows знать о приложении и что ваше приложение будет отвечать за синхронизацию файлов в корневом каталоге синхронизации. Это также позволит другим приложениям знать, что вы синхронизируете эти файлы, чтобы они могли реагировать соответствующим образом. Затем другие приложения могут использоватьstorageFile.Provider, чтобы получить DisplayName и идентификатор приложения.

Чтобы зарегистрировать в качестве корневого поставщика синхронизации, необходимо создать несколько записей реестра. Перед предоставлением списка пар "ключ-значение" ниже приведены некоторые заполнители, которые следует заменить собственными данными приложения.

  • [идентификатор поставщика хранилища]: имя поставщика облачного хранилища. Это имя должно быть согласовано независимо от версии приложения. Примером этого является OneDrive.
  • [идентификатор безопасности Windows]: уникальный идентификатор безопасности Windows, определяющий пользователя. Если приложение поддерживает несколько установок для нескольких пользователей на одном компьютере, это необходимо.
  • [идентификатор учетной записи]: идентификатор поставщика услуг для текущей учетной записи этого пользователя. Для некоторых поставщиков требуется возможность предоставления нескольких корней синхронизации для пользователя. Одним из примеров этого является работа и личная учетная запись. Идентификатор учетной записи позволяет зарегистрировать несколько учетных записей для одного пользователя. Если поставщик поддерживает несколько корней синхронизации для каждого пользователя, это необходимо.

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

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[идентификатор поставщика хранилища]![идентификатор безопасности Windows]![идентификатор учетной записи]\DisplayNameResource: указывает на ресурс, в котором оболочка Windows или другие приложения могут получить понятное имя для корневого каталога синхронизации.
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[идентификатор поставщика хранилища]![идентификатор безопасности Windows]![идентификатор учетной записи]\IconResource: указывает на ресурс, в котором оболочка Windows или другие приложения могут получить значок для корневого каталога синхронизации.
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[идентификатор поставщика хранилища]![идентификатор безопасности Windows]![идентификатор учетной записи]\UserSyncRoots\[идентификатор безопасности Windows]: расположение на диске, где находится корневой каталог синхронизации.

Кроме регистрации в качестве корневого поставщика синхронизации, вы также хотите, чтобы пользователи имели простой доступ к предоставленным данным. Пространство имен проводника предназначено для предоставления метода для этого простого доступа. Создание расширения пространства имен для поставщика и включение его в окно проводника позволит пользователям взаимодействовать с корневым уровнем служб так же, как и с другими элементами проводника. В этом разделе объясняется, как расширить пространство имен проводника, чтобы ваш поставщик появился на корневом уровне в области навигации.

Область навигации окна проводника — это часть окна, отображаемого слева. На рисунке ниже вы увидите структуру пространства имен для этого пользователя. Корневой уровень в области навигации включает объекты для OneDrive, этот компьютери сетевых. После выполнения этих действий вы добавите расширение на тот же уровень.

Чтобы добавить расширение в область навигации, перед редактированием реестра потребуется следующее:

  • Папка файловой системы, содержащая данные для отображения пользователю.

  • Имя облачной службы, которая появится в области навигации. Это также может быть имя экземпляра, если служба поддерживает несколько учетных записей.

  • Идентифицируемый значок приложения.

  • CLSID для приложения. Одним из способов создания CLSID для приложения является использование Uuidgen.exe. Дополнительные сведения о CLSID см. в ключей CLSID.

Следующие шаги изменяют реестр, чтобы получить необходимые сведения в пространстве имен проводника. Конкретные действия выполняют три действия.

  • Создайте ключи в реестре для CLSID, включающих значения имени и значка расширения, а также другие сведения, определяющие его поведение.

  • Настройте расширение для интеграции с областью навигации в правильном расположении и с надлежащей видимостью.

  • Настройте расширение для ожидаемого поведения элемента в области навигации.

Эти инструкции специально используют команду reg.exe, однако вы можете использовать любой инструмент редактирования реестра по вашему усмотрению. Вы даже можете интегрировать эти шаги в установщик, который обновляет реестр программным способом.

Резолюция

Шаг 1. Добавление CLSID и имя расширения

Добавьте имя расширения в реестр в HKEY_CURRENT_USER. Вы также добавите уникальный идентификатор для этого расширения. Можно добавить несколько расширений для каждого пользователя, но в этом случае вам потребуется уникальное имя и идентификатор для каждого расширения. Это имя и идентификатор должны быть согласованы в остальных шагах. В этом примере имя — MyCloudStorageApp.

Важный

Предоставленный идентификатор (0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3) в этих шагах используется как пример. Вам потребуется изменить этот параметр на уникальный CLSID.

 

reg добавить HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d "MyCloudStorageApp" /f

Шаг 2. Настройка изображения для значка

Укажите путь к значку, который должен отображаться в области навигации. В приведенном ниже примере 1043 ссылается на идентификатор ресурса для значка в указанной библиотеке DLL.

Важный

Необходимо обновить путь к изображению. Он должен указывать на универсальный путь, в котором приложение установило образ.

 

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\DefaultIcon /ve /t /t /d REG_EXPAND_SZ %%SystemRoot%%\system32\imageres.dll,-1043 /f

Шаг 3. Добавление расширения в область навигации и его видимость

При задании этого значения значение 0x1 указывает, что расширение должно быть закреплено. Это гарантирует, что оно отображается пользователям по умолчанию. Конфигурация по умолчанию для пользователя заключается в том, что в области навигации будут отображаться только закрепленные элементы. Пользователь может изменить этот параметр, щелкнув правой кнопкой мыши в области навигации и выбрав Показать все папки. Если вы не хотите закрепить расширение, можно задать для этого значения значение 0x0. Это не приведет к удалению расширения, но просто не позволит ему отображаться пользователю по умолчанию.

reg добавить HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v System.IsPinnedToNameSpaceTree /t REG_DWORD /d 0x1 /f

Шаг 4. Настройка расположения расширения в области навигации

Это важно, чтобы убедиться, что панель навигации обеспечивает согласованный интерфейс для пользователя.

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v SortOrderIndex /t REG_DWORD /d 0x42 /f

Шаг 5. Укажите библиотеку DLL, в которую размещается расширение.

Используйте shell32.dll для эмуляции папок Windows по умолчанию. Измените это только в том случае, если у вас есть определенная причина для этого и знакомы с расширениями пространства имен.

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\InProcServer32 /ve /REG_EXPAND_SZ t /d /d %%systemroot%%\system32\shell32.dll /f

Шаг 6. Определение объекта экземпляра

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

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance /v CLSID /t REG_SZ /d {0E5AAE11-A475-4c5b-AB00-C66DE400274E} /f

Шаг 7. Предоставление атрибутов файловой системы целевой папки

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

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v Attributes /t REG_DWORD /d 0x11 /f

Шаг 8. Настройка пути к корневому каталогу синхронизации

Задайте путь для корневого каталога синхронизации.

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v TargetFolderPath /t REG_EXPAND_SZ /d %%USERPROFILE%%\MyCloudStorageApp /f

Шаг 9. Установка соответствующих флагов оболочки

Задайте некоторые флаги, необходимые для закрепления расширения пространства имен в дереве проводника.

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v FolderValueFlags /t REG_DWORD /d 0x28 /f

Шаг 10. Настройка соответствующих флагов для управления поведением оболочки

Задайте соответствующие флаги SFGAO. Соответствующие флаги: SFGAO_CANCOPY, SFGAO_CANLINK, SFGAO_STORAGE, SFGAO_HASPROPSHEET, SFGAO_STORAGEANCESTOR, SFGAO_FILESYSANCESTOR, SFGAO_FOLDER, SFGAO_FILESYSTEM и SFGAO_HASSUBFOLDER.

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v Attributes /t REG_DWORD /d 0xF080004D /f

Шаг 11. Регистрация расширения в корневом каталоге пространства имен

Настройте расширение пространства имен дочерним элементом папки рабочего стола.

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d MyCloudStorageApp /f

Шаг 12. Скрытие расширения на рабочем столе

Важно, чтобы расширение отображалось только в области навигации проводника. Расширение пространства имен не работает как обычное сочетание клавиш. Поэтому этот метод не следует использовать для создания ярлыка на рабочем столе.

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /t REG_DWORD /d 0x1 /f