輕鬆存取輔助技術註冊
本文說明如何使用簡易存取中心註冊協助工具應用程式。 它也說明如何量身打造協助工具應用程式,使其能與安全桌面搭配運作。
輕鬆存取中心是 Microsoft Windows 的主控台應用程式,結合了協助工具和便於使用的功能。 藉由使用簡易存取中心,使用者可以設定其電腦以符合其實體和認知需求。
簡易存取中心的其中一個功能是協助使用者啟動協助工具應用程式,包括朗讀程式、螢幕小鍵盤和放大鏡。 已註冊的協力廠商應用程式也會出現在 「輕鬆存取中心」中,而且可以直接從該處啟動。
協助工具應用程式必須使用安全桌面順暢地運作。 安全桌面是在登入時 (鎖定電腦或使用者鎖定桌面) ,以及提示使用者允許可能不安全的動作時顯示的使用者介面。 基於安全性考慮,Windows 會限制在安全桌面上執行的協力廠商軟體。 如果您想要讓協助工具應用程式在安全桌面上執行,您必須使用簡易存取中心註冊應用程式。
使用輕鬆存取中心註冊
協助工具應用程式會在安裝應用程式時,透過建立一或多個登錄機碼,向「輕鬆存取中心」註冊。 下表列出登錄機碼中包含的資訊。
名稱 | 描述 | 強制/選用 | 語言 |
---|---|---|---|
應用程式名稱 | 位於資源檔中的應用程式名稱。 此登錄值包含指定格式的字串。 如果應用程式是以英文以外的語言當地語系化,這可能是應用程式名稱的當地語系化版本。 名稱會出現在 [輕鬆存取中心] 中。 |
強制性 | 當地語系化 |
ATExe | 應用程式可執行檔或映射的名稱。 Windows 會使用此值來判斷協助工具應用程式是否正在執行。 |
強制性 | 未當地語系化 |
CopySettingsToLockedDesktop |
DWORD值,指出是否要將協助工具應用程式的設定複製到鎖定的桌面。 如果此值為 1,應用程式可以將設定寫入使用者登錄中的位置,而 Windows 會將設定複製到鎖定桌面使用者登錄中的相同位置。 這可讓應用程式將狀態從「一般」桌面保存到鎖定的桌面。 |
選擇性 | 未當地語系化 |
Description | 來自資源檔的應用程式簡短描述。 此登錄值包含指定格式的字串。 如果應用程式以英文以外的語言當地語系化,這可能是描述的當地語系化版本。 此字串的長度必須小於 512 個字元。 描述會出現在 [輕鬆存取中心] 中,為使用者提供協助工具應用程式的其他資訊。 此值也可用來通知使用者應用程式未在安全桌面上使用。 |
強制性 | 當地語系化 |
設定檔 | 簡短的 XML 片段,指定應用程式所提供的設施。 它可確保應用程式出現在 [輕鬆存取中心] 中的正確類別之下。 |
強制性 | 未當地語系化 |
PassiveAutoStartBehavior | DWORD值,指出是否啟用舊版自動啟動行為。 預設值為 0,表示 AT 需要舊版自動啟動行為。 這會使 AT 的「登入後開始」設定簽入現成體驗 (OOBE) ,並主控台 (請參閱主控台 - > 輕鬆存取 - 輕鬆存取中心 - >> 變更登入設定) ,並在 UAC 和鎖定畫面後自動啟動 AT。 值為 1 表示 AT 應該使用新的自動啟動行為,其中 AT 不會簽入全新體驗 (OOBE (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) 設定檔是根據使用者需求來判斷要提供哪些便利的方法。 協助工具應用程式應該註冊應用程式可協助容納之身心障礙類型的相關資訊。
設定檔登錄值包含 XML,描述協助工具應用程式的目標身心障礙種類。 此 XML 的格式如下:
<HCIModel>
<Accommodation type="disability"/>
</HCIModel>
[適應類型] 屬性的有效值如下所示:
- 心力視覺
- 嚴重視覺
- 認知
- 嚴重認知
- 氣力 dexterity
- 嚴重 dexterity
- 聽覺
- 嚴重聽覺
- 語音
- 嚴重語音
注意
這些值區分大小寫。
如果協助工具應用程式支援多個適應專案,設定檔登錄值應該包含每個旅館的 「適應類型 」屬性。
輕鬆存取登錄詳細資料
若要註冊協助工具應用程式,您必須在下列登錄位置建立應用程式的機碼,並填入名稱/值組。
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 會顯示在應用程式的描述登錄機碼中指定的字串。 例如,如果 ScreenReader 一般 1.0 應用程式在安全桌面上使用 Microsoft 朗讀程式,則會包含描述字串,例如「Microsoft 朗讀程式將會用於鎖定、登入和其他安全桌面,以取代 ScreenReader 檔案 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」。 機碼的值是在啟動時設定為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 Key Name>
「輕鬆存取中心」會在應用程式執行時監視此登錄位置。 當轉換至安全桌面時,簡易存取中心會將設定複製到安全桌面 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 | ||
Description | 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 | Narrator |
如果應用程式在單一可執行檔中同時提供螢幕助讀程式和螢幕放大鏡,螢幕助讀程式元件的值看起來可能會像這樣:
名稱 | 類型 | 資料 | ||
---|---|---|---|---|
ApplicationName | REG_SZ | @C:\Program Files\Contoso\Contosores.dll,-30 | ||
Description | 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 | ||
Description | 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 |