Share via


Administración de aplicaciones predeterminadas

La característica Establecer acceso a programas y valores predeterminados de equipo (SPAD) se agregó a Windows XP y versiones posteriores de Windows para administrar los valores predeterminados por equipo. Además de SPAD, Windows Vista introdujo el concepto de aplicaciones predeterminadas por usuario y el elemento Programas predeterminados en Panel de control.

Importante

Este tema no se aplica a Windows 10. La forma en que las asociaciones de archivos predeterminadas funcionan en Windows 10. Para obtener más información, consulte la sección Cambios en cómo Windows 10 controla las aplicaciones predeterminadas en esta publicación.

 

La configuración predeterminada por usuario es específica de una cuenta de usuario individual en el sistema. Si la configuración predeterminada por usuario está presente, tiene prioridad sobre los valores predeterminados por equipo correspondientes para esa cuenta. A partir de Windows 8, el sistema de extensibilidad para los valores predeterminados de tipo de archivo y protocolo es estrictamente por usuario y los valores predeterminados por equipo se omiten. SPAD también ha cambiado en Windows 8 para establecer los valores predeterminados por usuario.

  • En los sistemas que ejecutan versiones de Windows anteriores a Windows 8, una cuenta de usuario recién creada recibe los valores predeterminados por equipo hasta que se establecen los valores predeterminados por usuario. En Windows Vista y versiones posteriores, los usuarios pueden usar el elemento Programas predeterminados en Panel de control para establecer o cambiar sus valores predeterminados por usuario. Además, cuando una aplicación se ejecuta por primera vez, los valores predeterminados por usuario se pueden establecer mediante las instrucciones siguientes en la sección Application First Run and Defaults (Ejecución y valores predeterminados de la aplicación ).
  • En los sistemas que ejecutan Windows 8, una cuenta de usuario recién creada se basa en los valores predeterminados por usuario desde el inicio y la configuración de esos valores predeterminados en la primera ejecución, tal y como se explica en la sección Application First Run and Defaults (Ejecución inicial y predeterminada) ya no se admite.

Una aplicación debe registrarse tanto con SPAD como con la característica Programas predeterminados que se ofrecerá como programa predeterminado en Windows Vista y versiones posteriores.

En este tema se proporcionan proveedores de software independientes (ISV) con una guía rápida sobre los pasos necesarios para registrar y administrar los valores predeterminados de la aplicación en Windows Vista y versiones posteriores. Los vínculos se proporcionan a artículos más detallados sobre el tema de cada sección.

Elemento Programas predeterminados en Panel de control

Los programas predeterminados son una característica introducida en Windows Vista, accesible directamente desde el menú Inicio, así como Panel de control. Proporciona una nueva infraestructura que funciona con privilegios de usuario estándar (no elevados) y está diseñada para permitir que los usuarios y las aplicaciones administren los valores predeterminados por usuario. En el caso de los usuarios, los programas predeterminados proporcionan una manera unificada y fácil de administrar valores predeterminados, asociaciones de archivos y reproducción automática en todas las aplicaciones del sistema. En el caso de las aplicaciones, el uso del ámbito por usuario proporcionado por las API de programas predeterminados ofrece las siguientes ventajas:

  • Sin elevación

    Una aplicación no tiene que elevar sus privilegios para reclamar valores predeterminados.

  • Buena ciudadanía

    En un equipo de varios usuarios, cada usuario puede seleccionar diferentes aplicaciones predeterminadas.

  • Administración predeterminada

    Las API de programas predeterminados ofrecen un mecanismo confiable y coherente para comprobar automáticamente el estado predeterminado y reclamar la configuración perdida sin recurrir a escribir directamente en el registro. Sin embargo, a partir de Windows 8, no se recomienda que las aplicaciones consulten el estado predeterminado porque una aplicación ya no puede cambiar la configuración predeterminada; esos cambios solo los puede realizar el usuario.

Para permitir que la aplicación administre los valores predeterminados de forma eficaz, debe registrar la aplicación como un programa predeterminado potencial. Para obtener más información sobre cómo registrar y usar las API de programas predeterminados, consulte Programas predeterminados.

