HKEY_CLASSES_ROOT
(сокращ. HKCR
, не путать с HKC
U
, 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 \ Программное обеспечение \ Классы.