集成云存储提供程序

拥有云存储提供商时,应执行几个步骤,以便为用户提供一致且首选的体验。 这两项操作是注册为同步根提供程序,并将应用程序集成到导航窗格的根级别。

重要

仅支持从 Windows 10 开始集成云存储提供程序。

 

第一件事是注册为同步根提供程序。 这样,Windows Shell 就可以了解你的应用程序,并且你的应用程序将负责同步同步根目录下的文件。 这还会让其他应用程序知道你正在同步这些文件,以便它们能够做出适当的响应。 然后,其他应用程序可以使用 StorageFile.Provider 获取应用程序的 DisplayNameID

若要注册为同步根提供程序,需要创建多个注册表项。 在提供键值对列表之前,下面是一些应替换为自己的应用程序数据的占位符。

  • [存储提供程序 ID]:云存储提供程序的名称。 无论应用程序的版本如何,此名称都应保持一致。 OneDrive 就是其中一个示例。
  • [Windows SID]:标识用户的唯一 Windows SID。 如果你的应用支持在一台计算机上为多个用户进行多次安装,则此部分是必需的。
  • [帐户 ID]:此用户的当前帐户的服务提供程序标识符。 某些提供程序需要为用户提供多个同步根的能力。 其中一个示例是工作和个人帐户。 使用 帐户 ID 可以为一个用户注册多个帐户。 如果提供程序支持每个用户多个同步根,则需要此部分。

这些占位符组合在一起构成同步根 ID。形成同步根 ID 时,必须在每个占位符之间放置 一个 ! 字符。下面是需要创建的键值对。

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[存储提供程序 ID][Windows SID][帐户 ID]\DisplayNameResource :指向 Windows Shell 或其他应用程序可在其中获取同步根的用户友好名称的资源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[存储提供程序 ID][Windows SID][帐户 ID]\IconResource :指向 Windows Shell 或其他应用程序可在其中获取同步根图标的资源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[存储提供程序 ID][Windows SID][帐户 ID]\UserSyncRoots\[Windows SID] :同步根位于磁盘上的位置。

除了注册为同步根提供程序外,你还希望用户能够轻松访问你提供的数据。 文件资源管理器命名空间旨在提供这种轻松访问的方法。 为提供程序创建命名空间扩展并将其合并到文件资源管理器窗口中将允许用户与服务的根级别进行交互,就像他们习惯于与其他文件资源管理器项一样。 本主题说明如何扩展 文件资源管理器 命名空间,以便提供程序显示在导航窗格中的根级别。

文件资源管理器窗口的导航窗格是左侧显示的窗口部分。 在下图中,可以看到此用户的命名空间结构。 导航窗格上的根级别包括 OneDrive此电脑网络的对象。 按照以下步骤将扩展添加到同一级别。

导航窗格

若要将扩展添加到导航窗格,在编辑注册表之前,需要具有以下项:

  • 一个文件系统文件夹,其中包含要向用户显示的数据。

  • 将显示在导航窗格中的云服务的名称。 如果服务支持多个帐户,这也可能是实例的名称。

  • 应用程序的可识别图标。

  • 应用程序的 CLSID。 为应用程序生成 CLSID 的一种方法是使用 Uuidgen.exe。 有关 CLSID 的详细信息,请参阅 CLSID 密钥。

以下步骤修改注册表,以便获取文件资源管理器命名空间中的必要信息。 具体步骤执行三项操作。

  • 在 CLSID 的注册表中创建键,其中包括扩展的名称和图标的值,以及定义其行为的其他信息。

  • 将扩展配置为集成到导航窗格中的正确位置和适当的可见性。

  • 将扩展配置为在导航窗格中具有元素的预期行为。

这些说明专门使用 reg.exe 命令,但你可以使用所选的任何注册表编辑工具。 甚至可以将这些步骤集成到以编程方式更新注册表的安装程序中。

Instructions

步骤 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模拟默认窗口文件夹。 仅当有特定原因且熟悉命名空间扩展时才更改此值。

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

步骤 6:定义实例对象

指示命名空间扩展的功能应与 文件资源管理器 中的其他文件夹结构一样。 有关 shell 实例对象的详细信息,请参阅 使用 Shell 实例对象创建 Shell 扩展

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_DIRECTORYFILE_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:设置适当的 shell 标志

设置将命名空间扩展固定到文件资源管理器树所需的一些标志。

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

步骤 10:设置适当的标志以控制 shell 行为

设置相应的 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