Registro de la aplicación

En este tema se describe cómo las aplicaciones pueden exponer información sobre sí mismas necesaria para habilitar determinados escenarios. Esto incluye información necesaria para localizar la aplicación, los verbos que admite la aplicación y los tipos de archivos que una aplicación puede controlar.

Este tema se organiza de la siguiente manera:

Nota

Las aplicaciones también se pueden registrar en las aplicaciones del panel de control Set Program Access and Computer Defaults (SPAD) y Set Your Default Programs (SYDP). Para obtener información sobre el registro de aplicaciones SPAD y SYDP, vea Directrices para asociaciones de archivos y programas predeterminados, y Establecer el acceso al programa y los valores predeterminados del equipo (SPAD).

Búsqueda de un archivo ejecutable de aplicación

Cuando se llama a la función ShellExecuteEx con el nombre de un archivo ejecutable en su parámetro lpFile , hay varios lugares donde la función busca el archivo. Se recomienda registrar la aplicación en la subclave del Registro rutas de aplicación . Al hacerlo, se evita la necesidad de que las aplicaciones modifiquen la variable de entorno PATH del sistema.

Se busca el archivo en las siguientes ubicaciones:

  • El directorio de trabajo actual.
  • Solo en el directorio de Windows (no se busca ningún subdirectorio).
  • Directorio Windows\System32 .
  • Directorios enumerados en la variable de entorno PATH.
  • Recomendado: HKEY_LOCAL_MACHINE\ rutas de acceso dela aplicaciónMicrosoftWindows\CurrentVersion\de SOFTWARE\\

Registro de aplicaciones

Tanto las subclaves del Registro de rutas de aplicación como las aplicaciones se usan para registrar y controlar el comportamiento del sistema en nombre de las aplicaciones. La subclave Rutas de aplicación es la ubicación preferida.

Uso de la subclave Rutas de acceso de la aplicación

En Windows 7 y versiones posteriores, se recomienda encarecidamente instalar aplicaciones por usuario en lugar de por equipo. Una aplicación instalada para por usuario se puede registrar en HKEY_CURRENT_USER\ Rutas de acceso dela aplicaciónMicrosoftWindows\CurrentVersion\ desoftware\\. Una aplicación instalada para todos los usuarios del equipo se puede registrar en HKEY_LOCAL_MACHINE\ Rutas de acceso de laaplicaciónMicrosoft\Windows\CurrentVersion\ desoftware\.

Las entradas que se encuentran en Rutas de acceso de aplicación se usan principalmente con los siguientes fines:

  • Para asignar el nombre de archivo ejecutable de una aplicación a la ruta de acceso completa de ese archivo.
  • Para incluir información previamente en la variable de entorno PATH por aplicación, por proceso.

Si el nombre de una subclave de rutas de acceso de aplicación coincide con el nombre de archivo, shell realiza dos acciones:

  • La entrada (valor predeterminado) se usa como ruta de acceso completa del archivo.
  • La entrada Path de esa subclave está preinscrita en la variable de entorno PATH de ese proceso. Si no es necesario, se puede omitir el valor path.

Entre los posibles problemas que se deben tener en cuenta se incluyen:

  • Shell limita la longitud de una línea de comandos a MAX_PATH * 2 caracteres. Si hay muchos archivos enumerados como entradas del Registro o sus rutas de acceso son largos, los nombres de archivo más adelante en la lista podrían perderse a medida que se trunca la línea de comandos.
  • Algunas aplicaciones no aceptan varios nombres de archivo en una línea de comandos.
  • Algunas aplicaciones que aceptan varios nombres de archivo no reconocen el formato en el que el Shell los proporciona. Shell proporciona la lista de parámetros como una cadena entre comillas, pero algunas aplicaciones pueden requerir cadenas sin comillas.
  • No todos los elementos que se pueden arrastrar forman parte del sistema de archivos; por ejemplo, impresoras. Estos elementos no tienen una ruta de acceso Win32 estándar, por lo que no hay ninguna manera de proporcionar un valor lpParameters significativo a ShellExecuteEx.

