Compartir a través de


Programas predeterminados

Use Programas predeterminados para establecer la experiencia de usuario predeterminada. Los usuarios pueden acceder a programas predeterminados desde Panel de control o directamente desde el menú Inicio. Establezca la herramienta Valores predeterminados de programa y equipo (SPAD), la experiencia predeterminada principal para los usuarios de Windows XP, ahora es una parte de los programas predeterminados.

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.

 

Cuando un usuario establece los valores predeterminados del programa mediante Programas predeterminados, la configuración predeterminada solo se aplica a ese usuario y no a otros usuarios que puedan usar el mismo equipo. Los programas predeterminados proporcionan un conjunto de API (en desuso en Windows 8) que permiten a los proveedores de software independientes (ISV) incluir sus programas o aplicaciones en el sistema predeterminado. El conjunto de API también ayuda a los ISV a administrar mejor su estado como valores predeterminados.

Este tema se organiza de la siguiente manera:

Los programas predeterminados están diseñados principalmente para aplicaciones que usan tipos de archivo estándar, como .mp3 o archivos .jpg o protocolos estándar, como HTTP o mailto. Las aplicaciones que usan sus propios protocolos propietarios y asociaciones de archivos no suelen usar la funcionalidad Programas predeterminados .

Después de registrar una aplicación para la funcionalidad Programas predeterminados , las siguientes opciones y funcionalidades están disponibles mediante el conjunto de API:

  • Restaure todos los valores predeterminados registrados para una aplicación. En desuso para Windows 8.
  • Restaure un único valor predeterminado registrado para una aplicación. En desuso para Windows 8.
  • Consulte al propietario de un valor predeterminado específico en una sola llamada en lugar de buscar en el Registro. Puede consultar el valor predeterminado de un verbo canónico de asociación de archivos, protocolo o menú Inicio .
  • Inicie una interfaz de usuario para una aplicación específica en la que un usuario pueda establecer valores predeterminados individuales.
  • Quite todas las asociaciones por usuario.

Los programas predeterminados también proporcionan una interfaz de usuario que permite registrar una aplicación para proporcionar información adicional al usuario. Por ejemplo, una aplicación firmada digitalmente puede incluir una dirección URL a la página principal del fabricante.

El uso del conjunto de API asociado puede ayudar a que una aplicación funcione correctamente en la característica de control de cuentas de usuario (UAC) introducida en Windows Vista. En UAC, un administrador parece que el sistema es un usuario estándar, por lo que el administrador no puede escribir normalmente en el subárbol HKEY_LOCAL_MACHINE . Esta restricción es una característica de seguridad que impide que un proceso actúe como administrador sin el conocimiento del administrador.

La instalación de un programa por parte de un usuario se realiza normalmente como un proceso con privilegios elevados. Sin embargo, los intentos de una aplicación para modificar los comportamientos de asociación predeterminados en un nivel de máquina posterior a la instalación no se realizarán correctamente. En su lugar, los valores predeterminados deben registrarse en un nivel por usuario, lo que impide que varios usuarios sobrescriban los valores predeterminados de los demás.

La estructura jerárquica del Registro para las asociaciones de archivos y protocolos da prioridad a los valores predeterminados por usuario sobre los valores predeterminados de nivel de máquina. Algunas aplicaciones incluyen puntos en su código que elevan temporalmente sus derechos cuando reclaman valores predeterminados registrados en HKEY_LOCAL_MACHINE. Estas aplicaciones pueden experimentar resultados inesperados si otra aplicación ya está registrada como predeterminada por usuario. El uso de programas predeterminados evita esta ambigüedad y garantiza los resultados esperados en un nivel por usuario.

Registro de una aplicación para su uso con programas predeterminados

En esta sección se muestran las subclaves del Registro y los valores necesarios para registrar una aplicación con programas predeterminados. Incluye un ejemplo completo.

Esta sección contiene los siguientes temas:

Los programas predeterminados requieren que cada aplicación registre explícitamente las asociaciones de archivos, las asociaciones MIME y los protocolos para los que la aplicación debe aparecer como un valor predeterminado posible. Las asociaciones se registran mediante los siguientes elementos del Registro, que se explican con detalle más adelante en este tema en Subclave de registro y Descripciones de valores:

HKEY_LOCAL_MACHINE
   %ApplicationCapabilityPath%
      ApplicationDescription
      ApplicationName
      Hidden
      FileAssociations
         .file-extension1
         .file-extension2
         ...
         .file-extensionX
      MIMEAssociations
         MIME
      Startmenu
         StartmenuInternet
         Mail
      UrlAssociations
         url-scheme
   SOFTWARE
      RegisteredApplications
         Unique Application Name = %ApplicationCapabilityPath%

En el ejemplo siguiente se muestran las entradas del Registro para un explorador ficticio de Contoso denominado WebBrowser:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Contoso
         WebBrowser
            Capabilities
               ApplicationDescription = This award-winning Contoso browser is better than ever. Search the Internet and find exactly what you want in just seconds. Use integrated tabs and new phishing detectors to enhance your Internet experience.
               FileAssociations
                  .htm = ContosoHTML
                  .html = ContosoHTML
                  .shtml = ContosoHTML
                  .xht = ContosoHTML
                  .xhtml = ContosoHTML
               Startmenu
                  StartmenuInternet = Contoso.exe
               UrlAssociations
                  http = Contoso.Url.Http
                  https = Contoso.Url.Https
                  ftp = Contoso.Url.ftp
   SOFTWARE
      RegisteredApplications
         Contoso.WebBrowser.1.06 = SOFTWARE\Contoso\WebBrowser\Capabilities

ProgIDs

Una aplicación debe proporcionar un ProgID específico. Asegúrese de incluir toda la información que normalmente se escribe en la subclave predeterminada genérica para la extensión. Por ejemplo, el reproductor multimedia de Litware ficticio proporciona la subclave específica de la aplicación HKEY_LOCAL_MACHINE\clases\ deSOFTWARE\LitwarePlayer11.AssocFile.MP3. Esa subclave incluye toda la información de la subclave predeterminada genérica HKEY_LOCAL_MACHINEclases\de SOFTWARE\.mp3\ además de cualquier información adicional que desee registrar la aplicación. Esto garantiza que si el usuario restaura la asociación de .mp3 al reproductor de Litware, la información del reproductor de Litware está intacta y no se ha sobrescrito por otra aplicación. (La sobrescritura puede producirse si la subclave predeterminada es el único origen de esa información).

Al asignar un ProgID a una extensión o protocolo de nombre de archivo, una aplicación puede asignar uno a uno o uno a varios. En el ejemplo de Contoso, ContosoHTML apunta a un único ProgID que proporciona información de shellexecute para las extensiones .htm, .html, .shtml, .xht y .xhtml. Dado que existe un ProgID diferente para cada protocolo, cuando se usan protocolos, se habilita cada protocolo para tener su propia cadena de ejecución.

Cuando el tipo MIME se puede ver en línea en un explorador, el ProgID para el tipo MIME debe contener la subclave CLSID que usa el identificador de clase (CLSID) de la aplicación correspondiente. Este CLSID se usa en una búsqueda en el CLSID de la base de datos MIME almacenada en HKEY_LOCAL_MACHINE\tipo de contenido debase\ de datosMIME\de clases\ deSOFTWARE\. Si el tipo MIME no está pensado para verse insertado en un explorador, este paso se puede omitir.

Subclave de registro y descripciones de valores

En esta sección se describen las subclaves y los valores del Registro individuales que se usan para registrar una aplicación con programas predeterminados, como se muestra anteriormente.

Funcionalidades

La subclave Capabilities contiene toda la información de programas predeterminados de una aplicación específica. El marcador de posición %ApplicationCapabilityPath% hace referencia a la ruta de acceso del Registro desde HKEY_CURRENT_USER o HKEY_LOCAL_MACHINE a la subclaveCapabilities de la aplicación. Esta subclave contiene los valores significativos que se muestran en la tabla siguiente.