Los programas predeterminados también proporcionan estas dos características:

  • Interfaz de usuario predeterminada reutilizable

    La interfaz de usuario de los valores predeterminados del programa (Establecer los programas predeterminados) y las asociaciones de archivos (Asociar un tipo de archivo o protocolo con un programa) se pueden reutilizar y llamar desde dentro de una aplicación. Esto permite a las aplicaciones proporcionar una experiencia de usuario estándar para administrar los valores predeterminados y ahorra que los ISV tengan que desarrollar una interfaz de usuario personalizada o equivalente.

  • Inclusión de la dirección URL y la información de marketing

    Como parte de la página Establecer los programas predeterminados del elemento Programas predeterminados en Panel de control, una aplicación puede proporcionar información de marketing y un vínculo al sitio web del proveedor. Esta dirección URL se deriva del certificado Authenticode con el que se ha firmado la aplicación. Esto evita el uso indebido y el reemplazo no autorizado de este vínculo. Si una aplicación tiene un certificado Authenticode que incluye una dirección URL incrustada, la interfaz de usuario de Windows muestra esa dirección URL insertada. Los ISV deben aprovechar esta característica para dirigir a los usuarios a su sitio web para obtener actualizaciones y otras descargas.

Establecer el acceso al programa y los valores predeterminados del equipo

Establecer los valores predeterminados de acceso de programa y equipo (SPAD) permite a los administradores administrar los valores predeterminados de todo el equipo que heredan todos los nuevos usuarios de ese equipo. Antes de Windows 8, SPAD también permitía a los administradores reparar asociaciones de archivos si se rompían cuando los programas se quitaban del sistema. Sin embargo, a partir de Windows 8, SPAD solo afecta a los valores predeterminados específicos del usuario.

Para obtener más información sobre cómo registrar una aplicación en SPAD, vea Trabajar con los valores predeterminados de programa y de equipo (SPAD) y Registrar programas con tipos de cliente. Los cambios específicos y las nuevas recomendaciones se describen en las secciones siguientes.

Establecer valores predeterminados en SPAD

Los valores predeterminados por usuario invalidan los valores predeterminados por equipo.

  • Antes de Windows 8: los usuarios no verán los valores predeterminados establecidos en SPAD (que son por equipo) si se establecen los valores predeterminados por usuario correspondientes. Si un usuario no ha establecido un valor predeterminado por usuario, el sistema usa el valor predeterminado del equipo correspondiente. Las nuevas cuentas de usuario de un equipo heredan inicialmente los valores predeterminados del equipo. La primera vez que un usuario ejecuta una aplicación, la aplicación debe pedir al usuario que asigne sus valores predeterminados por usuario. Consulte La primera ejecución y los valores predeterminados de la aplicación.
  • A partir de Windows 8: todos los valores predeterminados son por usuario y se omite cualquier configuración predeterminada por equipo. Las aplicaciones ya no pueden establecer opciones predeterminadas, por lo que no pueden guiar al usuario a través de su asignación de esos valores predeterminados.

Cuando una aplicación anterior a Windows 8 implementa Establecer como predeterminada en SPAD, se deben seguir estas instrucciones:

  • Las aplicaciones solo deben reclamar valores predeterminados de nivel de equipo a través de SPAD.
  • Las aplicaciones no deben reclamar valores predeterminados por usuario a través de SPAD.

Cuando una aplicación de Windows 8 implementa Establecer como predeterminado en SPAD, deben registrar sus tipos de archivo y protocolos en Programas predeterminados, con el mismo nombre de aplicación usado en SPAD. Esto permite que un cambio en SPAD se refleje como un cambio en la entrada Programas predeterminados correspondiente para el usuario actual.

Ocultar acceso en SPAD

Se accede a la opción ocultar acceso para cada valor predeterminado posible en SPAD de una de estas dos maneras:

  • Elija la categoría No Microsoft de valores predeterminados, que quita el acceso a todos los valores predeterminados de Microsoft.
  • Elija la categoría Personalizado y desactive la casilla Habilitar acceso a este programa .

