Accesibilidad de registro de tecnología de asistencia

En este artículo se explica cómo registrar una aplicación de accesibilidad con el Centro de accesibilidad. También se explica cómo adaptar la aplicación de accesibilidad para que funcione bien con el escritorio seguro.

El Centro de accesibilidad es una aplicación de Panel de control para Microsoft Windows que reúne la funcionalidad de accesibilidad y facilidad de uso. Mediante el uso del Centro de acceso fácil, los usuarios pueden configurar sus equipos para satisfacer sus necesidades físicas y cognitivas.

Una función del Centro de accesibilidad es ayudar a los usuarios a iniciar aplicaciones de accesibilidad, como Narrador, Teclado en pantalla y Lupa. Las aplicaciones de terceros registradas también aparecen en el Centro de acceso fácil y se pueden iniciar directamente desde allí.

Las aplicaciones de accesibilidad deben funcionar sin problemas con el escritorio seguro. El escritorio seguro es la interfaz de usuario que aparece cuando el equipo está bloqueado (en el inicio de sesión o cuando el usuario ha bloqueado el escritorio) y cuando se le pide que permita una acción potencialmente no segura. Por motivos de seguridad, Windows coloca límites en software de terceros que se ejecuta en el escritorio seguro. Si desea que la aplicación de accesibilidad se ejecute en el escritorio seguro, debe registrar la aplicación con el Centro de acceso fácil.

Registro con el Centro de facilidad de acceso

Las aplicaciones de accesibilidad se registran con el Centro de accesibilidad mediante la creación de una o varias claves del Registro cuando se instala la aplicación. En la tabla siguiente se muestra la información contenida en las claves del Registro.

Nombre Descripción Obligatorio/Opcional Lenguaje
Nombre de la aplicación Nombre de la aplicación, que se encuentra en un archivo de recursos. Este valor del Registro contiene una cadena en un formato especificado. Esta podría ser una versión localizada del nombre de la aplicación, si la aplicación está localizada en idiomas distintos del inglés. El nombre aparece en el Centro de acceso fácil.
Mandatory Localizada
ATExe Nombre del archivo ejecutable de la aplicación o la imagen. Windows usa este valor para determinar si la aplicación de accesibilidad se está ejecutando.
Mandatory No localizado
CopySettingsToLockedDesktop Valor DWORD que indica si se va a copiar la configuración de la aplicación de accesibilidad en el escritorio bloqueado.
Si este valor es 1, la aplicación puede escribir la configuración en una ubicación en el registro de usuario y Windows copia la configuración en la misma ubicación del registro de usuario para el escritorio bloqueado. Esto permite que la aplicación conserve su estado desde el escritorio "normal" al escritorio bloqueado.
Opcionales No localizado
Descripción Una breve descripción de la aplicación, desde un archivo de recursos. Este valor del Registro contiene una cadena en un formato especificado. Esta podría ser una versión localizada de la descripción, si la aplicación está localizada en idiomas distintos del inglés. La longitud de esta cadena debe tener menos de 512 caracteres.
La descripción aparece en el Centro de accesibilidad para proporcionar información adicional sobre la aplicación de accesibilidad al usuario.
Este valor también se puede usar para notificar al usuario que la aplicación no se usa en el escritorio seguro.
Mandatory Localizada
Perfil Fragmento corto de XML que especifica los alojamientos que proporciona la aplicación. Garantiza que la aplicación aparezca bajo la categoría correcta en el Centro de acceso fácil.
Mandatory No localizado
PassiveAutoStartBehavior

Valor DWORD que indica si el comportamiento de inicio automático heredado está habilitado.

El valor predeterminado es 0, lo que indica que un AT requiere un comportamiento de inicio automático heredado. Esto hace que la configuración "Iniciar después del inicio de sesión" para que AT se desprotegirá en la experiencia rápida (OOBE) y Panel de control (consulte Panel de control -> Facilidad de acceso -> Centro de acceso -> Cambiar la configuración de inicio de sesión) e inicia automáticamente at después de UAC y pantalla de bloqueo.