Valor Tipo Significado
ApplicationDescription REG_SZ o REG_EXPAND_SZ Requerido. Para permitir que un usuario realice una elección de asignación predeterminada informada, una aplicación debe proporcionar una cadena que describa las funcionalidades de la aplicación. Aunque en el ejemplo anterior de Contoso se asigna la descripción directamente al valor ApplicationDescription, las aplicaciones suelen proporcionar la descripción como un recurso incrustado en un archivo .dll para facilitar la localización. Si no se proporciona ApplicationDescription, la aplicación no aparece en listas de interfaz de usuario de posibles programas predeterminados.
ApplicationName REG_SZ o REG_EXPAND_SZ Opcional. Nombre por el que aparece el programa en la interfaz de usuario Programas predeterminados. Si la aplicación no proporciona estos datos, el nombre del programa ejecutable asociado al primer ProgID registrado para la aplicación se usa en la interfaz de usuario. ApplicationName siempre debe coincidir con el nombre registrado en RegisteredApplications. Puede usar ApplicationName si desea que distintos tipos de aplicación, como un explorador y un cliente de correo electrónico, apunten al mismo archivo ejecutable mientras aparecen como nombres diferentes.
Hidden REG_DWORD Opcional. Establezca este valor en 1 para suprimir la aplicación de la lista de programas en el cuadro de diálogo Establecer los programas predeterminados . Si este valor es 0 o no está presente, la aplicación aparece en la lista normalmente.

 

FileAssociations

La subclave FileAssociations contiene asociaciones de archivo específicas que reclama la aplicación. Estas notificaciones se almacenan como valores, con un valor para cada extensión. Las asociaciones apuntan a un ProgID específico de la aplicación en lugar de a un ProgID genérico. Sin embargo, no es necesario que todas las asociaciones apunten al mismo ProgID.

MIMEAssociations

La subclave MIMEAssociations contiene tipos MIME específicos que la aplicación reclama. Estas notificaciones se almacenan como valores, con un valor para cada tipo MIME. El nombre de valor de cada tipo MIME debe coincidir exactamente con el nombre MIME que se almacena en la base de datos MIME. También se debe asignar un ProgID específico de la aplicación que contenga el CLSID correspondiente de la aplicación.

Startmenu

La subclave Startmenu está asociada a las entradas de Internet y correo electrónico asignables por el usuario en el menú Inicio . Una aplicación debe registrarse por separado como contendiente para esas entradas. Para obtener más información, vea Registrar programas con tipos de cliente.

Nota

A partir de Windows 7, ya no hay entradas de Internet y correo electrónico en el menú Inicio . Los datos del Registro asociados a la entrada de correo electrónico se siguen usando para el cliente MAPI predeterminado, pero Windows no usa en absoluto los datos del Registro asociados a la entrada de Internet .

 

Al asociar el registro del menú Inicio de una aplicación con su registro de programas predeterminados , la aplicación aparece como un valor predeterminado potencial en la interfaz de usuario Establecer asociaciones . Si el usuario ha elegido la aplicación como predeterminada y, a continuación, elige restaurar todos los valores predeterminados de la aplicación más adelante, la aplicación se restaura en su posición de menú Inicio para ese usuario. Para obtener más información y una ilustración, vea la sección Interfaz de usuario de programas predeterminados más adelante en este tema.

La subclave Startmenu tiene dos entradas: StartMenuInternet y Mail, que corresponden a las posiciones canónicas de Internet y Correo electrónico en el menú Inicio . Una aplicación asigna StartMenuInternet o Mail un valor igual al nombre de la subclave registrada de la aplicación en HKEY_LOCAL_MACHINE\Clientes\de SOFTWARE\StartMenuInternet o HKEY_LOCAL_MACHINE\Correo declientes\de SOFTWARE\ (como se describe en Registro de programas con tipos de cliente).