El uso de la entrada DropTarget evita estos posibles problemas proporcionando acceso a todos los formatos del Portapapeles, incluidos CFSTR_SHELLIDLIST (para listas de archivos largos) y CFSTR_FILECONTENTS (para objetos que no son del sistema de archivos).

Para registrar y controlar el comportamiento de las aplicaciones con la subclave Rutas de acceso de la aplicación:

  1. Agregue una subclave con el mismo nombre que el archivo ejecutable a la subclave Rutas de acceso de aplicación, como se muestra en la siguiente entrada del Registro.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Consulte la tabla siguiente para obtener más información sobre las entradas de subclave de rutas de aplicación.

Entrada del Registro Detalles
(Es el valor predeterminado). Es la ruta de acceso completa a la aplicación. El nombre de la aplicación proporcionado en la entrada (valor predeterminado) se puede indicar con o sin su extensión .exe. Si es necesario, la función ShellExecuteEx agrega la extensión al buscar en la subclave Rutas de acceso de la aplicación . La entrada es del tipo REG_SZ .
DontUseDesktopChangeRouter Es obligatorio que las aplicaciones del depurador eviten interbloqueos de diálogo de archivos al depurar el proceso del Explorador de Windows. Si se establece la entrada DontUseDesktopChangeRouter, se produce un control ligeramente menos eficaz de las notificaciones de cambio, sin embargo. La entrada es del tipo REG_DWORD y el valor es 0x1.
DropTarget Es un identificador de clase (CLSID). La entrada DropTarget contiene el CLSID de un objeto (normalmente un servidor local en lugar de un servidor en proceso) que implementa IDropTarget. De forma predeterminada, cuando el destino de colocación es un archivo ejecutable y no se proporciona ningún valor DropTarget, shell convierte la lista de archivos quitados en un parámetro de línea de comandos y lo pasa a ShellExecuteEx a través de lpParameters.
Ruta de acceso Proporciona una cadena (en forma de lista separada por punto y coma de directorios) para anexar a la variable de entorno PATH cuando se inicia una aplicación llamando a ShellExecuteEx. Es la ruta de acceso completa a la .exe. Es de REG_SZ. En Windows 7 y versiones posteriores, el tipo puede ser REG_EXPAND_SZ y normalmente es REG_EXPAND_SZ %ProgramFiles%. Nota: Además de las entradas (predeterminadas), Path y DropTarget reconocidas por shell, una aplicación también puede agregar valores personalizados a la subclave Rutas de acceso de aplicación de su archivo ejecutable. Animamos a los desarrolladores de aplicaciones a usar la subclave Rutas de acceso de aplicación para proporcionar una ruta de acceso específica de la aplicación en lugar de agregar a la ruta de acceso del sistema global.
SupportedProtocols Crea una cadena que contiene los esquemas de protocolo de dirección URL para una clave determinada. Esto puede contener varios valores del Registro para indicar qué esquemas se admiten. Esta cadena sigue el formato de scheme1:scheme2. Si esta lista no está vacía, se agregará el archivo : a la cadena. Este protocolo se admite implícitamente cuando se define SupportedProtocols .
UseUrl Indica que la aplicación puede aceptar una dirección URL (en lugar de un nombre de archivo) en la línea de comandos. Las aplicaciones que pueden abrir documentos directamente desde Internet, como exploradores web y reproductores multimedia, deben establecer esta entrada.
Cuando la función ShellExecuteEx inicia una aplicación y no se establece el valor UseUrl=1, ShellExecuteEx descarga el documento en un archivo local e invoca al controlador en la copia local.
Por ejemplo, si la aplicación tiene este conjunto de entradas y un usuario hace clic con el botón derecho en un archivo almacenado en un servidor web, el verbo Abrir estará disponible. Si no es así, el usuario tendrá que descargar el archivo y abrir la copia local.
La entrada UseUrl es de REG_DWORD tipo y el valor es 0x1.
En Windows Vista y versiones anteriores, esta entrada indicó que la dirección URL se debe pasar a la aplicación junto con un nombre de archivo local, cuando se llama a través de ShellExecuteEx. En Windows 7, indica que la aplicación puede comprender cualquier dirección URL http o https que se le pase, sin tener que proporcionar también el nombre del archivo de caché. Esta clave del Registro está asociada a la clave SupportedProtocols .

