Integrar um provedor de armazenamento em nuvem
Quando você tem um provedor de armazenamento em nuvem, há algumas etapas que você deve seguir para fornecer uma experiência consistente e preferencial para o usuário. Essas duas coisas estão se registrando como um provedor raiz de sincronização e integrando seu aplicativo ao nível raiz do Painel de Navegação.
Importante
Só há suporte para a integração do provedor de armazenamento em nuvem a partir do Windows 10.
A primeira coisa é registrar-se como um provedor raiz de sincronização. Isso permite que o Windows Shell saiba sobre seu aplicativo e que seu aplicativo será responsável por sincronizar arquivos na raiz de sincronização. Isso também permitirá que outros aplicativos saibam que você está sincronizando esses arquivos para que eles possam responder adequadamente. Outros aplicativos podem usar StorageFile.Provider para obter o DisplayName e a ID do seu aplicativo.
Para se registrar como um provedor raiz de sincronização, você precisará criar várias entradas do Registro. Antes de fornecer a lista de pares chave-valor, aqui estão alguns espaços reservados que você deve substituir por seus próprios dados de aplicativo.
- [ID do provedor de armazenamento]: o nome do seu provedor de armazenamento em nuvem. Esse nome deve ser consistente independentemente da versão do aplicativo. Um exemplo disso é o OneDrive.
- [SID do Windows]: o SID exclusivo do Windows que identifica o usuário. Se o aplicativo der suporte a várias instalações para vários usuários em um único computador, essa parte será necessária.
- [ID da conta]: o identificador do provedor de serviços para a conta atual desse usuário. Alguns provedores exigem a capacidade de fornecer várias raízes de sincronização para um usuário. Um exemplo disso é um trabalho e um conta pessoal. A ID da Conta permite que você tenha várias contas registradas para um usuário. Se o provedor der suporte a várias raízes de sincronização por usuário, essa parte será necessária.
Esses espaços reservados são combinados para formar a ID raiz de sincronização. Você deve colocar um caractere ! entre cada um dos espaços reservados ao formar a ID raiz de sincronização. Aqui estão os pares chave-valor que precisam ser criados.
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ID do provedor de armazenamento]![SID do Windows]![ID da conta]\DisplayNameResource: aponta para o recurso em que o Shell do Windows ou outros aplicativos podem obter um nome amigável para sua raiz de sincronização.
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ID do provedor de armazenamento]![SID do Windows]![ID da conta]\IconResource: aponta para o recurso em que o Shell do Windows ou outros aplicativos podem obter um ícone para a raiz de sincronização.
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ID do provedor de armazenamento]![SID do Windows]![ID da conta]\UserSyncRoots\[SID do Windows] : o local no disco em que a raiz de sincronização está localizada.
Além de se registrar como um provedor raiz de sincronização, você também deseja que os usuários tenham acesso fácil aos dados fornecidos. O namespace Explorador de Arquivos foi projetado para fornecer um método para esse acesso fácil. Criar uma extensão de namespace para seu provedor e incorporá-la à janela Explorador de Arquivos permitirá que os usuários interajam com o nível raiz de seus serviços, assim como estão acostumados com outros itens Explorador de Arquivos. Este tópico explica como estender o namespace Explorador de Arquivos para que seu provedor apareça no nível raiz no Painel de Navegação.
O Painel de Navegação da janela Explorador de Arquivos é a parte da janela exibida no lado esquerdo. Na imagem abaixo, você pode ver a estrutura do namespace para esse usuário. O nível raiz no Painel de Navegação inclui os objetos para OneDrive, Este COMPUTADOR e Rede. Seguir estas etapas adicionará sua extensão ao mesmo nível.
Para adicionar sua extensão ao Painel de Navegação, você precisará ter o seguinte antes de editar o registro:
Uma pasta do sistema de arquivos que contém os dados a serem exibidos para o usuário.
Nome do serviço de nuvem que aparecerá no Painel de Navegação. Isso também pode ser o nome da instância se o serviço der suporte a várias contas.
Ícone identificável para seu aplicativo.
Um CLSID para seu aplicativo. Uma maneira de gerar um CLSID para seu aplicativo é usar o Uuidgen.exe. Consulte Chave CLSID para obter mais informações sobre CLSID.
As etapas a seguir modificam o registro para obter as informações necessárias no namespace Explorador de Arquivos. As etapas específicas fazem três coisas.
Crie chaves no registro para seu CLSID que inclua valores para o nome e o ícone para sua extensão, bem como outras informações que definem seu comportamento.
Configure sua extensão para ser integrada ao Painel de Navegação no local adequado e com a visibilidade adequada.
Configure sua extensão para ter o comportamento esperado para um elemento no painel de navegação.
Essas instruções usam especificamente o comando reg.exe , no entanto, você pode usar qualquer ferramenta de edição do Registro de sua escolha. Você pode até mesmo integrar essas etapas a um instalador que atualiza o registro programaticamente.
Instruções
Etapa 1: Adicionar seu CLSID e nomear sua extensão
Adicione o nome da extensão ao registro em HKEY_CURRENT_USER. Você também adicionará o identificador exclusivo para essa extensão. É possível adicionar mais de uma extensão por usuário, mas nesse caso você precisará de um nome e identificador exclusivos para cada extensão. Esse nome e identificador devem ser consistentes ao longo do restante dessas etapas. Neste exemplo, o nome é MyCloudStorageApp.
Importante
O identificador fornecido (0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3) nessas etapas é usado apenas como um exemplo. Você precisará alterar isso para seu CLSID exclusivo.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d "MyCloudStorageApp" /f
Etapa 2: definir a imagem para o ícone
Forneça o caminho para o ícone que deve ser exibido no Painel de Navegação. No exemplo abaixo, 1043 refere-se ao identificador de recurso do ícone na DLL indicada.
Importante
Você precisa atualizar o caminho da imagem. Ele deve apontar para um caminho genérico em que seu aplicativo instalou uma imagem.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\DefaultIcon /ve /t REG_EXPAND_SZ /d %%SystemRoot%%\system32\imageres.dll,-1043 /f
Etapa 3: Adicionar sua extensão ao Painel de Navegação e torná-la visível
Definir esse valor como 0x1 indica que a extensão deve ser fixada. Isso garantirá que ele seja mostrado aos usuários por padrão. A configuração padrão para um usuário é que apenas itens fixados serão mostrados no Painel de Navegação. Um usuário pode alterar essa configuração clicando com o botão direito do mouse no Painel de Navegação e selecionando Mostrar todas as pastas. Se você não quiser fixar sua extensão, poderá definir esse valor como 0x0. Isso não removerá sua extensão, mas apenas impedirá que ela seja exibida para o usuário por padrão.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v System.IsPinnedToNameSpaceTree /t REG_DWORD /d 0x1 /f
Etapa 4: definir o local para sua extensão no Painel de Navegação
Isso é fundamental para garantir que o Painel de Navegação forneça uma experiência consistente para o usuário.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v SortOrderIndex /t REG_DWORD /d 0x42 /f
Etapa 5: forneça a dll que hospeda sua extensão.
Use o shell32.dll para emular pastas padrão do Windows. Altere isso somente se você tiver um motivo específico para fazer isso e estiver familiarizado com extensões de namespace.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\InProcServer32 /ve /t REG_EXPAND_SZ /d %%systemroot%%\system32\shell32.dll /f
Etapa 6: Definir o objeto de instância
Indique que a extensão de namespace deve funcionar como outras estruturas de pastas de arquivos no Explorador de Arquivos. Para obter mais informações sobre objetos de instância do shell, consulte Criando extensões de shell com objetos de instância do 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
Etapa 7: fornecer os atributos do sistema de arquivos da pasta de destino
Isso é necessário para garantir que o Explorador de Arquivos forneça uma experiência consistente e esperada para os usuários. Esse comando define FILE_ATTRIBUTE_DIRECTORY e FILE_ATTRIBUTE_READONLY, ambos constantes de atributo de arquivo.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v Attributes /t REG_DWORD /d 0x11 /f
Etapa 8: definir o caminho para a raiz de sincronização
Defina o caminho para a raiz de sincronização.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v TargetFolderPath /t REG_EXPAND_SZ /d %%USERPROFILE%%\MyCloudStorageApp /f
Etapa 9: Definir sinalizadores de shell apropriados
Defina alguns sinalizadores necessários para fixar sua extensão de namespace na árvore de Explorador de Arquivos.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v FolderValueFlags /t REG_DWORD /d 0x28 /f
Etapa 10: definir os sinalizadores apropriados para controlar o comportamento do shell
Defina os sinalizadores SFGAO apropriados. Os sinalizadores relevantes são SFGAO_CANCOPY, SFGAO_CANLINK, SFGAO_STORAGE, SFGAO_HASPROPSHEET, SFGAO_STORAGEANCESTOR, SFGAO_FILESYSANCESTOR, SFGAO_FOLDER, SFGAO_FILESYSTEM e SFGAO_HASSUBFOLDER.
reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v Attributes /t REG_DWORD /d 0xF080004D /f
Etapa 11: Registrar sua extensão na raiz do namespace
Configure a extensão de namespace para ser um filho da pasta da área de trabalho.
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d MyCloudStorageApp /f
Etapa 12: Ocultar sua extensão da Área de Trabalho
É importante que sua extensão apareça apenas no Painel de Navegação do Explorador de Arquivos. Uma extensão de namespace não funciona como um atalho normal. Portanto, você não deve usar esse método para criar um atalho da área de trabalho.
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /t REG_DWORD /d 0x1 /f