En el caso de la posición canónica de correo electrónico en el menú Inicio , representa el cliente MAPI predeterminado y, por tanto, se supone que es capaz de entregar llamadas MAPI. En Windows 7, aunque ya no hay una posición canónica de correo electrónico en el menú Inicio , esta subclave sigue usándose para el cliente MAPI predeterminado. Una aplicación que reclama el valor predeterminado del correo debe registrarse como controlador MAPI en la siguiente subclave:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName

Si un cliente de correo no puede admitir MAPI, pero desea seguir luchando por la posición canónica del menú Inicio, puede registrar una línea de comandos en la siguiente subclave:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName
               shell
                  open
                     command

Además, en HKEY_LOCAL_MACHINE\Client Software\\Mail\CanonicalName agregue un valor predeterminado con el nombre de la aplicación.

Estas entradas permiten iniciar la aplicación desde la posición de correo electrónico del menú Inicio. Tenga en cuenta que las llamadas MAPI todavía se realizan a la aplicación y se pasan al controlador MAPI anterior o se produce un error si no se ha establecido ningún controlador MAPI. Para obtener más información, vea Registrar programas con tipos de cliente.

UrlAssociations

La subclave UrlAssociations contiene los protocolos de dirección URL específicos que reclama la aplicación. Estas notificaciones se almacenan como valores, con un valor para cada protocolo. Cada protocolo debe apuntar a un ProgID específico de la aplicación en lugar de a un ProgID genérico. Como se mencionó en el ejemplo de Contoso, puede usar un ProgID diferente para cada protocolo para que cada uno tenga su propia cadena de ejecución.

RegisteredApplications

La subclave completa de RegisteredApplications es:

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications

Esta subclave proporciona al sistema operativo la ubicación del Registro de la información de programas predeterminados para la aplicación. La ubicación se almacena como un valor cuyo nombre debe coincidir con el nombre de la aplicación.

Ejemplo de registro completo

En este ejemplo se muestran las subclaves y los valores que se usan para registrar el reproductor multimedia de Litware ficticio. En el ejemplo se incluyen las entradas progID para mostrar cómo encajan todas.

La siguiente subclave muestra el ProgID específico de la aplicación para el tipo MIME de .mp3:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.MIME.MP3
            CLSID
               (Default) = {CD3AFA76-B84F-48F0-9393-7EDC34128127}

A continuación, es el ProgID específico de la aplicación que asocia el programa Litware con la extensión de nombre de archivo .mp3.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.AssocFile.MP3
            (Default) = MP3 Format Sound
            DefaultIcon
               (Default) = %ProgramFiles%\Litware\litware.dll, 0
            shell
               open
                  command
                     (Default) = %ProgramFiles%\Litware\litware.exe

Las siguientes entradas muestran el ProgID combinado para el tipo MIME .mpeg y la extensión de nombre de archivo.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.AssocFile.MPG
            (Default) = Movie Clip
            CLSID
               (Default) = {D92B76F4-CFA0-4b93-866B-7730FEB4CD7B}
            DefaultIcon
               (Default) = %ProgramFiles%\Litware\litware.dll, 0
            shell
               open
                  command
                     (Default) = %ProgramFiles%\Litware\litware.exe

Las siguientes entradas registran el programa Litware en Programas predeterminados y usan los ProgID registrados anteriormente.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Litware
         LitwarePlayer
            Capabilities
               ApplicationDescription = The new Litware Media Player breaks new ground in exciting fictional programs.
               FileAssociations
                  .mp3 = LitwarePlayer11.AssocFile.MP3
                  .mpeg = LitwarePlayer11.AssocFile.MPG
               MimeAssociations
                  audio/mp3 = LitwarePlayer11.MIME.MP3
                  audio/mpeg = LitwarePlayer11.AssocFile.MPG

Por último, en este ejemplo se registra la ubicación del registro de programas predeterminados de Litware.

HKEY_LOCAL_MACHINE
   SOFTWARE
      RegisteredApplications
         Litware Player = Software\Litware\LitwarePlayer\Capabilities