Uso de la subclave Aplicaciones

A través de la inclusión de entradas del Registro en la subclave HKEY_CLASSES_ROOT\Applications\ApplicationName.exe , las aplicaciones pueden proporcionar la información específica de la aplicación que se muestra en la tabla siguiente.

Entrada del Registro Descripción
shell\verbo Proporciona el método de verbo para llamar a la aplicación desde OpenWith. Sin una definición de verbo especificada aquí, el sistema asume que la aplicación admite CreateProcess y pasa el nombre de archivo en la línea de comandos. Esta funcionalidad se aplica a todos los métodos de verbo, incluidos DropTarget, ExecuteCommand y Dynamic Data Exchange (DDE).
DefaultIcon Permite a una aplicación proporcionar un icono específico para representar la aplicación en lugar del primer icono almacenado en el archivo .exe.
FriendlyAppName Proporciona una manera de obtener un nombre localizable para mostrar para una aplicación en lugar de solo la información de versión que aparece, lo que puede no ser localizable. La consulta de asociación ASSOCSTR lee este valor de entrada del Registro y vuelve a usar el nombre FileDescription en la información de versión. Si falta ese nombre, la consulta de asociación tiene como valor predeterminado el nombre para mostrar del archivo. Las aplicaciones deben usar ASSOCSTR_FRIENDLYAPPNAME para recuperar esta información para obtener el comportamiento adecuado.
SupportedTypes Enumera los tipos de archivo que admite la aplicación. Esto permite que la aplicación aparezca en el menú en cascada del cuadro de diálogo Abrir con .
NoOpenWith Indica que no se especifica ninguna aplicación para abrir este tipo de archivo. Tenga en cuenta que si se ha establecido una subclave OpenWithProgIDs para una aplicación por tipo de archivo y la subclave ProgID no tiene también una entrada NoOpenWith, esa aplicación aparecerá en la lista de aplicaciones recomendadas o disponibles aunque haya especificado la entrada NoOpenWith. Para obtener más información, vea Cómo incluir una aplicación en el cuadro de diálogo Abrir con y Cómo excluir una aplicación del cuadro de diálogo Abrir con .
IsHostApp Indica que el proceso es un proceso de host, como Rundll32.exe o Dllhost.exe, y no se debe tener en cuenta para anclar o incluir el menú Inicio en la lista Más usado (MFU). Cuando se inicia con un acceso directo que contiene una lista de argumentos no NULL o identificadores explícitos del modelo de usuario de aplicación (AppUserModelIDs), el proceso se puede anclar (como ese acceso directo). Estos métodos abreviados son candidatos para su inclusión en la lista MFU.
NoStartPage Indica que el archivo ejecutable y los accesos directos de la aplicación deben excluirse del menú Inicio y de anclar o incluir en la lista MFU. Esta entrada se usa normalmente para excluir herramientas del sistema, instaladores y desinstaladores, y archivos léame.
UseExecutableForTaskbarGroupIcon Hace que la barra de tareas use el icono predeterminado de este archivo ejecutable si no hay ningún acceso directo anclable para esta aplicación y, en lugar del icono de la ventana que se encontró por primera vez.
TaskbarGroupIcon Especifica el icono usado para invalidar el icono de la barra de tareas. El icono de ventana se usa normalmente para la barra de tareas. Establecer la entrada TaskbarGroupIcon hace que el sistema use el icono del .exe de la aplicación en su lugar.

