Регистрация специальных возможностей

В этой статье объясняется, как зарегистрировать приложение со специальными возможностями в Центре специальных возможностей. В нем также объясняется, как адаптировать приложение специальных возможностей, чтобы оно работало с безопасным рабочим столом.

Центр специальных возможностей — это панель управления приложение для Microsoft Windows, объединяющее функции специальных возможностей и простоты использования. С помощью Центра специальных возможностей пользователи могут настраивать свои компьютеры в соответствии со своими физическими и когнитивными потребностями.

Одна из функций Центра специальных возможностей заключается в том, чтобы помочь пользователям запускать специальные возможности, включая экранный диктор, экранную клавиатуру и экранную лупу. Зарегистрированные сторонние приложения также отображаются в Центре специальных возможностей и могут запускаться непосредственно оттуда.

Приложения со специальными возможностями должны работать без проблем с защищенным рабочим столом. Безопасный рабочий стол — это пользовательский интерфейс, который появляется, когда компьютер заблокирован (при входе в систему или когда пользователь заблокировал рабочий стол) и когда пользователю предлагается разрешить потенциально небезопасное действие. По соображениям безопасности Windows устанавливает ограничения на стороннее программное обеспечение, работающее на защищенном рабочем столе. Если вы хотите, чтобы приложение со специальными возможностями выполнялось на защищенном рабочем столе, необходимо зарегистрировать его в Центре специальных возможностей.

Регистрация в Центре специальных возможностей

Приложения со специальными возможностями регистрируются в Центре специальных возможностей, создавая один или несколько разделов реестра при установке приложения. В следующей таблице перечислены сведения, содержащиеся в разделах реестра.

Имя Описание Обязательно или необязательно Язык
Имя приложения Имя приложения, которое находится в файле ресурсов. Это значение реестра содержит строку в указанном формате. Это может быть локализованная версия имени приложения, если приложение локализовано на языках, отличных от английского. Имя отображается в Центре специальных возможностей.
Обязательный Локализованные
ATExe Имя исполняемого файла или образа приложения. Windows использует это значение, чтобы определить, запущено ли приложение со специальными возможностями.
Обязательный Не локализовано
CopySettingsToLockedDesktop Значение DWORD , указывающее, следует ли копировать параметры приложения со специальными возможностями на заблокированный рабочий стол.
Если это значение равно 1, приложение может записывать параметры в расположение в реестре пользователей, а Windows копирует параметры в то же расположение в реестре пользователей для заблокированного рабочего стола. Это позволяет приложению сохранять свое состояние с "обычного" рабочего стола на заблокированный рабочий стол.
Необязательно Не локализовано
Описание Краткое описание приложения из файла ресурсов. Это значение реестра содержит строку в указанном формате. Это может быть локализованная версия описания, если приложение локализовано на языках, отличных от английского. Длина этой строки не должна превышать 512 символов.
Описание отображается в Центре специальных возможностей, чтобы предоставить пользователю дополнительные сведения о приложении специальных возможностей.
Это значение также можно использовать для уведомления пользователя о том, что приложение не используется на безопасном рабочем столе.
Обязательный Локализованные
Профиль Краткий фрагмент XML, указывающий условия, которые предоставляет приложение. Это гарантирует, что приложение будет отображаться в правильной категории в Центре специальных возможностей.
Обязательный Не локализовано
PassiveAutoStartBehavior

Значение DWORD , указывающее, включено ли поведение автозапуска прежних версий.

Значение по умолчанию равно 0, что означает, что at требует устаревшего поведения автозапуска. Это приводит к тому, что параметр "Запуск после входа" для этого AT будет возвращен в режиме запуска при первом включении компьютера (OOBE) и панель управления (см. раздел панель управления -> Специальные возможности - Специальные возможности -> Центр специальных возможностей -> Изменение параметров входа) и автоматически запускает AT после контроля учетных записей и экрана блокировки.

Значение 1 указывает, что AT должен использовать новое поведение автозапуска, когда параметр "Запуск после входа" для этого AT не установлен в режиме запуска при первом включении компьютера (OOBE) и панель управления, а AT автоматически запускается один раз для каждого сеанса пользователя (при входе) только в том случае, если установлен флажок "Запуск после входа".

