Partilhar via


Gerenciando aplicativos padrão

O recurso Definir Acesso a Programas e Predefinições do Computador (SPAD) foi adicionado ao Windows XP e versões posteriores do Windows para gerenciar predefinições por computador. Além do SPAD, o Windows Vista introduziu o conceito de aplicações padrão por utilizador e o item Programas Padrão no Painel de Controlo.

Importante

Este tópico não se aplica ao Windows 10. A maneira como as associações de arquivo padrão funcionam mudou no Windows 10. Para obter mais informações, consulte a seção sobre Alterações na forma como o Windows 10 lida com aplicativos padrão em este post.

 

As configurações padrão por usuário são específicas para uma conta de usuário individual no sistema. Se as configurações padrão por usuário estiverem presentes, elas terão precedência sobre os padrões correspondentes por computador para essa conta. A partir do Windows 8, o sistema de extensibilidade para padrões de tipo de arquivo e protocolo é estritamente por usuário e os padrões por computador são ignorados. O SPAD também foi alterado no Windows 8 para definir padrões por usuário.

  • Em sistemas que executam versões do Windows anteriores ao Windows 8, uma conta de usuário recém-criada recebe padrões por computador até que os padrões por usuário sejam estabelecidos. No Windows Vista e versões posteriores, os usuários podem usar o item Programas Padrão no Painel de Controle para definir ou alterar seus padrões por usuário. Além disso, quando um aplicativo é executado pela primeira vez, os padrões por usuário podem ser definidos usando as diretrizes a seguir na seção Primeira Execução do Aplicativo e Padrões.
  • Em sistemas que executam o Windows 8, uma conta de usuário recém-criada depende de padrões por usuário desde o início e a configuração desses padrões na primeira execução, conforme explicado na seção Application First Run and Defaults não é mais suportada.

Um aplicativo deve se registrar no SPAD e no recurso Programas Padrão para ser oferecido como o programa padrão no Windows Vista e posterior.

Este tópico fornece aos fornecedores independentes de software (ISVs) um guia rápido para as etapas necessárias para registrar e gerenciar padrões de aplicativos no Windows Vista e posterior. São fornecidos links para artigos mais aprofundados sobre o tópico de cada seção.

Item de programas padrão no painel de controle

Programas Padrão é um recurso introduzido no Windows Vista, acessível diretamente do menu Iniciar, bem como do Painel de Controlo. Ele fornece uma nova infraestrutura que funciona com privilégio de usuário padrão (não elevado) e foi projetada para permitir que usuários e aplicativos gerenciem padrões por usuário. Para os usuários, os Programas Padrão fornecem uma maneira unificada e facilmente acessível de gerenciar padrões, associações de arquivos e configurações de Reprodução Automática em todos os aplicativos do sistema. Para aplicativos, usar o escopo por usuário fornecido pelas APIs de Programas Padrão oferece as seguintes vantagens:

  • Sem elevação

    Um aplicativo não precisa elevar seus privilégios para reivindicar padrões.

  • Boa Cidadania

    Em um computador de vários usuários, cada usuário pode selecionar diferentes aplicativos padrão.

  • Gestão Padrão

    As APIs de Programas Padrão oferecem um mecanismo confiável e consistente para autoverificar o status padrão e recuperar configurações perdidas sem recorrer a escrever diretamente no Registro. No entanto, a partir do Windows 8, não recomendamos que os aplicativos consultem o status padrão porque um aplicativo não pode mais alterar as configurações padrão — essas alterações podem ser feitas apenas pelo usuário.

Para permitir que seu aplicativo gerencie padrões de forma eficaz, você deve registrar seu aplicativo como um potencial programa padrão. Para obter detalhes sobre como registrar e usar as APIs de programas padrão, consulte Programas padrão.

