Windows 8 не працюють Metro-додатки після введення в домен

Продовжуємо ділитися цікавими кейсами. Днями в електронну пошту прийшов лист від нашого читача 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 не політика, а некоректні зміни в реєстрі / файлової системи - доступ можна надати і вручну.

Дуже важливо! Ні в якому разі не перезаписувати (не буде наслідувати вниз) права на дочірні об'єкти файлової системи або гілки реєстру. Справа в тому, що на дочірні об'єкти можуть бути призначені власні права доступу, відмінні від батьківських, які при спадкуванні можна затерти, порушивши тим самим роботу системи або додатків.

У нашому прикладі було б:

  1. Відкрити редактор реєстру (regedit.exe),
  2. Клацнути ПКП у гілці HKEY_CLASSES_ROOT і вибрати пункт меню Permissions (Дозволу)
  3. На нижньому скріншоті видно, що групи All Application Packages в списку доступу немає. Натиснемо кнопку додати (Add), У другому полі (From this location) вказати область пошуку - локальний комп'ютер (за замовчуванням пошук по всьому домену), і вказати ім'я групи - All Application Packages. потім натиснути ОК.
  4. Натиснувши на кнопку Advanced, переконайтеся що спадкування відключено.
  5. натиснувши ОК, збережемо права на гілку.
  6. Перезавантажте систему і перевірте чи будуть запускати Metro-додатки з-під доменної облікового запису.

Сподіваємося, що рішення описаної проблеми буде корисним ще комусь.