HKEY_LOCAL_MACHINE \ SOFTWARE \ Классы против HKEY_CLASSES_ROOT - PullRequest
0 голосов
/ 31 декабря 2018

В документации Microsoft я обнаружил следующий абзац

. HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes соответствует HKEY_CLASSES_ROOT ключ, который был сохранен для совместимости с более ранними версиями COM.

Теперь я не уверен, к какому ключу относится , к которому в этом параграфе относится: HKLM \ SOFTWARE \ Classesили ключ HKCU.

Буду признателен, если кто-нибудь сможет уточнить.

1 Ответ

0 голосов
/ 12 марта 2019

HKEY_CLASSES_ROOT (сокращ. HKCR, не путать с HKCU, HKEY_CURRENT_USER) - это объединенный вид ...\Software\Classesподчиненные иерархии в HKLM и HKCU.

Это на самом деле задокументировано, хотя оно не связано с COM документами , на которые вы ссылаетесь:

Ключ HKEY_CLASSES_ROOT :

Информация о регистрации класса и расширении имени файла хранится под клавишами HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER.Клавиша HKEY_LOCAL_MACHINE\Software\Classes содержит настройки по умолчанию, которые могут применяться ко всем пользователям на локальном компьютере.Клавиша HKEY_CURRENT_USER\Software\Classes содержит настройки, которые применяются только к интерактивному пользователю.Ключ HKEY_CLASSES_ROOT обеспечивает просмотр реестра , который объединяет информацию из этих двух источников.HKEY_CLASSES_ROOT также предоставляет это объединенное представление для приложений, разработанных для предыдущих версий Windows.

Они даже входят в подробности этого беспорядка слияния , ноесли вам нужно какое-то конкретное поведение из объединенного представления, вам было бы неплохо проверить его, потому что, на мой взгляд, детали довольно запутанные:

  • Для чтения, по существу, большая часть материала объединена,то есть вы увидите оба ключа и оба значения из перекрывающихся ключей.
  • Если у вас одинаковое значение в обоих, вы, скорее всего, увидите одно из HKCU, а не из HKLM.
  • Если у вас одинаковый / перекрывающийся ключ в обоих, вы увидите его объединенные значения и подразделы.(Или я так думаю.) (По крайней мере, в Win7.)
  • Когда вы пишете через HKCR, это будет зависеть от того, являетесь ли вы администратором или нет.И работаете ли вы под UAC или нет. Старайтесь не писать через HKCR , это облегчит вашу жизнь.
    • В частности, я имею в виду этот драгоценный камень (это то, что вы действительно можете наблюдать):

      Если вы пишете ключи для ключав HKEY_CLASSES_ROOT система сохраняет информацию в HKEY_LOCAL_MACHINE \ Software \ Classes.

      Если вы записываете значения в ключ в HKEY_CLASSES_ROOT, а ключ уже существует в HKEY_CURRENT_USER \ Software \ Classes, система будет хранить информацию там, а не вHKEY_LOCAL_MACHINE \ Программное обеспечение \ Классы.

...