Programas padrão também fornece estes dois recursos:

  • da interface do usuário padrão reutilizável

    A interface do usuário dos padrões de programa (Definir seus programas padrão) e associações de arquivo (Associar um tipo de arquivo ou protocolo a um programa) pode ser reutilizada e chamada de dentro de um aplicativo. Isso permite que os aplicativos forneçam uma experiência de usuário padrão para gerenciar padrões e evita que os ISVs tenham que desenvolver uma interface do usuário personalizada ou equivalente.

  • Inclusão de URL e Informações de Marketing

    Como parte da secção Definir os seus programas padrão do item Programas Padrão no Painel de Controlo, um aplicativo pode fornecer informações de marketing e um link para o site do fornecedor. Esse URL é derivado do certificado Authenticode com o qual o aplicativo foi assinado. Isso evita o uso indevido e a substituição não autorizada deste link. Se um aplicativo tiver um certificado Authenticode que inclua uma URL incorporada, a interface do usuário do Windows exibirá essa URL incorporada. Os ISVs devem tirar proveito desse recurso para direcionar os usuários ao seu site para atualizações e outros downloads.

Definir acesso a programas e padrões do computador

Definir Acesso a Programas e Padrões do Computador (SPAD) permite que os administradores gerenciem padrões em todo o computador que são herdados por todos os novos usuários desse computador. Antes do Windows 8, o SPAD também permitia que os administradores reparassem associações de arquivos caso elas fossem quebradas quando os programas fossem removidos do sistema. No entanto, a partir do Windows 8, o SPAD afeta apenas as predefinições específicas do utilizador.

Para obter mais informações sobre como registrar um aplicativo no SPAD, consulte Trabalhando com Definir Acesso a Programas e Padrões de Computador (SPAD) e Registrando Programas com Tipos de Cliente. Alterações específicas e novas recomendações são discutidas nas seções a seguir.

Definindo padrões no SPAD

Os padrões por usuário substituem os padrões por computador.

  • Antes do Windows 8: Os padrões definidos no SPAD (que são por computador) não serão vistos pelos usuários se os padrões correspondentes por usuário forem definidos. Se um usuário não tiver definido um padrão por usuário, o sistema usará o padrão do computador correspondente. Novas contas de usuário em um computador herdam inicialmente os padrões do computador. Na primeira vez que um usuário executa um aplicativo, o aplicativo deve solicitar que o usuário atribua seus padrões por usuário. Consulte primeira execução do aplicativo e os padrões.
  • A partir do Windows 8: Todos os padrões são por usuário e qualquer configuração padrão por computador é ignorada. Os aplicativos não podem mais definir opções padrão, portanto, eles não podem orientar o usuário através da atribuição desses padrões.

Quando uma aplicação anterior ao Windows 8 implementa Definir como o padrão no SPAD, estas diretrizes devem ser seguidas:

  • Os aplicativos devem reivindicar apenas padrões no nível do computador por meio do SPAD.
  • Os aplicativos não devem reivindicar padrões por usuário por meio do SPAD.

Quando uma aplicação do Windows 8 implementa Definir como padrão no SPAD, deve registar os seus tipos de ficheiro e protocolos em Programas predefinidos, usando o mesmo nome da aplicação usado no SPAD. Isso permite que uma alteração no SPAD reflita como uma alteração na entrada de Programas Padrão correspondente para o usuário atual.

Ocultar acesso no SPAD

A opção ocultar acesso para cada possível padrão no SPAD é acessada de duas maneiras:

  • Escolha a categoria de definições não Microsoft, que remove o acesso a todas as definições da Microsoft.
  • Escolha a categoria Personalizada e desmarque a caixa de seleção Ativar acesso a este programa.

Anteriormente, tomar qualquer uma dessas ações removeu todos os pontos de entrada para os aplicativos apropriados no sistema. Diretrizes específicas para esta situação indicam remover atalhos e ícones dos seguintes locais:

  • Versão desktop
  • Menu Iniciar
  • Barra de Início Rápido (somente Windows Vista e versões anteriores)
  • Área de notificação
  • Menus de atalho
  • Faixa de tarefas da pasta

Os fornecedores são incentivados a implementar essas diretrizes na função de retorno de chamada para ocultar o acesso do aplicativo.

Método alternativo de ocultar acesso no SPAD

Para alguns aplicativos herdados, uma implementação completa do Hide Access pode não ser prática. Um método alternativo que alcança o mesmo efeito, mas não é facilmente reversível pelo usuário, é desinstalar o aplicativo. A seguir mostra o comportamento de exemplo e o código de exemplo para implementar isso.

