Удаление отражения реестра Windows

Платформа

Клиенты — Windows 7
Серверы — Windows Server 2008 R2

Влияние на функции

Уровень серьезности — низкий
Частота — низкая

Описание

Процесс отражения реестра копирует разделы и значения реестра между двумя представлениями реестра, чтобы обеспечить их синхронизацию. В предыдущих 64-разрядных установках Windows этот процесс отражал подмножество перенаправленных разделов реестра между 32-разрядным и 64-разрядным представлениями. Однако реализация этого метода вызвала некоторые несоответствия в состоянии реестра. (Дополнительные сведения о отражении реестра см. в соответствующей статье MSDN в разделе Ссылки на другие ресурсы ниже.)

Начиная с Windows 7 мы полностью удалили отражение реестра и объединили ключи, которые раньше отражались:

  • HKEY_LOCAL_MACHINE\Software\Classes
  • HKEY_LOCAL_MACHINE\Software\Microsoft\COM3
  • HKEY_LOCAL_MACHINE\Software\Microsoft\EventSystem
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Ole
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
  • HKEY_USERS\*\Software\Classes
  • HKEY_USERS\*_Classes

Фактически это обеспечивает одинаковое поведение отражения, так как изменения этих ключей сразу же доступны как для 32-разрядных, так и для 64-разрядных приложений.

Ключи, которые были отражены условно, остаются разделенными:

  • HKEY_LOCAL_MACHINE\Software\Classes\CLSID
  • HKEY_LOCAL_MACHINE\Software\Classes\Interface
  • HKEY_USERS\*\Software\Classes\CLSID
  • HKEY_USERS\*\Software\Classes\Interface
  • HKEY_USERS\*_Classes\CLSID
  • HKEY_USERS\*_Classes\Interface

Они используются для хранения данных, которые не должны использоваться совместно между 32-разрядными и 64-разрядными приложениями.

Проявление

Ключи CLSID и Interface из приведенного выше списка больше не отражаются, пока они по-прежнему перенаправляются. Хотя в большинстве случаев это желаемое поведение, возможно, что приложения могут зависеть от отраженного поведения в Vista.

Функции, позволяющие приложениям управлять отражением (RegDisableReflectionKey и RegEnableReflectionKey), в Windows 7 не являются операционными.

Устранение последствий

COM является основным потребителем отражения реестра. Com и другие потребители были обновлены в соответствии с этим изменением. Это изменение не влияет на приложения, использующие стандартные API COM.

Решение

Примените один из следующих вариантов, если для синхронизации 32- и 64-разрядных представлений используется отражение реестра:

  • Явное создание ключей в обоих представлениях во время установки

  • Перемещение ключей из область отраженных ключей

  • Проверка обоих представлений реестра при запросе отраженного раздела

    Примечание: KEY_WOW64_32KEY и флаги KEY_WOW64_64KEY не могут быть объединены

Примените один из следующих вариантов, если для отключения отражения реестра используются функции RegDisableReflectionKey.

  • Явное создание ключей в обоих представлениях во время установки
  • Перемещение ключей из область отраженных ключей
  • Использование подразделов для конкретной платформы (например, x86, amd64 и ia64) для разделения данных, относящихся к разрядности.

Примечание

Эти ресурсы могут быть недоступны на некоторых языках и в странах или регионах.