Windows 8: не работают Metro-приложения после ввода в домен

Продолжаем делиться интересными кейсами. На днях в электронную почту пришло письмо от нашего читателя Vitaly. Ниже текст письма:

«Привет! Не сталкивались с проблемой: после того как компьютер с Windows 8  включили в домен AD на нем перестали работать Metro-приложения? Стартовый Metro-экран грузится, значки на нем отображаются, но если кликнуть по пиктограммке любого Metro-приложения – на 2-5 секунд появляется большая иконка приложения, после чего она пропадает, а пользователя выкидывает на начальный экран. После ввода в домен не запускаются Metro-приложения в Windows 8

В логах такие ошибки Event ID: 5961 Activation of the app for the Windows.Launch contract failed with error: The app didn’t 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. Затем нажать ОК. Права группы All Application Packages
  4. Нажав на кнопку Advanced, убедитесь что наследование отключено. Наследование прав в реестре отключено
  5. Нажав ОК, сохраним права на ветку. Право чтения группе All Application Packages на ветку HKEY_CLASSES_ROOT
  6. Перезагрузите систему и проверьте будут ли запускать Metro-приложения из-под доменной учетной записи.

Надеемся, что решение описанной проблемы будет полезным еще кому-то.


Предыдущая статья Следующая статья


Комментариев: 5 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)