понеделник, 20 юли 2015 г.

Малко разяснения относно програми като JAWS и функцията за контрол на потребителските акаунти (UAC) в Windows

Тук ще си позволя да направя някои разяснения относно JAWS, връщаната понякога от него грешка за върнатата от сървъра препратка и работата на екранните четци (и на JAWS в частност) в така наречените "екрани за сигурност" (включващи и екраните на UAC ("User Account Control" - "Контрол на потребителските акаунти")).

Да започнем от това, че идеята на функцията за контрол на потребителските акаунти е да защити потребителската машина от зловреден софтуер, който желае да се изпълни и да направи промени по системата, без знанието и/или желанието на потребителя.

Една от мерките, които UAC предприема, с цел защита на системата, е да блокира възможността за запис в някои служебни директории и поддиректории на операционната система, включително тази на Windows, тези в които се инсталират програмите ("Program Files" и "Program Files (x86)"), и така нататък. Поради тази причина, някои по-стари програми имат проблеми със запомнянето на своите настройки, просто защото по подразбиране са настроени да ги записват в инсталационната си директория (една от гореспоменатите), която в случая е с права само за четене за самата програма. Това засяга и речевият синтезатор "SpeechLab" (гласа "Гергана").

Друга предприета мярка от UAC е проверка на електронния подпис (сертификата) на дадено приложение. Само подписани приложения имат достъп до някои от функциите на операционната система. Такива приложения са и екранните четци, които имат нужда от тези права за достъп до системните ресурси, за да предоставят на своите потребители нужната им информация. Това включва възможността за стартиране с операционната система, възможността за работа в екраните на UAC, и така нататък. По подразбиране разбира се, екранните четци са подписани с валиден електронен подпис и съответно имат правото да достъпват тази нужна им информация. Когато обаче подписаният файл на съответната програма бъде променен и не бъде повторно подписан от разработчика на приложението с неговия електронен подпис, наличният в програмата електронен подпис става невалиден и даденото приложение вече спира да има права за достъп до нужната му системна информация. Видоизменянето на даденото приложение (примерно - екранния четец) от трети страни се налага примерно в случаите, когато се налага да се премахне защитата му против нелегално ползване (така наречената процедура по "кракване" на приложението). Това разбира се е незаконно, но е факт че масово се прави, включително и за платените екранни четци като JAWS for Windows.

От гореописаното става ясно, че поради невалиден електронен подпис, кракнатата версия на JAWS по подразбиране няма пълни права за достъп до системните ресурси. И поради липсващите права за достъп, JAWS спира да работи адекватно: не може да се стартира заедно с операционната система, не може да работи в екраните на UAC, и така нататък. Точно при такива обстоятелства - действащ на системата UAC и кракната версия на JAWS - излиза съобщението за грешка за върната от сървъра препратка (или нещо такова).

Под Windows 7 има две решения на този проблем: пълно изключване на UAC защитата от контролния панел (по принцип не го препоръчвам) или задаване в свойствата на главния изпълним файл (или пряк път) на JAWS (файла "jfw.exe") да се стартира с администраторски права. Второто решение обаче не помага за невъзможността JAWS да се стартира автоматично заедно с Windows, ако не ме лъже паметта. Първото решение пък е риск за сигурността, тъй като при спрян UAC всяко приложение има пълни права за достъп до системата, ако не греша (а това не е добре).

Под Windows 8 и по-нови е още по-сложно. Там UAC не може да се спре нацяло, дори да зададем съответния плъзгач в настройките за UAC в контролния панел на най-ниската му стойност (0%). Можем нацяло да спрем UAC от регистрите, но в този случай някои функции на операционната система (включително и така наречените "универсални"/"модерни" приложения) спират да работят адекватно. Решението със стартиране на JAWS с администраторски права работи, но пак си ги има описаните в предходния абзац ограничения.

И накрая искам да уточня, че с горенаписаното по абсолютно никакъв начин не желая да подстрекавам към нелегалното ползване на софтуер (в случая - JAWS). Даже напротив - горещо препоръчвам да се ползва само лицензиран софтуер, когато това е възможно. А ако може да се ползват и безплатни алтернативи - още по-добре. В сферата на екранните четци, такова безплатно (че и с отворен код) решение е NVDA.

Това е. И ви благодаря за отделеното внимание да прочетете горенаписаното, като се надявам и да ви е било полезно.