A experiência de utilizador recomendada para esta alternativa é a seguinte:

  • Quando o usuário desmarca a caixa Habilitar acesso a este programa no SPAD, a seguinte interface do usuário é apresentada.

    caixa de diálogo Vista sobre como ocultar o acesso a programas

  • Quando o usuário clica OK, o item Programas e Recursos no Painel de Controle é exibido para que o usuário possa desinstalar o aplicativo.

  • Os usuários do Windows XP devem receber a seguinte caixa de diálogo.

    caixa de diálogo do Windows XP sobre ocultar o acesso a programas

  • Quando o usuário do Windows XP clica em OK, o item Adicionar ou Remover Programas no Painel de Controle é exibido para que o usuário possa desinstalar o aplicativo.

O código a seguir fornece uma implementação reutilizável para o recurso Ocultar acesso, conforme descrito anteriormente. Ele pode ser usado no Windows XP, Windows Vista e Windows 7.

#include <windows.h>
#include <shlwapi.h>
#include <strsafe.h>

PCWSTR c_pszMessage1 = L"To hide access to this program, you need to uninstall it by ";
PCWSTR c_pszMessage2 = L"using\n%s in Control Panel.\n\nWould you like to start %s?";
PCWSTR c_pszApplicationName  = L"Sample App";