Un valor de 1 indica que at debe usar el nuevo comportamiento de inicio automático en el que la configuración "Iniciar después del inicio de sesión" para esa AT no está activada en la experiencia rápida (OOBE) y Panel de control, y at se inicia automáticamente una vez por sesión de usuario (en el inicio de sesión) solo si se activa la configuración "iniciar después del inicio de sesión".

Opcionales No localizado
SecureDesktopAccommodation Nombre de una aplicación de accesibilidad alternativa que se va a ejecutar en el escritorio seguro en lugar de esta aplicación. La alternativa puede ser otra aplicación, una versión diferente de la misma aplicación, una de las aplicaciones de accesibilidad que se incluye en Windows o "ninguna" si no desea ejecutar ninguna aplicación de accesibilidad en el escritorio seguro.
Opcionales No localizado
Perfil simple Valor que describe cómo clasificar la aplicación en una palabra o dos: lector de pantalla, lupa o teclado en pantalla, por ejemplo.
Mandatory No localizado
StartExe Ruta de acceso completa del archivo ejecutable. Este valor se usa para iniciar la aplicación de accesibilidad.
Mandatory No localizado
StartParams Argumentos de la línea de comandos. Estos valores se usan junto con StartExe para iniciar la aplicación.
Opcionales No localizado
TerminateOnDesktopSwitch Valor DWORD que especifica cómo responde la aplicación de accesibilidad a las transiciones hacia o desde el escritorio seguro.
Si este valor no existe o es 1, Windows finaliza y reinicia la aplicación en cada transición hacia o desde el escritorio seguro. Este es el comportamiento predeterminado.
Si este valor es 0, Windows no finaliza la aplicación de accesibilidad en una transición de escritorio. La aplicación continúa ejecutándose en el escritorio anterior y Windows inicia una nueva instancia en el nuevo escritorio si aún no se está ejecutando una instancia.
Opcionales No localizado

Localización

Los valores del Registro de Nombre y Descripción de la aplicación deben ser localizables para admitir la interfaz de usuario multilingüe (MUI).

Estas cadenas tienen el siguiente formato, donde los corchetes angulares indican los elementos necesarios y corchetes indican un elemento opcional.

@<ResDllPath\ResDLLFilename>,-<resID>[;< comentario>]

<ResDllPath\ResDLLFilename> es la ruta de acceso al archivo DLL del recurso. La ruta de acceso puede contener variables de entorno.

<resID> es el identificador de recurso de la cadena.

[comentario] contiene cualquier comentario opcional.

Este es un ejemplo:

@%SystemRoot%\system32\anyAT.dll,-5020

Para obtener más información sobre MUI, consulta Centro de conocimiento de MUI de Windows.

Perfil de HCI

El perfil interacción del equipo humano (HCI) es una manera de determinar qué alojamientos proporcionar en función de las necesidades del usuario. Las aplicaciones de accesibilidad deben registrar información sobre el tipo de discapacidad que la aplicación ayuda a dar cabida.

El valor del Registro de perfiles contiene XML que describe el tipo de discapacidad dirigida por la aplicación de accesibilidad. Este XML tiene el formato siguiente:

<HCIModel>
<Accommodation type="disability"/>
</HCIModel>

Los valores válidos para el atributo Tipo de alojamiento son los siguientes:

  • visión leve
  • visión grave
  • cognitivo leve
  • cognitivo grave
  • dexteridad leve
  • dexteridad grave
  • audición leve
  • audición grave
  • voz leve
  • voz grave

Nota

Estos valores distinguen entre mayúsculas y minúsculas.

Si una aplicación de accesibilidad admite varios alojamientos, el valor del Registro de perfiles debe incluir un atributo tipo de alojamiento para cada alojamiento.

Facilidad de acceso a los detalles del registro

Para registrar la aplicación de accesibilidad, debe crear una clave para la aplicación en la siguiente ubicación del Registro y rellenarla con pares nombre-valor.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\