Anteriormente, al realizar cualquiera de esas acciones, se quitaron todos los puntos de entrada a las aplicaciones adecuadas del sistema. Las instrucciones específicas para esta situación indican quitar accesos directos e iconos de las siguientes ubicaciones:

  • Escritorio
  • Menú Inicio
  • Barra de inicio rápido (solo Windows Vista y versiones anteriores)
  • Área de notificaciones
  • Menús contextuales
  • Banda de tareas carpeta

Se recomienda a los proveedores implementar estas directrices en la función ocultar devolución de llamada de Access de la aplicación.

Método ocultar acceso alternativo en SPAD

En algunas aplicaciones heredadas, es posible que una implementación completa de Hide Access no sea práctica. Un método alternativo que logra el mismo efecto, pero no es fácilmente reversible por el usuario, es desinstalar la aplicación. A continuación se muestra el comportamiento de ejemplo y el código de ejemplo para implementarlo.

La experiencia de usuario recomendada para esta alternativa es la siguiente:

  • Cuando el usuario desactiva el cuadro Habilitar acceso a este programa en SPAD, se presenta la siguiente interfaz de usuario.

    Cuadro de diálogo vista sobre ocultar el acceso al programa

  • Cuando el usuario hace clic en Aceptar, se muestra el elemento Programas y características de Panel de control para que el usuario pueda desinstalar la aplicación.

  • Los usuarios de Windows XP deben presentarse con el siguiente cuadro de diálogo.

    cuadro de diálogo de windows xp sobre cómo ocultar el acceso al programa

  • Cuando el usuario de Windows XP hace clic en Aceptar, se muestra el elemento Agregar o quitar programas en Panel de control para que el usuario pueda desinstalar la aplicación.

El código siguiente proporciona una implementación reutilizable para la característica Ocultar acceso, como se describió anteriormente. Se puede usar en Windows XP, Windows Vista y 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;
}

Registro para puntos de entrada de aplicación

Una aplicación puede tener muchos puntos de entrada dentro del sistema operativo. A continuación se muestran las ubicaciones recomendadas para los puntos de entrada:

  • Escritorio
  • Menú Inicio
  • Barra de inicio rápido (solo Windows Vista y versiones anteriores)
  • Área de notificaciones
  • Menús contextuales
  • Banda de tareas carpeta

Esta sección se centra en estas áreas específicas:

Abrir con

El menú contextual Abrir con permite al usuario seleccionar una aplicación que pueda controlar un tipo de archivo específico. Aunque Open With se puede usar para abrir un archivo con una aplicación una vez, también se puede usar para establecer el valor predeterminado para esa extensión de nombre de archivo. Por lo tanto, una aplicación siempre debe registrarse para Abrir con para que los usuarios se presenten a esa aplicación como opción. Las aplicaciones pueden registrar tanto tipos de archivo como protocolos para Open With. Las aplicaciones que registran protocolos en el marco Programas predeterminados se agregan automáticamente a las opciones Abrir con para protocolos.

Para obtener información sobre cómo registrarse para Abrir con, vea Introducción a las asociaciones de archivos.

Menú Inicio y Barra de inicio rápido

Para ser más reconocible para el usuario, las aplicaciones pueden agregar accesos directos a varias ubicaciones de Windows. El lugar más común para agregar un acceso directo es el menú Inicio . En Windows Vista y versiones posteriores, una aplicación crea un acceso directo en la carpeta oculta %ProgramData%\Microsoft\Windows\Menú Inicio\Programas para que aparezca en la lista de programas del menú Inicio para todos los usuarios. Normalmente, una aplicación agrega una subcarpeta que contiene el acceso directo.

En el caso de los programas de explorador y correo electrónico, el menú Inicio de Windows Vista también presenta dos vínculos dedicados fuera de la lista de programas, titulados canónicamente Internet y correo electrónico. Después de que una aplicación se registre para esas categorías, el marco Programas predeterminados puede administrar lo que se inicia a través de esos vínculos.

Nota

Los vínculos de menú Inicio dedicados a Internet y correo electrónico ya no están presentes a partir de Windows 7.

 