Необязательно Не локализовано
SecureDesktopAccommodation Имя альтернативного приложения со специальными возможностями для запуска на защищенном рабочем столе вместо этого приложения. Альтернативным вариантом может быть другое приложение, другая версия того же приложения, одно из приложений со специальными возможностями, входящее в состав Windows, или "нет", если вы не хотите запускать приложения со специальными возможностями на безопасном рабочем столе.
Необязательно Не локализовано
Простой профиль Значение типа , описывающее, как классифицировать приложение по слову или двум: например, средство чтения с экрана, экранная лупа или экранная клавиатура.
Обязательный Не локализовано
StartExe Полный путь к исполняемому файлу. Это значение используется для запуска приложения специальных возможностей.
Обязательный Не локализовано
StartParams аргументы командной строки. Эти значения используются вместе с StartExe для запуска приложения.
Необязательно Не локализовано
TerminateOnDesktopSwitch Значение DWORD , указывающее, как приложение со специальными возможностями реагирует на переходы на защищенный рабочий стол или с него.
Если это значение не существует или равно 1, Windows завершает работу и перезапускает приложение при каждом переходе на безопасный рабочий стол или из нее. Это поведение по умолчанию.
Если это значение равно 0, Windows не завершает работу приложения со специальными возможностями при переходе на рабочий стол. Приложение продолжает работать на предыдущем рабочем столе, а Windows запускает новый экземпляр на новом рабочем столе, если экземпляр еще не запущен.
Необязательно Не локализовано

Локализация

Значения реестра Имя приложения и Описание должны быть локализуемыми для поддержки многоязыкового пользовательского интерфейса (MUI).

Эти строки имеют следующий формат, где угловые скобки обозначают обязательные элементы, а квадратные скобки — необязательный элемент.

@<ResDllPath\ResDLLFilename>,-<resID>[;< комментарий>]

<ResDllPath\ResDLLFilename> — это путь к библиотеке DLL ресурса. Путь может содержать переменные среды.

<resID> — это идентификатор ресурса для строки.

[comment] содержит любые необязательные комментарии.

Вот пример:

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

Дополнительные сведения об MUI см. в разделе Центр знаний windows MUI.

Профиль HCI

Профиль взаимодействия с компьютером (HCI) — это способ определить, какие условия следует предоставить на основе потребностей пользователя. Приложения со специальными возможностями должны регистрировать сведения о типе инвалидности, которую приложение помогает удовлетворить.

Значение реестра Profile содержит XML-код, описывающий тип ограниченных возможностей, на которые нацелено приложение со специальными возможностями. Этот XML-код имеет следующий формат:

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

Ниже приведены допустимые значения для атрибута Тип размещения .

  • слабое зрение
  • тяжелое зрение
  • мягкий когнитивный
  • тяжелые когнитивные функции
  • легкая ловкость
  • сильная ловкость
  • слабый слух
  • тяжелый слух
  • мягкая речь
  • серьезное распознавание речи

Примечание

Эти значения указываются с учетом регистра.

Если приложение со специальными возможностями поддерживает несколько условий, значение реестра профиля должно содержать атрибут Тип размещения для каждого размещения.

Сведения о реестре специальных возможностей

Чтобы зарегистрировать приложение со специальными возможностями, необходимо создать ключ для приложения в следующем расположении реестра и заполнить его парами "имя-значение".

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

Присвойте разделу реестра приложения имя в следующем формате:

"CompanyName_ProductName_v#"

Например, "Contoso_Magnifier_v2.0".

Чтобы добавить значения реестра, программа установки должна выполняться с повышенными привилегиями.

Безопасное размещение рабочего стола