Asigne un nombre a la clave del Registro de la aplicación con el siguiente formato:

"CompanyName_ProductName_v#"

Por ejemplo, "Contoso_Magnifier_v2.0".

Para agregar valores del Registro, el programa de instalación debe ejecutarse con privilegios elevados.

Alojamiento seguro de escritorio

La clave del Registro SecureDesktopAccommodation le permite especificar cómo responde la aplicación de accesibilidad al escritorio seguro. De forma predeterminada, el Centro de acceso fácil inicia la aplicación en el escritorio seguro si ya se estaba ejecutando en el escritorio normal o si está configurado para ejecutarse en el escritorio de inicio de sesión. Mediante la clave SecureDesktopAccommodation , puede hacer lo siguiente:

  • Especifique una versión alternativa de la aplicación para su uso en el escritorio seguro. Por ejemplo, es posible que tenga una versión alternativa que deshabilite las características no seguros o esté optimizada para usar menos memoria e iniciarse más rápido.

    Para especificar la versión alternativa, establezca la clave SecureDesktopAccommodation en el nombre de la versión alternativa. Por ejemplo, si registró la aplicación en la clave Contoso_Screen Reader_v1.0, podría registrar la versión alternativa en Contoso_Screen ReaderSecure_v1.0. A continuación, establezca la clave SecureDesktopAccommodation de Contoso_Screen Reader_v1.0 en "Contoso_Screen ReaderSecure_v1.0".

  • Especifique una aplicación de accesibilidad de Microsoft que se usará en el escritorio seguro en lugar de la aplicación. Para esta opción, establezca SecureDesktopAccommodation en el nombre de la aplicación de accesibilidad de Microsoft determinada: "osk", "magnifierpane" o "Narrador".

  • Especifique que la aplicación no se debe ejecutar en el escritorio seguro y ninguna de las aplicaciones alternativas. Para esta opción, establezca SecureDesktopAccommodation en "none" (recommend) o el nombre de una aplicación inexistente.

Si la clave del Registro SecureDesktopAccommodation para la aplicación de accesibilidad especifica una aplicación de accesibilidad de Microsoft que se va a ejecutar en el escritorio seguro en lugar de la aplicación, Windows notifica al usuario que realiza la transición al escritorio seguro. Para notificar al usuario, Windows muestra la cadena especificada en la clave del Registro Descripción de la aplicación. Por ejemplo, si la aplicación ScreenReader Deluxe 1.0 usa Microsoft Narrator en el escritorio seguro, incluiría una cadena Description como "Microsoft Narrator se usará en el escritorio seguro, inicio de sesión y otros escritorios seguros en lugar de ScreenReader Deluxe 1.0".

Si la clave SecureDesktopAccommodation de la aplicación está establecida en "none", use la clave Description para indicar al usuario que la aplicación no está disponible en el escritorio seguro y no se proporciona ninguna alternativa.

Windows muestra el texto Descripción en las ubicaciones pertinentes del Centro de acceso.

Ejecución en la instalación y en el escritorio de inicio de sesión

Si anexa el nombre de clave registrada de la aplicación de accesibilidad a la cadena en la siguiente ubicación del Registro, Windows iniciará la aplicación inmediatamente después de instalarla. Además, Windows ejecutará automáticamente la aplicación cada vez que el escritorio de inicio de sesión esté activo.

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\Configuration

La clave de configuración es una cadena delimitada por comas. Para agregar la aplicación, anexe una cadena que sea la misma que la clave del Registro de la aplicación en HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\.

Ejecución en un trabajo

Si la clave del Registro TerminateOnDesktopSwitch no está presente o está establecida en distinto de cero, Windows ejecuta la aplicación en el contexto de un trabajo, finalizando y reiniciando la aplicación con cada transición de escritorio. La ejecución en un trabajo garantiza que solo se ejecuta una sola instancia de la aplicación en un momento determinado y libera a la aplicación de tener que supervisar el estado del escritorio. Las desventajas de ejecutarse en un trabajo incluyen:

  • La aplicación incurre en un costo de inicio con cada transición de escritorio.
  • La aplicación solo se puede iniciar a través del Centro de acceso fácil.
  • La aplicación debe guardar continuamente su configuración porque una transición de escritorio puede finalizarla en cualquier momento.

