Документація · Де працює

Чи працює Lang Switcher у вікнах програм, запущених від імені адміністратора?

Так. Lang Switcher встановлюється в C:\Program Files, а програма встановлення створює на вашому комп’ютері власний сертифікат — лише для підпису коду: підписує ним Lang Switcher і одразу знищує ключ, а під час видалення прибирає й сертифікат. Тому Windows дозволяє Lang Switcher працювати у вікнах програм, запущених від імені адміністратора. На екранах запиту UAC, Ctrl+Alt+Del і входу в систему перехопити натискання неможливо: це обмеження Windows.

Чому працює

Права адміністратора — один раз, під час встановлення: Lang Switcher встановлюється в C:\Program Files\Lang_Switcher, а програма встановлення створює на комп’ютері сертифікат, щоб Lang Switcher працював і у вікнах програм, запущених від імені адміністратора (маніфест uiAccess). Сам Lang Switcher запускається без прав адміністратора.

uiAccess — механізм самої Windows: ним же користуються екранна клавіатура, екранна лупа й екранний диктор. Програма отримує дозвіл діяти у вікнах вищого рівня, але не права адміністратора. Windows дає його, лише якщо файл програми підписано підписом, якому цей комп’ютер довіряє, і він лежить у C:\Program Files.

Тому й запуск разом із Windows обходиться без запиту UAC: галочка «Запускати під час входу в систему» нічого не просить.

Де не працює

На екранах запиту UAC, Ctrl+Alt+Del і входу в систему перехопити натискання неможливо: це обмеження Windows. Туди не пускають жодних програм, крім самої системи.

Ще в частині ігор: вони читають клавіатуру в обхід Windows і заміни тексту не приймають. Такі ігри додають до винятків.

Запасна версія

Програма встановлення, запущена з ключем /NOLOCALCERT, ставить запасну версію — той самий код без uiAccess. Запасна версія працює скрізь, крім вікон програм, запущених від імені адміністратора: у них гаряча клавіша не діє.

Запасну версію програма встановлення ставить і сама, якщо повну на цьому комп’ютері встановити не вдалося. Тоді наприкінці встановлення вона скаже про це вікном: «Lang Switcher встановлено, але він не працюватиме у вікнах програм, запущених від імені адміністратора…» Якщо таке вікно було, напишіть автору: меню значка → «Написати автору…».

Запитання й проблемиу GitHub Issues ↗ або на пошту send.me@panda-pishet-kod.dev