Ejemplos

A continuación se muestran algunos ejemplos de registros de aplicaciones a través de la subclave HKEY_CLASSES_ROOT\Aplicaciones\ApplicationName.exe . Todos los valores de entrada del Registro son de REG_SZ tipo, con la excepción de DefaultIcon que es de REG_EXPAND_SZ tipo.

HKEY_CLASSES_ROOT
   Applications
      wordpad.exe
         FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         SupportedTypes
            .3gp2
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         DefaultIcon
            (Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
   Applications
      WScript.exe
         NoOpenWith
HKEY_CLASSES_ROOT
   Applications
      photoviewer.dll
         shell
            open
               DropTarget
                  Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
   Applications
      mspaint.exe
         SupportedTypes
            .bmp
            .dib
            .rle
            .jpg
            .jpeg
            .jpe
            .jfif
            .gif
            .emf
            .wmf
            .tif
            .tiff
            .png
            .ico

Registrar verbos y otra información de asociación de archivos

Las subclaves registradas en HKEY_CLASSES_ROOT\SystemFileAssociations permiten que el Shell defina el comportamiento predeterminado de los atributos para los tipos de archivo y habilite las asociaciones de archivos compartidos. Cuando los usuarios cambian la aplicación predeterminada para un tipo de archivo, el ProgID de la nueva aplicación predeterminada tiene prioridad al proporcionar verbos y otra información de asociación. Esta prioridad se debe a que es la primera entrada de la matriz de asociaciones. Si se cambia el programa predeterminado, la información de progID anterior ya no está disponible.

Para tratar de forma proactiva las consecuencias de un cambio en los programas predeterminados, puede usar HKEY_CLASSES_ROOT\SystemFileAssociations para registrar verbos y otra información de asociación. Debido a su ubicación después del ProgID en la matriz de asociación, estos registros son de menor prioridad. Estas SystemFileAssociationsregistrations son estables incluso cuando los usuarios cambian los programas predeterminados y proporcionan una ubicación para registrar verbos secundarios que siempre estarán disponibles para un tipo de archivo determinado. Para obtener un ejemplo del Registro, vea Registrar un tipo percibido más adelante en este tema.

En el siguiente ejemplo del Registro se muestra lo que sucede cuando el usuario ejecuta el elemento Programas predeterminados en Panel de control para cambiar el valor predeterminado de los archivos de .mp3 a App2ProgID. Después de cambiar el valor predeterminado, Verb1 ya no está disponible y Verb2 se convierte en el valor predeterminado.

HKEY_CLASSES_ROOT
   .mp3
      (Default) = App1ProgID
HKEY_CLASSES_ROOT
   App1ProgID
      shell
         Verb1
HKEY_CLASSES_ROOT
   App2ProgID
      shell
         Verb2

Registrar un tipo percibido

Los valores del Registro para los tipos percibidos se definen como subclaves de la subclave del Registro HKEY_CLASSES_ROOT\SystemFileAssociations . Por ejemplo, el texto de tipo percibido se registra de la siguiente manera:

HKEY_CLASSES_ROOT
   SystemFileAssociations
      text
         shell
            edit
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
            open
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"

El tipo percibido de un tipo de archivo se indica incluyendo un valor PerceivedType en la subclave del tipo de archivo. El valor de PerceivedType se establece en el nombre del tipo percibido registrado en HKEY_CLASSES_ROOT\ subclave del RegistroSystemFileAssociations, como se muestra en el ejemplo anterior del Registro. Para declarar archivos .cpp como de tipo percibido "text", por ejemplo, agregue la siguiente entrada del Registro:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Tipos de archivo

Cómo funcionan las asociaciones de archivos

Vista de contenido por tipo de archivo o tipo

Comprobador de tipo de archivo

Controladores de tipos de archivo

Identificadores de programación

Tipos percibidos

Matrices de asociación