Раздел реестра SecureDesktopAccommodation позволяет указать, как приложение со специальными возможностями реагирует на безопасный рабочий стол. По умолчанию центр специальных возможностей запускает приложение на безопасном рабочем столе, если оно уже выполнялось на обычном рабочем столе или если оно настроено для запуска на рабочем столе входа. С помощью ключа SecureDesktopAccommodation можно:

  • Укажите альтернативную версию приложения для использования на безопасном рабочем столе. Например, у вас может быть альтернативная версия, которая отключает незащищенные функции или оптимизирована для использования меньшего объема памяти и более быстрого запуска.

    Чтобы указать альтернативную версию, задайте для ключа SecureDesktopAccommodation имя альтернативной версии. Например, если вы зарегистрировали приложение с помощью ключа Contoso_Screen Reader_v1.0, можно зарегистрировать альтернативную версию в Contoso_Screen ReaderSecure_v1.0. Затем задайте для ключа SecureDesktopAccommodation Contoso_Screen Reader_v1.0 значение "Contoso_Screen ReaderSecure_v1.0".

  • Укажите приложение со специальными возможностями Майкрософт для использования на защищенном рабочем столе вместо вашего приложения. Для этого параметра присвойте параметру SecureDesktopAccommodation имя конкретного приложения Майкрософт со специальными возможностями: osk, magnifierpane или экранный диктор.

  • Укажите, что приложение не должно запускаться на защищенном рабочем столе, а также не должно выполняться альтернативное приложение. Для этого параметра задайте для параметра SecureDesktopAccommodation значение none (рекомендуется) или имя несуществующего приложения.

Если раздел реестра SecureDesktopAccommodation для приложения со специальными возможностями указывает приложение Майкрософт для запуска на защищенном рабочем столе вместо вашего приложения, Windows уведомляет пользователя об этом при переходе на безопасный рабочий стол. Чтобы уведомить пользователя, Windows отображает строку, указанную в разделе реестра Description для вашего приложения. Например, если приложение ScreenReader Deluxe 1.0 использует экранный диктор Майкрософт на безопасном рабочем столе, оно будет содержать строку описания, например "Экранный диктор Майкрософт будет использоваться на заблокированных, входных и других защищенных рабочих столах вместо ScreenReader Deluxe 1.0".

Если для ключа SecureDesktopAccommodation приложения задано значение none, используйте ключ описания , чтобы сообщить пользователю, что приложение недоступно на защищенном рабочем столе, и альтернатива не предоставляется.

В Windows текст описания отображается в соответствующих расположениях в Центре специальных возможностей.

Выполняется при установке и на рабочем столе для входа в систему

Если добавить имя зарегистрированного ключа приложения специальных возможностей в строку в следующем расположении реестра, Windows запустит приложение сразу после его установки. Кроме того, Windows будет автоматически запускать приложение при каждом активном рабочем столе для входа.

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

Ключ конфигурации представляет собой строку с разделителями-запятыми. Чтобы добавить приложение, добавьте строку, которая совпадает с разделом реестра приложения в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\.

Выполнение в задании

Если раздел реестра TerminateOnDesktopSwitch отсутствует или имеет ненулевое значение, Windows запускает приложение в контексте задания, завершая и перезапуская приложение при каждом переходе рабочего стола. Выполнение в задании гарантирует, что в определенный момент времени выполняется только один экземпляр приложения, и освобождает приложение от необходимости отслеживать состояние рабочего стола. Ниже описаны недостатки запуска в задании.

  • При каждом переходе на рабочий стол приложение будет нести затраты на запуск.
  • Приложение можно запустить только через Центр специальных возможностей.
  • Приложение должно постоянно сохранять свои параметры, так как оно может быть завершено в любое время переходом рабочего стола.

Если ключ TerminateOnDesktopSwitch существует и имеет значение 0, Windows не запускает приложение специальных возможностей в задании. Подобное разделение обеспечивает следующие преимущества.

  • Затраты на запуск не связаны с переходом на настольные компьютеры.
  • Приложение можно запустить за пределами Центра специальных возможностей.

Недостатки, которые не выполняются в задании, включают в себя:

  • Так как приложение не перезапускается при переходе рабочего стола, оно должно обнаруживать, когда текущий рабочий стол неактивен, и реагировать соответствующим образом. Например, приложение должно отказаться от управления оборудованием, чтобы его можно было использовать в защищенной классической версии приложения, и приложение должно перейти в спящий режим, чтобы избежать использования ресурсов процессора.
  • Если приложение можно запустить с помощью меню "Пуск", windows Обозреватель или командной строки, необходимо уведомить центр специальных возможностей. Дополнительные сведения см. в разделе Клавиша с логотипом Windows + U.
  • Так как несколько копий приложения могут одновременно выполняться на разных рабочих столах, приложение должно быть написано для поддержки нескольких запущенных копий.

Клавиша с логотипом Windows +U

