輕鬆存取輔助技術註冊
本文說明如何使用簡易存取中心註冊輔助功能應用程式。 它也會說明如何量身打造輔助功能應用程式,使其能與安全桌面搭配運作。
「輕鬆存取中心」是適用於 Microsoft Windows 的控制面板應用程式,整合了輔助功能和易於使用的功能。 藉由使用簡易存取中心,用戶可以設定計算機以符合其身體和認知需求。
「輕鬆存取中心」的其中一個功能是協助用戶啟動輔助功能應用程式,包括朗讀程式、螢幕小鍵盤和放大鏡。 已註冊的第三方應用程式也會出現在 [輕鬆存取中心] 中,並可直接從該處啟動。
輔助功能應用程式必須使用安全桌面順暢地運作。 安全桌面是計算機鎖定時出現的使用者介面(登入時或使用者鎖定桌面時),以及提示用戶允許可能不安全的動作時。 基於安全性考慮,Windows 會限制在安全桌面上執行的第三方軟體。 如果您想要讓輔助功能應用程式在安全桌面上執行,您必須使用簡易存取中心註冊應用程式。
使用輕鬆存取中心註冊
輔助功能應用程式會在安裝應用程式時建立一或多個登錄機碼,以使用簡易存取中心註冊。 下表列出登錄機碼中包含的資訊。
名字 | 描述 | 強制/選擇性 | 語言 |
---|---|---|---|
應用程式名稱 | 位於資源檔案中的應用程式名稱。 此登錄值包含指定格式的字串。 如果應用程式是以英文以外的語言當地語系化,這可能是應用程式名稱的當地語系化版本。 名稱會出現在 [輕鬆存取中心] 中。 |
命令的 | 當地語系化 |
ATExe | 應用程式可執行檔或映像的名稱。 Windows 會使用此值來判斷輔助功能應用程式是否正在執行。 |
命令的 | 未當地語系化 |
CopySettingsToLockedDesktop |
DWORD 值,指出是否要將輔助功能應用程式的設定複製到鎖定的桌面。 如果此值為 1,應用程式可以將設定寫入使用者登錄中的位置,而 Windows 會將設定複製到鎖定桌面之用戶登錄中的相同位置。 這可讓應用程式將狀態從「一般」桌面保存到鎖定的桌面。 |
自選 | 未當地語系化 |
描述 | 來自資源檔案的應用程式簡短描述。 此登錄值包含指定格式的字串。 如果應用程式是以英文以外的語言當地語系化,這可能是描述的當地語系化版本。 此字串的長度必須小於 512 個字元。 描述會出現在 [輕鬆存取中心] 中,向使用者提供輔助功能應用程式的其他資訊。 這個值也可以用來通知使用者應用程式未在安全桌面上使用。 |
命令的 | 當地語系化 |
輪廓 | 簡短的 XML 片段,指定應用程式所提供的住宿。 它可確保應用程式會出現在 [輕鬆存取中心] 中的正確類別之下。 |
命令的 | 未當地語系化 |
PassiveAutoStartBehavior | DWORD 值,指出是否已啟用舊版自動啟動行為。 默認值為 0,表示 AT 需要舊版自動啟動行為。 這會導致該 AT 的 [登入後開始] 設定簽入 [現成體驗] 和 [控制面板] (請參閱 控制面板 -> [輕鬆存取 -> 輕鬆存取中心 -> 變更登入設定),並在 UAC 和鎖定畫面之後自動啟動 AT。 值為 1 表示 AT 應該使用新的自動啟動行為,其中未在 [全新體驗] 和 [控制面板] 中核取該 AT 的 [登入後啟動] 設定,而且只有在已核取 [登入之後啟動] 設定時,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 配置檔
Human Computer Interaction (HCI) 配置檔是一種根據使用者需求來判斷提供哪些住宿的方法。 輔助功能應用程式應該註冊應用程式可協助容納的殘障類型相關信息。
配置檔登錄值包含 XML,描述輔助功能應用程式的目標殘障類型。 此 XML 具有下列格式:
<HCIModel>
<Accommodation type="disability"/>
</HCIModel>
Accommodation 類型 屬性的有效值如下所示:
- 輕微視覺
- 嚴重視力
- 溫和認知
- 嚴重認知
- 溫和的靈巧性
- 嚴重靈巧
- 輕微聽力
- 嚴重聽力
- 溫和語音
- 嚴重語音
注意
這些值會區分大小寫。
如果輔助功能應用程式支援多個住宿,配置檔登錄值應該包含每個住宿 住宿類型 屬性。
輕鬆存取登錄詳細數據
若要註冊輔助功能應用程式,您必須在下列登錄位置建立應用程式的密鑰,並填入名稱/值組。
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 註冊替代版本。 然後,將 Contoso_Screen Reader_v1.0 的 SecureDesktopAccommodation 機碼設定為 “Contoso_Screen ReaderSecure_v1.0”。
指定要在安全桌面上使用的Microsoft輔助功能應用程式,以取代您的應用程式。 針對此選項,請將 SecureDesktopAccommodation 設為特定Microsoft輔助功能應用程式的名稱:“osk”、“magnifierpane” 或 “Narrator”。
指定您的應用程式不應該在安全桌面上執行,任何替代應用程式都不應該執行。 針對此選項,請將 SecureDesktopAccommodation 設為 “none” 或不存在的應用程式名稱。
如果輔助功能應用程式的 SecureDesktopAccommodation 登錄機碼指定Microsoft輔助功能應用程式,以取代您的應用程式在安全桌面上執行,Windows 會在轉換至安全桌面時通知使用者。 若要通知使用者,Windows 會顯示應用程式之 Description 登錄機碼中指定的字串。 例如,如果 ScreenReader 豪華 1.0 應用程式在安全桌面上使用Microsoft朗讀程式,則會包含描述字串,例如「Microsoft朗讀程式將用於鎖定、登入和其他安全桌面,以取代 ScreenReader 豪華 1.0」。
如果您的應用程式 SecureDesktopAccommodation 機碼設定為 “none”,請使用 Description 密鑰,告知應用程式無法在安全桌面上使用,而且沒有提供替代方案。
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 DWORD,或應用程式結束時設定為 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 機碼名稱>
「輕鬆存取中心」會在應用程式執行時監視此登錄位置。 當轉換到安全桌面時,「輕鬆存取中心」會將設定複製到安全桌面 S HKCU Hive 中的相同位置。 然後,應用程式可以讀取設定並繼續其狀態。
您的輔助功能應用程式應該定期寫入其設定,或每當值變更時。 在應用程式結束時寫入設定將無法運作。 如果應用程式在作業中執行,則會在從安全桌面移轉時終止,然後結束代碼才有機會執行。 如果應用程式未在作業中執行,應用程式就不會在從安全桌面移轉時終止。
謹慎
由於此處所述的登錄機碼是以使用者模式撰寫,所以它們並不安全。 如果您的輔助功能應用程式讀取這些密鑰的內容,它應該仔細檢查數據,並小心使用。 具體來說,您的應用程式應該對 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 |
|
||
SimpleProfile | REG_SZ | ScreenReader | ||
StartExe | REG_SZ | C:\ContosoTools\Bin\ContosoSR.exe | ||
StartParams | REG_SZ | |||
SecureDesktopAccommodation | REG_SZ | 旁白 |
如果應用程式在單一可執行檔中同時提供螢幕助讀程式和螢幕放大鏡,螢幕助讀程式元件的值可能如下所示:
名字 | 類型 | 數據 | ||
---|---|---|---|---|
ApplicationName | REG_SZ | @C:\Program Files\Contoso\Contosores.dll,-30 | ||
描述 | REG_SZ | @C:\Program Files\Contoso\Contosores.dll,-32 | ||
輪廓 | REG_SZ |
|
||
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 |
|
||
SimpleProfile | REG_SZ | 放大 | ||
StartExe | REG_SZ | c:\Program Files\Contoso\Bin\ContosoSR.exe | ||
StartParams | REG_SZ | /m |