Продовжуємо ділитися цікавими кейсами. Днями в електронну пошту прийшов лист від нашого читача Vitaly. Нижче текст листа:
"Привіт! Чи не стикалися з проблемою: після того як комп'ютер з Windows 8 включили в домен AD на ньому перестали працювати Metro-програми? Стартовий Metro-екран вантажиться, значки на ньому відображаються, але якщо клікнути по піктограммке будь-якого Metro-додатки - на 2 -5 секунд з'являється велика іконка програми, після чого вона пропадає, а користувача викидає на початковий екран.
В логах такі помилки Event ID: 5961 Activation of the app for the Windows.Launch contract failed with error: The app did not start.
Також помітили, що така проблема спостерігається тільки з доменної обліковим записом, якщо в систему увійти під локальної учеткой - все рівно, будь-які Metro Apps запускаються.
Є ідеї в чому м.б. проблема?
Заздалегідь дякую!"
З проблемою розбиралися досить довго: ми відразу припустили, що проблема може бути в некоректних параметрах, що задаються доменними груповими політиками. Вирішили помістити машину і обліковий запис користувача в окремі тестові OU (контейнери AD) і заблокували застосування доменних GPO на ці OU - і це допомогло, після перезавантаження Metro додатки стали запускати! Це означало, що джерело проблем - якась групова політика. Шляхом послідовного перебору політик визначили, що винна в такої поведінки сучасних додатків - політика, що представляє всім (Everyone) права читання на гілку HKEY_CLASSES_ROOT (трохи дивна політика, але її з якоїсь причини потрібно використовувати). Ми вирішили розібратися в причинах докладніше.
В одній зі статей бази знань Microsoft http://support.microsoft.com/kb/2798317, йдеться, про те, що поширена причина, через яку можуть не запускатися Metro-додатки Windows 8 - нестандартні права доступу до папок або гілках реєстру.
Справа в тому, що в Windows 8 з'явилася особлива група All Application Packages (В цьому ця група має зумовлений SID - S-1-15-2-1), яка для коректної роботи Modern Apps в Windows 8 повинна мати доступ до певних об'єктів реєстру і файлової системи
Зокрема, група All Application Packages повинна мати доступ на читання (права Read, Execute і List folder Contents) до стежать каталогах файлової системи:
- Program Files і Program Files (x86)
- Windows
- % Userprofile% \ AppData \ Local \ Microsoft \ Windows \ WER
У реєстрі же група All Applications Packages повинна володіти правами читання (Read) на наступні гілки:
- HKEY_CLASSES_ROOT
- HKEY_LOCAL_MACHINE \ Drivers
- HKEY_LOCAL_MACHINE \ HARDWARE
- HKEY_LOCAL_MACHINE \ SAM
- HKEY_LOCAL_MACHINE \ SOFTWARE (зокрема HKEY_LOCAL_MACHINE \ Software \ Microsoft \ NET Framework Setup \ NDP, HKEY_LOCAL_MACHINE \ Software \ Microsoft \ RFC1156Agent \ CurrentVersion \ Parameters, HKEY_LOCAL_MACHINE \ Software \ Microsoft \ SQMClient, HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC
- HKEY_LOCAL_MACHINE \ SYSTEM
- HKEY_USERS
У нашому випадку виявилося, що права на гілку HKEY_CLASSES_ROOT перезаписувати доменної політикою, а так як чомусь група All Application Packages не відноситься до поняття Everyone, доступ до цієї гілці у неї відсутня. Тому Metro-програми, але не можуть запуститься. Ми змінили політику, налаштувавши надання права на читання гілки HKEY_CLASSES_ROOT також локальної групи All Application Packages.
У тому випадку, якщо джерело проблем з запуском Metro-додатків в Windows 8 не політика, а некоректні зміни в реєстрі / файлової системи - доступ можна надати і вручну.
Дуже важливо! Ні в якому разі не перезаписувати (не буде наслідувати вниз) права на дочірні об'єкти файлової системи або гілки реєстру. Справа в тому, що на дочірні об'єкти можуть бути призначені власні права доступу, відмінні від батьківських, які при спадкуванні можна затерти, порушивши тим самим роботу системи або додатків.У нашому прикладі було б:
- Відкрити редактор реєстру (regedit.exe),
- Клацнути ПКП у гілці HKEY_CLASSES_ROOT і вибрати пункт меню Permissions (Дозволу)
- На нижньому скріншоті видно, що групи All Application Packages в списку доступу немає. Натиснемо кнопку додати (Add), У другому полі (From this location) вказати область пошуку - локальний комп'ютер (за замовчуванням пошук по всьому домену), і вказати ім'я групи - All Application Packages. потім натиснути ОК.
- Натиснувши на кнопку Advanced, переконайтеся що спадкування відключено.
- натиснувши ОК, збережемо права на гілку.
- Перезавантажте систему і перевірте чи будуть запускати Metro-додатки з-під доменної облікового запису.
Сподіваємося, що рішення описаної проблеми буде корисним ще комусь.