Поделиться через


Безопасный доступ к разделам реестра

Проблемы с клиентами часто отслеживаются до внешних компонентов, таких как сторонние приложения установки устройств, которые выполняют следующие действия:

  • Удаление критически важных разделов реестра.

  • Изменение разрешений доступа критически важных разделов реестра.

Многие проблемы, возникающие с внешними компонентами, вызваны использованием KEY_ALL_ACCESS разрешения на доступ к разделам реестра. Начиная с Windows Server 2003 , SetupDiCreateDevRegKey предоставляет только разрешения на доступ KEY_READ и KEY_WRITE, а не KEY_ALL_ACCESS. Начиная с Windows Vista применяются дополнительные ограничения KEY_ALL_ACCESS.

Следуйте этим рекомендациям для безопасного доступа к разделам реестра.

  • Используйте только функции SetupAPI, configuration Manager и другие поддерживаемые API, связанные с устройствами, чтобы открывать разделы реестра устройств, особенно аппаратные ключи и программные ключи для устройства.

    Эти функции устраняют распространенные проблемы, связанные с ограничениями разрешений на доступ.

  • Расположение и формат разделов реестра могут меняться в разных версиях Windows. Не делайте предположений о расположении, формате или значении разделов реестра или значений, используемых для установки устройств и драйверов.

    Дополнительные сведения о разделах и деревьях реестра см. в разделе Деревья реестра и ключи для устройств и драйверов.

  • Не используйте реестр для прямого доступа или изменения внутренних параметров устройства.

  • Запрашивайте только минимальные разрешения доступа, необходимые для каждой задачи, например следующие:

    • KEY_SET_VALUE

    • KEY_CREATE_SUB_KEY

    • KEY_QUERY_VALUE

    • KEY_ENUMERATE_SUB_KEYS

  • Не открывайте напрямую разделы классов настройки устройства в реестре. Как и в случае с любым разделом реестра, расположение и имя разделов классов установки устройства могут меняться в разных версиях Windows. Сведения о том, как правильно получить доступ к разделу класса настройки устройства, см. в разделе Открытие разделов реестра для класса настройки устройства.

  • Не открывайте напрямую ключи классов интерфейса устройства в реестре. Как и в случае с любым разделом реестра, расположение и имя ключей классов интерфейса устройства может меняться в разных версиях Windows.

    Чтобы безопасно открыть ключи классов интерфейса устройства, используйте CM_Open_Class_Key с параметром CM_OPEN_CLASS_KEY_INTERFACE в параметре ulFlags или SetupDiOpenClassRegKeyEx и задайте DIOCR_INSTALLER в параметре Flags .

  • Используйте только директивы INF для изменения разделов реестра, зарезервированных для использования операционной системой. Дополнительные сведения см. в разделе Сводка директив INF.

  • Установщики классов и со-установщики не могут вызывать функции реестра для создания, изменения или удаления значений реестра, зарезервированных для использования операционной системой.

Дополнительные сведения о разрешениях на доступ к разделам реестра см. в разделе Безопасность разделов реестра и права доступа.