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


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

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

Важно!

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

 

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

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

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

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

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Обозреватель\SyncRootManager\[идентификатор поставщика хранилища]![Идентификатор безопасности Windows]![Идентификатор учетной записи]\DisplayNameResource: указывает на ресурс, в котором оболочка Windows или другие приложения могут получить понятное имя для корневого каталога синхронизации.
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Обозреватель\SyncRootManager\[идентификатор поставщика хранилища]![Идентификатор безопасности Windows]![Идентификатор учетной записи]\IconResource: указывает на ресурс, в котором оболочка Windows или другие приложения могут получить значок для корневого каталога синхронизации.
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Обозреватель\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 add 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 REG_EXPAND_SZ /d %%SystemRoot%%\system32\imageres.dll,-1043 /f

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

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

reg add 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 /t REG_EXPAND_SZ /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\Обозреватель\Desktop\NameSpace\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d MyCloudStorageApp /f

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

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

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Обозреватель\HideDesktopIcons\NewStartPanel /v {0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /t REG_DWORD /d 0x1 /f