Si la clave TerminateOnDesktopSwitch existe y se establece en 0, Windows no ejecuta la aplicación de accesibilidad en un trabajo. Esto tiene las ventajas siguientes:

  • No hay costos de inicio asociados a las transiciones de escritorio.
  • La aplicación se puede iniciar fuera del Centro de acceso.

Las desventajas de no ejecutarse en un trabajo incluyen:

  • Dado que la aplicación no se reinicia en las transiciones de escritorio, debe detectar cuándo el escritorio actual está inactivo y responder adecuadamente. Por ejemplo, la aplicación debe renunciar al control de hardware para que la versión de escritorio segura de la aplicación pueda usarla y la aplicación debe entrar en modo de suspensión para evitar el uso de recursos de procesador.
  • Si la aplicación se puede iniciar a través del menú Inicio, el Explorador de Windows o la línea de comandos, debe informarse sobre la facilidad de acceso. Para obtener más información, vea Tecla del logotipo de Windows + U.
  • Dado que varias copias de la aplicación se pueden ejecutar simultáneamente en diferentes escritorios, la aplicación debe escribirse para admitir varias copias en ejecución.

Tecla del logotipo de Windows + U

Si la aplicación de accesibilidad está configurada para ejecutarse en un trabajo, el código de inicio de la aplicación debe incluir una llamada a la función IsProcessInJob para determinar si la aplicación se está iniciando en un trabajo. Si es así, la aplicación debe iniciar el Centro de acceso y, a continuación, salir. En el ejemplo siguiente se muestra cómo llamar a IsProcessInJob.

BOOL fAlreadyInJob;
BOOL fSuccess = IsProcessInJob(GetCurrentProcess(), NULL, &fAlreadyInJob); 

Si la aplicación de accesibilidad está configurada para ejecutarse fuera de un trabajo, debe notificar al Centro de acceso fácil que la aplicación se está iniciando y continúa como es normal.

Independientemente de cómo se configure la aplicación, si proporciona una manera de salir desde dentro de la aplicación, como un botón Cerrar, la aplicación debe notificar a la Facilidad de acceso centro que sale.

Una aplicación notifica al Centro de acceso la facilidad de acceso estableciendo una clave temporal del Registro e insertando la combinación de teclas Logotipo de Windows + U en el flujo de entrada.

La aplicación debe crear la clave temporal en la siguiente ubicación.

HKCU\Software\Microsoft\Windows NT\CurrentVersion\AccessibilityTemp

La clave temporal debe tener el mismo nombre que el nombre de la aplicación registrada, como "Contoso_Screen Reader_v1.0". El valor de la clave es un DWORD establecido en 0x0003 cuando se inicia o 0x0002 cuando se sale de la aplicación.

INPUT input[4] = {0};

input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_LWIN;
input[0].ki.dwFlags = 0;

input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0x55; // U key
input[1].ki.dwFlags = 0;

input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = 0x55; // U key
input[2].ki.dwFlags = KEYEVENTF_KEYUP;

input[3].type = INPUT_KEYBOARD;
input[3].ki.wVk = VK_LWIN;
input[3].ki.dwFlags = KEYEVENTF_KEYUP;

SendInput(ARRAYSIZE(input), input, sizeof(input[0]));

Tecla del logotipo de Windows + Subir volumen

Cuando el usuario inicia la aplicación de accesibilidad presionando la combinación de teclas Logotipo de Windows + Subir volumen (por ejemplo, en un dispositivo de tableta), el Centro de acceso pasa el siguiente argumento de línea de comandos a la aplicación:

/hardwarebuttonlaunch