int _tmain(int argc, WCHAR* argv[])
{
    OSVERSIONINFO version;
    version.dwOSVersionInfoSize = sizeof(version);

    if (GetVersionEx(&version))
    {
        PCWSTR pszCPLName = NULL;

        if (version.dwMajorVersion >= 6)
        {
            // Windows Vista and later
            pszCPLName = L"Programs and Features";
        }
        else if (version.dwMajorVersion == 5 &&
                 version.dwMinorVersion == 1)
        {
            // XP
            pszCPLName = L"Add/Remove Programs";
        }

        if (pszCPLName != NULL)
        {
            WCHAR szMessage[256], szScratch[256];
            if (SUCCEEDED(StringCchPrintf(szScratch, 
                                          ARRAYSIZE(szScratch), 
                                          c_pszMessage2, 
                                          pszCPLName, 
                                          pszCPLName)))
            {
                if (SUCCEEDED(StringCchCopy(szMessage, 
                                            ARRAYSIZE(szMessage), 
                                            c_pszMessage1)))
                {
                    if (SUCCEEDED(StringCchCat(szMessage, 
                                               ARRAYSIZE(szMessage), 
                                               szScratch)))
                    {
                        if (IDOK == MessageBox(NULL, 
                                               szMessage, 
                                               c_pszApplicationName, 
                                               MB_OKCANCEL))
                        {
                            ShellExecute(NULL, 
                                         NULL, 
                                         L"appwiz.cpl", 
                                         NULL, 
                                         NULL, 
                                         SW_SHOWNORMAL);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

Registrando-se para pontos de entrada de aplicativos

Um aplicativo pode ter muitos pontos de entrada dentro do sistema operacional. Os seguintes locais são recomendados para pontos de entrada:

  • Versão desktop
  • Menu Iniciar
  • Barra de Início Rápido (somente Windows Vista e versões anteriores)
  • Área de notificação
  • Menus de atalho
  • Faixa de tarefas da pasta

Esta secção centra-se nestes domínios específicos:

Abrir com

O menu de atalho Abrir com permite que o usuário selecione um aplicativo que possa lidar com um tipo de arquivo específico. Embora o Open With possa ser usado para abrir um arquivo com um aplicativo uma vez, ele também pode ser usado para definir o padrão para essa extensão de nome de arquivo. Portanto, uma aplicação deve sempre registar-se para Open With para que os utilizadores sejam apresentados a essa aplicação como uma escolha. As aplicações podem registrar tipos de ficheiro e protocolos para Abrir com. As aplicações que registam protocolos na estrutura de Programas Padrão são adicionadas automaticamente às opções Abrir com para protocolos.

Para obter informações sobre como se registrar para Abrir com, consulte Introdução às associações de arquivos.

Menu Iniciar e Barra de Início Rápido

Para se tornarem mais detetáveis para o utilizador, as aplicações podem adicionar atalhos a várias localizações no Windows. O local mais comum para se adicionar um atalho é o menu Iniciar. No Windows Vista e posterior, um aplicativo cria um atalho na pasta oculta %ProgramData%\Microsoft\Windows\Start Menu\Programs para aparecer na lista de programas do menu Iniciar para todos os usuários. Geralmente, um aplicativo adiciona uma subpasta que contém o atalho.

Para programas de navegador e e-mail, o menu Iniciar do Windows Vista também apresenta dois links dedicados fora da lista de programas, canonicamente intitulados Internet e E-mail. Depois que um aplicativo se registra para essas categorias, a estrutura de Programas Padrão pode gerenciar o que é iniciado por meio desses links.

Observação

O Internet e E-mail links dedicados menu Iniciar não estão mais presentes a partir do Windows 7.

 

Para aumentar ainda mais a capacidade de descoberta, os aplicativos também podem adicionar atalhos à área de trabalho e à barra de Início Rápido. Os aplicativos devem pedir permissão ao usuário (geralmente durante a instalação ou na primeira execução) antes de adicionar um ícone ao menu Iniciar , área de trabalho ou barra de Início Rápido.

Observação

A barra de Início Rápido não está mais disponível a partir do Windows 7. A alternativa do Windows 7 é ter o aplicativo fixado na barra de tarefas, mas a fixação não pode ser feita programaticamente, pois é estritamente uma escolha do usuário.

 

Para obter mais informações, consulte estes tópicos:

Instalação e padrões do aplicativo

Os procedimentos de instalação do aplicativo não mudaram fundamentalmente desde o Windows XP, com exceção de uma nova diretriz para sistemas que executam versões do Windows anteriores ao Windows 8: use os padrões por computador no momento da instalação, mas não defina nenhum padrão por usuário até que o usuário execute o aplicativo pela primeira vez. (Consulte primeira execução do aplicativo e os padrões.) Os aplicativos não devem definir padrões por usuário durante a instalação porque há situações em que a pessoa que instala o aplicativo não é o usuário pretendido. A partir do Windows 8, os padrões por computador não são suportados e os aplicativos não podem alterar as configurações padrão por usuário.

Durante a instalação, um aplicativo deve copiar seus binários para o disco rígido e gravar seus ProgIDs no registro. A aplicação também deve registar-se nos Programas Padrão e Abrir com neste momento para cada associação de arquivo candidata a ser gerida. A aplicação pode usar a subchave OpenWithProgIds para registar-se com Open With.

Para obter mais informações, consulte estes tópicos:

Atualizações e predefinições de aplicações

Muitos aplicativos têm a capacidade de se atualizar ao longo do tempo. Esse procedimento de atualização não deve alterar o estado dos padrões por usuário porque essa alteração seria inesperada para o usuário. No entanto, é aceitável para um aplicativo verificar associações de arquivos no nível do computador e repará-los se eles foram corrompidos.

Primeira utilização e predefinições da aplicação

Observação

A partir do Windows 8, o sistema lida com esse procedimento em nome de todos os aplicativos. Os próprios aplicativos não podem mais consultar e alterar padrões. Somente o usuário pode fazer isso. Portanto, os aplicativos não devem tentar consultar o padrão atual ou alterá-lo por meio de qualquer mecanismo. No entanto, as aplicações podem fornecer um ponto de entrada para os Programas Predefinidos no Painel de Controlo chamando o método LaunchAdvancedAssociationUI da interface IApplicationAssociationRegistrationUI.

 

Com a introdução de predefinições por utilizador no Windows Vista, é importante que os aplicativos que disputam extensões de nome de ficheiro populares ofereçam uma experiência comum ao utilizador para autorizar a utilização dessas extensões. Como esses padrões agora são definidos no contexto do usuário, eles devem se apresentar como uma possibilidade padrão somente quando o usuário executa o programa após a instalação.

A diretriz para estabelecer padrões por usuário é a seguinte: Quando um aplicativo é executado pela primeira vez para um usuário específico, esse aplicativo deve solicitar preferências do usuário para padrões e associações de arquivos para si mesmo.

A interface do usuário recomendada deve fornecer duas opções claras para o usuário:

  1. Aceite todos os padrões que o aplicativo gostaria de reivindicar. Essa opção também pode definir outras propriedades padrão do aplicativo, como privacidade ou configurações de atualização automática. Esta opção permite que o aplicativo reivindique todos os seus padrões registrados.
  2. Personalize aceitando ou não seleções padrão e configurações do programa individualmente. Esta opção apresenta mais interface do usuário que permite ao usuário fazer escolhas granulares para suas opções padrão.

Para obter mais informações, consulte Programas Padrão.

Observação

Isso não é suportado a partir do Windows 8.

 

Depois que um aplicativo se registra com programas padrão no Windows Vista e posteriores, determinadas APIs ficam disponíveis para o aplicativo. Por exemplo, um aplicativo pode precisar verificar se é o programa padrão. A interface IApplicationAssociationRegistration fornece métodos para fazer isso.

Qualquer aplicativo que queira reivindicar padrões deve primeiro perguntar ao usuário e nunca reivindicar padrões sem permissão. O usuário deve ser questionado se deseja tornar o aplicativo o padrão ou deixar o padrão atual no lugar. Deve também existir a opção de não voltar a colocar esta questão depois de o utilizador ter feito a sua escolha.

Para obter mais informações, consulte Programas Padrão.

Dicas de compatibilidade de aplicativos

Esta seção fornece algumas dicas de compatibilidade de aplicativos relacionadas à experiência de Programas Padrão no Windows.

Evite desencadear a virtualização Per-User

Com o ambiente de controle de conta de usuário (UAC), os aplicativos devem sempre ser executados apenas com direitos de usuário padrão para a melhor experiência do cliente. Por razões de segurança, as aplicações com um nível de privilégio de utilizador padrão são impedidas de escrever em determinadas partes do registo e em determinados ficheiros de sistema. O Windows Vista e versões posteriores do Windows fornecem uma camada de compatibilidade temporária de aplicativos (AppCompat) para ajudar os aplicativos a fazer a transição. Tentativas bloqueadas de gravar no registro ou em arquivos do sistema são "virtualizadas" para que o aplicativo continue a ser executado, mas as áreas sensíveis do sistema não são alteradas. No entanto, os aplicativos não devem confiar na tecnologia AppCompat como uma solução de longo prazo. Em vez disso, os aplicativos devem usar as muitas ferramentas disponíveis para verificar se podem ser executados com êxito sob direitos de usuário padrão. Alguma reprogramação do aplicativo pode ser necessária para realizar isso, mas deve ser feita no interesse da compatibilidade a longo prazo.

Evite avisos ou bloqueios do Assistente de Compatibilidade de Programas no AppCompat

O Assistente de Compatibilidade de Programas (PCA) é fornecido no Windows Vista e posterior. Seu objetivo é fornecer um método automatizado para fazer com que programas mais antigos com problemas de compatibilidade funcionem melhor. O PCA monitora programas em busca de problemas conhecidos. Se um problema for detetado, ele notifica o usuário sobre o problema e se oferece para aplicar soluções eficazes antes que o usuário execute o programa novamente. Para evitar ver esses avisos ou blocos, os ISVs devem usar as muitas ferramentas disponíveis para garantir que seus aplicativos sejam compatíveis com o Windows Vista, Windows 7 e posterior.

Suporte para versões anteriores do sistema operacional Windows

A infraestrutura de Programas Padrão não está disponível em nenhum sistema operacional Windows anterior ao Windows Vista. Portanto, quando os aplicativos são movidos para a nova infraestrutura de Programas Padrão, eles devem manter seu código padrão de aplicativo mais antigo para manter a compatibilidade com versões mais antigas do Windows. Um aplicativo deve executar uma verificação de versão do sistema operacional como parte de sua instalação para determinar qual código padrão do aplicativo deve ser executado.

Para suportar uma atualização do Windows XP para o Windows Vista ou posterior, as aplicações devem adicionar todas as entradas de registo necessárias para Programas Predefinidos, mesmo quando estão a ser instaladas num computador com o Windows XP. O registo não terá efeito num computador com o Windows XP, mas se o computador for atualizado posteriormente, a aplicação já estará registada e poderá tirar partido da estrutura.

Para obter mais informações, consulte OSVERSIONINFO.

Recursos adicionais

Práticas recomendadas para associações de arquivos

Cenário de exemplo de associação de arquivo

Programas Padrão

Trabalhar com o Definir o Acesso a Programas e as Predefinições do Computador (SPAD)