Если приложение со специальными возможностями настроено для запуска в задании, код запуска приложения должен включать вызов функции IsProcessInJob , чтобы определить, запускается ли приложение в задании. Если это так, приложение должно запустить Центр специальных возможностей, а затем выйти. В следующем примере показано, как вызвать IsProcessInJob.

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

Если приложение со специальными возможностями настроено для запуска вне задания, оно должно уведомить Центр специальных возможностей о том, что приложение запускается и продолжает работу в обычном режиме.

Независимо от того, как настроено приложение, если оно предоставляет способ выхода из приложения, например кнопку Закрыть, приложение должно уведомить Центр специальных возможностей о выходе.

Приложение уведомляет Центр специальных возможностей, задавая временный раздел реестра, а затем внедряя сочетание клавиш windows +U во входной поток.

Приложение должно создать временный ключ в следующем расположении.

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

Имя временного ключа должно совпадать с именем зарегистрированного приложения, например "Contoso_Screen Reader_v1.0". Значение ключа — это параметр DWORD , для 0x0003 при запуске или 0x0002 при выходе из приложения.

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]));

Клавиша с логотипом Windows + увеличение громкости

Когда пользователь запускает приложение специальных возможностей, нажимая сочетание клавиш с логотипом Windows и клавиши увеличения громкости (например, на планшетном устройстве), Центр специальных возможностей передает в приложение следующий аргумент командной строки:

/hardwarebuttonlaunch

Приложение может использовать этот аргумент, чтобы определить, следует ли запускать нормально или соответствующим образом настроить поведение.

Передача параметров безопасного рабочего стола

Если приложение со специальными возможностями поддерживает безопасный рабочий стол, вы можете использовать реестр для копирования параметров при переходе приложения на безопасный рабочий стол. Копирование параметров помогает сделать переход на безопасный рабочий стол более простым для пользователя.

Чтобы скопировать параметры, задайте для раздела реестра CopySettingsToLockedDesktop приложения значение 1 и сохраните параметры в следующем расположении реестра.

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

Центр специальных возможностей отслеживает это расположение реестра во время работы приложения. При переходе на безопасный рабочий стол Центр специальных возможностей копирует параметры в то же расположение в кусте HKCU защищенного рабочего стола. Затем приложение может считывать параметры и возобновлять свое состояние.

Приложение со специальными возможностями должно записывать свои параметры через регулярные интервалы времени или при изменении значений. Запись параметров при выходе из приложения не будет работать. Если приложение выполняется в задании, оно завершается при переходе от безопасного рабочего стола, прежде чем код выхода будет запущен. Если приложение не выполняется в задании, оно не завершается при переходе от безопасного рабочего стола.

Внимание!

Так как описанные здесь разделы реестра записываются в пользовательском режиме, они не являются безопасными. Если приложение со специальными возможностями считывает содержимое этих ключей, оно должно тщательно проверка данные и использовать их с осторожностью. В частности, приложение должно выполнять границы проверка значений DWORD, быть осторожным с длиной строк, не считывать имена подключаемых модулей DLL и не выполнять команды, найденные в строках.

Примеры реестра

В следующем примере показаны возможные значения реестра для вымышленного продукта Contoso ScreenReader версии 2.0, локализованное имя которого хранится в качестве ресурса.

Значения в таблице находятся в следующем разделе:

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

Имя Тип Данные
ApplicationName REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5020
Описание REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5040
Профиль 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 Narrator

Если приложение предоставляет средство чтения с экрана и экранную лупу в одном исполняемом файле, значения компонента средства чтения с экрана могут выглядеть следующим образом:

Имя Тип Данные
ApplicationName REG_SZ @C:\Program Files\Contoso\Contosores.dll,-30
Описание REG_SZ @C:\Program Files\Contoso\Contosores.dll,-32
Профиль 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

Значения компонента экранной лупы будут иметь следующий ключ:

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

Имя Тип Данные
ApplicationName REG_SZ @c:\Program Files\Contoso\Contosores.dll,-31
Описание REG_SZ @c:\Program Files\Contoso\Contosores.dll,-42
Профиль REG_SZ
XML
<HCIModel>
   <Accommodation type="mild vision">
</HCIModel>
SimpleProfile REG_SZ Увеличение
StartExe REG_SZ c:\Program Files\Contoso\Bin\ContosoSR.exe
StartParams REG_SZ /m