Convertirse en el explorador predeterminado

El registro del explorador debe seguir los procedimientos recomendados descritos en este tema. Cuando se instala el explorador, Windows puede presentar al usuario una notificación del sistema a través de la cual el usuario puede seleccionar el explorador como valor predeterminado del sistema. Esta notificación se muestra cuando se cumplen estas condiciones:

  • El instalador del explorador llama a SHChangeNotify con la marca SHCNE_ASSOCCHANGED para indicar a Windows que se han registrado nuevos controladores de protocolo.
  • Windows detecta que una o varias aplicaciones nuevas se han registrado para controlar los protocolos http:// y https://, y el usuario aún no se ha notificado. En otras palabras, no se ha mostrado ninguno de los siguientes elementos al usuario: una notificación del sistema que anuncia la aplicación, un control flotante OpenWith que contiene la aplicación o la página Establecer valores predeterminados de usuario (SUD) Panel de control página para la aplicación.

En el ejemplo siguiente se muestra el código de registro recomendado que el instalador del explorador debe ejecutar después de escribir sus claves del Registro.

SHChangeNotify notifica primero al sistema que hay nuevas opciones de asociación disponibles. La llamada SHChangeNotify es necesaria para garantizar el correcto funcionamiento de los valores predeterminados del sistema.

A continuación, una instrucción Sleep permite que los procesos del sistema controle la notificación.

void NotifySystemOfNewRegistration()
{
    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_DWORD | SHCNF_FLUSH, nullptr, nullptr);
    Sleep(1000);
}

Si el usuario descarta o omite la notificación o el control flotante resultantes sin realizar una nueva selección predeterminada del explorador, el explorador predeterminado permanece sin cambios. Tenga en cuenta que el usuario también puede cambiar el explorador predeterminado en cualquier momento a través de otros mecanismos, incluidos Establecer valores predeterminados de usuario en el Panel de control.

Interfaz de usuario de programas predeterminados

En las ilustraciones de esta sección se muestra la interfaz de usuario para programas predeterminados , tal como lo ve el usuario.

En la ilustración siguiente se muestra la ventana programas predeterminados principal en Panel de control.

captura de pantalla de la página de entrada de programas predeterminada

Cuando un usuario elige la opción Establecer los programas predeterminados , aparece la ventana siguiente. Los usuarios pueden usar esta página para asignar un programa predeterminado para todos los tipos de archivo y protocolos para los que el programa es un valor predeterminado posible. Como se muestra en la ilustración siguiente, todos los programas registrados y el icono de programa aparecen en el cuadro Programas de la izquierda.

captura de pantalla del establecimiento de la página de programas predeterminados

Cuando el usuario selecciona un programa de la lista, se muestran el icono de programa y el proveedor. Si la dirección URL está insertada en el certificado firmado digitalmente del programa, el programa también puede mostrar una dirección URL. Los programas que no están firmados digitalmente no pueden mostrar una dirección URL.

También se muestra el texto descriptivo proporcionado por el programa durante el registro. Este texto es obligatorio. Debajo del cuadro de descripción se indica el número de valores predeterminados que el programa está asignado actualmente fuera del número completo que se registra para controlar.

Para asignar o restaurar un programa como valor predeterminado para todos los archivos y protocolos para los que está registrado, el usuario hace clic en la opción Establecer este programa como predeterminada .

Para asignar protocolos y tipos de archivo individuales a un programa, el usuario hace clic en la opción Elegir valores predeterminados para este programa , que muestra una ventana Establecer asociaciones para un programa como la de la ilustración siguiente.

Nota

Se recomienda llamar a las asociaciones Set para un programa mediante IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI.

 

captura de pantalla del conjunto de assocaciones para una página de programa

Procedimientos recomendados para usar programas predeterminados

En esta sección se proporcionan instrucciones de procedimientos recomendados para usar programas predeterminados al registrar aplicaciones. También ofrece sugerencias de diseño para crear una aplicación que proporciona a los usuarios una funcionalidad óptima de programas predeterminados .