La aplicación puede usar este argumento para determinar si se debe iniciar normalmente o para ajustar el comportamiento en consecuencia.

Transferencia de la configuración de escritorio seguro

Si la aplicación de accesibilidad admite el escritorio seguro, puede usar el registro para copiar la configuración cuando la aplicación pasa al escritorio seguro. Copiar la configuración ayuda a que la transición al escritorio seguro sea más fluida para el usuario.

Para copiar la configuración, establezca la clave del Registro CopySettingsToLockedDesktop de la aplicación en 1 y almacene la configuración en la siguiente ubicación del Registro.

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\<AT Key Name>

El Centro de acceso supervisa esta ubicación del Registro mientras se ejecuta la aplicación. Cuando se produce una transición al escritorio seguro, el Centro de acceso fácil copia la configuración en la misma ubicación en el subárbol HKCU de escritorio seguro. Después, la aplicación puede leer la configuración y reanudar su estado.

La aplicación de accesibilidad debe escribir su configuración a intervalos regulares o cada vez que cambien los valores. La escritura de la configuración en la salida de la aplicación no funcionará. Si la aplicación se ejecuta en un trabajo, se termina en la transición fuera del escritorio seguro, antes de que el código de salida tenga la oportunidad de ejecutarse. Si la aplicación no se ejecuta en un trabajo, la aplicación no finaliza en la transición fuera del escritorio seguro.

Precaución

Dado que las claves del Registro que se describen aquí están escritas en modo de usuario, no son seguras. Si la aplicación de accesibilidad lee el contenido de estas claves, debe comprobar cuidadosamente los datos y usarlos con precaución. En concreto, la aplicación debe realizar una comprobación de límites en los valores DWORD , tener cuidado con las longitudes de cadena, no debe leer nombres dll de complemento y no debe ejecutar ningún comando encontrado en cadenas.

Ejemplos del Registro

En el ejemplo siguiente se muestran los posibles valores del Registro para un producto ficticio denominado Contoso ScreenReader versión 2.0, cuyo nombre localizado se almacena como un recurso.

Los valores de la tabla están bajo la clave siguiente:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\Contoso_Screen Reader_v2.0

Nombre Tipo data
ApplicationName REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5020
Descripción REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5040
Perfil REG_SZ
XML
<HCIModel>
   <Accommodation type="low vision">
   <Accommodation type="severe vision">
   <Accommodation type="mild cognitive">
</HCIModel>
SimpleProfile REG_SZ ScreenReader
StartExe REG_SZ C:\ContosoTools\Bin\ContosoSR.exe
StartParams REG_SZ
SecureDesktopAccommodation REG_SZ Narrador

Si la aplicación proporciona un lector de pantalla y una lupa de pantalla en un único ejecutable, los valores del componente lector de pantalla podrían tener este aspecto:

Nombre Tipo data
ApplicationName REG_SZ @C:\Program Files\Contoso\Contosores.dll,-30
Descripción REG_SZ @C:\Program Files\Contoso\Contosores.dll,-32
Perfil REG_SZ
XML
<HCIModel>
   <Accommodation type="low vision">
   <Accommodation type="severe vision">
   <Accommodation type="mild cognitive">
</HCIModel>
SimpleProfile REG_SZ ScreenReader
StartExe REG_SZ C:\Program Files\Contoso\Bin\ContosoSR.exe
StartParams REG_SZ /r

Los valores del componente de lupa estarían en la siguiente clave:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Contosoibility\ATs\Contoso_Magnifier_v2.0

Nombre Tipo data
ApplicationName REG_SZ @c:\Program Files\Contoso\Contosores.dll,-31
Descripción REG_SZ @c:\Program Files\Contoso\Contosores.dll,-42
Perfil REG_SZ
XML
<HCIModel>
   <Accommodation type="mild vision">
</HCIModel>
SimpleProfile REG_SZ Ampliación
StartExe REG_SZ c:\Program Files\Contoso\Bin\ContosoSR.exe
StartParams REG_SZ /m