Para aumentar aún más la detectabilidad, las aplicaciones también pueden agregar accesos directos al escritorio y a la barra inicio rápido. Las aplicaciones deben pedir permiso al usuario (normalmente durante la instalación o en la primera ejecución) antes de agregar un icono al menú Inicio , el escritorio o la barra inicio rápido.

Nota

La barra inicio rápido ya no está disponible a partir de Windows 7. La alternativa de Windows 7 es tener la aplicación anclada a la barra de tareas, pero el anclaje no se puede realizar mediante programación, ya que es estrictamente una opción de usuario.

 

Para más información, consulte los temas siguientes:

Instalación y valores predeterminados de la aplicación

Los procedimientos de instalación de aplicaciones no han cambiado fundamentalmente desde Windows XP, a excepción de una nueva guía para los sistemas que ejecutan versiones de Windows anteriores a Windows 8: tome los valores predeterminados por equipo en el momento de la instalación, pero no establezca ningún valor predeterminado por usuario hasta que ese usuario ejecute la aplicación por primera vez. (Consulte La primera ejecución y los valores predeterminados de la aplicación). Las aplicaciones no deben establecer valores predeterminados por usuario durante la instalación porque hay situaciones en las que la persona que instala la aplicación no es el usuario deseado. A partir de Windows 8, los valores predeterminados por equipo no se admiten y las aplicaciones no pueden cambiar la configuración predeterminada por usuario.

Durante la instalación, una aplicación debe copiar sus archivos binarios en el disco duro y escribir sus ProgIDD en el registro. La aplicación también debe registrarse para programas predeterminados y Abrir con en este momento para cada asociación de archivos que es un candidato para controlar. La aplicación puede usar la subclave OpenWithProgIds para registrarse con Open With.

Para más información, consulte los temas siguientes:

Actualizaciones y valores predeterminados de la aplicación

Muchas aplicaciones tienen la capacidad de actualizarse a sí mismas con el tiempo. Este procedimiento de actualización no debe cambiar el estado de los valores predeterminados por usuario porque ese cambio sería inesperado para el usuario. Sin embargo, es aceptable que una aplicación compruebe las asociaciones de archivos de nivel de equipo y las repare si están dañadas.

Ejecución y valores predeterminados de la primera ejecución de la aplicación

Nota

A partir de Windows 8, el sistema controla este procedimiento en nombre de todas las aplicaciones. Las propias aplicaciones ya no pueden consultar y cambiar los valores predeterminados. Solo el usuario puede hacerlo. Por lo tanto, las aplicaciones no deben intentar consultar el valor predeterminado actual o cambiar ese valor predeterminado a través de cualquier mecanismo. Sin embargo, las aplicaciones pueden proporcionar un punto de entrada a Programas predeterminados en el Panel de control llamando al método LaunchAdvancedAssociationUI de la interfaz IApplicationAssociationRegistrationUI.

 

Con la introducción de los valores predeterminados por usuario en Windows Vista, es importante que las aplicaciones que compita para las extensiones de nombre de archivo populares proporcionan una experiencia de usuario común para reclamar estas extensiones. Dado que estos valores predeterminados se establecen ahora en el contexto del usuario, deben presentarse como una posibilidad predeterminada solo cuando el usuario ejecuta el programa después de la instalación.

La guía para establecer los valores predeterminados por usuario es esta: cuando se ejecuta por primera vez una aplicación para un usuario específico, esa aplicación debe solicitar preferencias de usuario para los valores predeterminados y las asociaciones de archivo para sí misma.

La interfaz de usuario recomendada debe proporcionar dos opciones claras al usuario:

  1. Acepte todos los valores predeterminados que la aplicación desea reclamar. Esta opción también puede establecer otras propiedades predeterminadas de la aplicación, como la configuración de privacidad o actualización automática. Esta opción permite a la aplicación reclamar todos sus valores predeterminados registrados.
  2. Personalice aceptando o no aceptando selecciones predeterminadas y configuraciones de programa individualmente. Esta opción presenta una interfaz de usuario adicional que permite al usuario tomar decisiones pormenorizadas para sus opciones predeterminadas.

Para obtener más información, vea Programas predeterminados.