Durante la instalación

Además de los procedimientos de instalación que normalmente se practicaban en Windows XP, una aplicación basada en Windows Vista o posterior debe registrarse con la característica Programas predeterminados para aprovechar su funcionalidad.

Realice la siguiente secuencia de pasos durante la instalación. Los pasos 1-3 coinciden con los pasos que se usaron en Windows XP; el paso 4 era nuevo en Windows Vista.

  1. Instale los archivos binarios necesarios.
  2. Escriba ProgIDs en HKEY_LOCAL_MACHINE. Tenga en cuenta que las aplicaciones deben crear progID específicos de la aplicación para sus asociaciones.
  3. Registre la aplicación con programas predeterminados como se explicó anteriormente en Registro de una aplicación para su uso con programas predeterminados.

Después de la instalación

En esta sección se describe cómo la solicitud de la aplicación debe presentar primero sus opciones predeterminadas a cada usuario. También se describe cómo una aplicación puede supervisar su estado como valor predeterminado para sus posibles asociaciones y protocolos.

Experiencias de primera ejecución

Cuando un usuario ejecuta la aplicación por primera vez, se recomienda que la aplicación muestre la interfaz de usuario al usuario que normalmente incluye estas dos opciones:

  • Acepte la configuración predeterminada de la aplicación. Esta opción está activada de forma predeterminada.
  • Personalice la configuración predeterminada de la aplicación.

Antes de Windows 8, si el usuario acepta la configuración predeterminada, la aplicación llama a IApplicationAssociationRegistration::SetAppAsDefaultAll, que convierte todas las asociaciones de nivel de equipo que se declaran durante la instalación en la configuración por usuario para ese usuario.

Si el usuario decide personalizar la configuración, la aplicación llama a IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI para mostrar la interfaz de usuario de asociación de archivos. En la ilustración siguiente se muestra esta ventana para el reproductor multimedia de Litware ficticio.

captura de pantalla de las asociaciones de conjunto para una página de programa para litware

La ventana de asociación de archivos muestra los valores predeterminados que la aplicación registró y también muestra el valor predeterminado actual para otras extensiones y protocolos. Una vez que el usuario termine de personalizar sus valores predeterminados, haga clic en el botón Guardar para confirmar los cambios. Si el usuario hace clic en Cancelar, la ventana se cierra sin guardar los cambios.

Debe usar esta interfaz de usuario para las aplicaciones en lugar de crear la suya propia. Al hacerlo, se guardan los recursos necesarios anteriormente para desarrollar la interfaz de usuario de asociación de archivos. También garantiza que las asociaciones se guardan correctamente.

Establecer una aplicación para comprobar si es el valor predeterminado

Nota

Esto ya no se admite a partir de Windows 8.

 

Las aplicaciones suelen comprobar si se establecen como el valor predeterminado cuando se ejecutan. Establezca las aplicaciones para que realicen esta comprobación llamando a IApplicationAssociationRegistration::QueryAppIsDefault o IApplicationAssociationRegistration::QueryAppIsDefaultAll.

Si la aplicación determina que no es el valor predeterminado, puede presentar la interfaz de usuario que le pregunta al usuario si desea aceptar la situación actual o hacer que la aplicación sea la predeterminada. Incluya siempre una casilla en esta interfaz de usuario seleccionada de forma predeterminada y que presente la opción de no volver a preguntarse.

Nota

La elección predeterminada debe ser controlada por el usuario. Una aplicación nunca debe reclamar un valor predeterminado sin preguntar al usuario.

 

En la ilustración siguiente se muestra un cuadro de diálogo de ejemplo.

captura de pantalla de un cuadro de diálogo de ejemplo

Recursos adicionales

Procedimientos recomendados para asociaciones de archivos

Escenario de ejemplo de asociación de archivos

Directrices para administrar aplicaciones predeterminadas en Windows Vista y versiones posteriores

Establecer el acceso al programa y los valores predeterminados del equipo (SPAD)