Nota

Esto no se admite a partir de Windows 8.

 

Después de que una aplicación se registre con programas predeterminados en Windows Vista y versiones posteriores, ciertas API estarán disponibles para la aplicación. Por ejemplo, es posible que una aplicación necesite comprobar si es el programa predeterminado. La interfaz IApplicationAssociationRegistration proporciona métodos para hacerlo.

Cualquier aplicación que quiera reclamar los valores predeterminados debe pedir primero al usuario y nunca reclamar los valores predeterminados sin permiso. Se debe preguntar al usuario si desea que la aplicación sea la predeterminada o deje el valor predeterminado actual en su lugar. También debe haber una opción para no volver a formular esta pregunta después de que el usuario haya elegido.

Para obtener más información, vea Programas predeterminados.

Sugerencias de compatibilidad de aplicaciones

En esta sección se proporcionan algunas sugerencias de compatibilidad de aplicaciones relacionadas con la experiencia Programas predeterminados en Windows.

Evitar el desencadenamiento de la virtualización de Per-User

Con el entorno de control de cuentas de usuario (UAC), las aplicaciones siempre deben ejecutarse con derechos de usuario estándar para obtener la mejor experiencia del cliente. Por motivos de seguridad, las aplicaciones con un nivel de privilegio de usuario estándar no pueden escribir en determinadas partes del registro y en determinados archivos del sistema. Windows Vista y versiones posteriores de Windows proporcionan una capa de compatibilidad de aplicaciones temporales (AppCompat) para ayudar a las aplicaciones a realizar la transición. Los intentos bloqueados de escribir en el Registro o en los archivos del sistema se "virtualizan" para que la aplicación siga ejecutándose, pero no se modifiquen las áreas confidenciales del sistema. Sin embargo, las aplicaciones no deben confiar en la tecnología AppCompat como una solución a largo plazo. En su lugar, las aplicaciones deben usar las muchas herramientas disponibles para comprobar que se pueden ejecutar correctamente con los derechos de usuario estándar. Es posible que sea necesario volver a programar la aplicación para hacerlo, pero debe realizarse en interés de la compatibilidad a largo plazo.

Evitar advertencias o bloqueos de AppCompat del Asistente para compatibilidad del programa

El Asistente de compatibilidad de programas (PCA) se proporciona en Windows Vista y versiones posteriores. Su propósito es proporcionar un método automatizado para que los programas más antiguos con problemas de compatibilidad funcionen mejor. El PCA supervisa los programas para detectar problemas conocidos. Si se detecta un problema, notifica al usuario del problema y ofrece aplicar soluciones eficaces antes de que el usuario vuelva a ejecutar el programa. Para evitar ver estas advertencias o bloques, los ISV deben usar las muchas herramientas disponibles para asegurarse de que sus aplicaciones son compatibles con Windows Vista, Windows 7 y versiones posteriores.

Compatibilidad con versiones anteriores del sistema operativo Windows

La infraestructura de programas predeterminados no está disponible en ningún sistema operativo Windows antes de Windows Vista. Por lo tanto, cuando las aplicaciones se mueven a la nueva infraestructura de programas predeterminados, deben conservar el código predeterminado de la aplicación anterior para mantener la compatibilidad con versiones anteriores de Windows. Una aplicación debe ejecutar una comprobación de la versión del sistema operativo como parte de su instalación para determinar qué código predeterminado de aplicación se va a ejecutar.

Para admitir una actualización de Windows XP a Windows Vista o posterior, las aplicaciones deben agregar todas las entradas del Registro necesarias para los programas predeterminados incluso cuando se instalan en un equipo que ejecuta Windows XP. El registro no tendrá ningún efecto en un equipo que ejecute Windows XP, pero si el equipo se actualiza más adelante, la aplicación ya se registrará y podrá aprovechar el marco de trabajo.

Para obtener más información, vea OSVERSIONINFO.

Recursos adicionales

Procedimientos recomendados para asociaciones de archivos

Escenario de ejemplo de asociación de archivos

Programas predeterminados

Trabajar con establecer acceso a programas y valores predeterminados de equipo (SPAD)