Ключ HKEY_CLASSES_ROOT
Ключ HKEY_CLASSES_ROOT (HKCR) содержит сопоставления расширений имени файла и сведения о регистрации класса COM, такие как ProgID,CLSID и IID. В первую очередь он предназначен для обеспечения совместимости с реестром в 16-разрядной версии Windows.
Сведения о регистрации класса и расширении имени файла хранятся в ключах HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER . Ключ HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые могут применяться ко всем пользователям на локальном компьютере. Ключ HKEY_CURRENT_USER\Software\Classes содержит параметры, которые применяются только к интерактивному пользователю. Раздел HKEY_CLASSES_ROOT предоставляет представление реестра, в который объединяются сведения из этих двух источников. HKEY_CLASSES_ROOT также предоставляет это объединенне представление для приложений, предназначенных для предыдущих версий Windows.
Пользовательские параметры имеют приоритет над параметрами по умолчанию. Например, параметр по умолчанию может указать конкретное приложение для обработки .doc файлов. Но пользователь может переопределить этот параметр, указав другое приложение в реестре.
Функции реестра, такие как RegOpenKeyEx или RegQueryValueEx , позволяют указать ключ HKEY_CLASSES_ROOT . При вызове этих функций из процесса, выполняемого в интерактивной учетной записи пользователя, система объединяет параметры по умолчанию в HKEY_LOCAL_MACHINE\Software\Classes с параметрами интерактивного пользователя в HKEY_CURRENT_USER\Software\Classes. Дополнительные сведения о слиянии этих параметров см. в разделе Объединенный просмотр HKEY_CLASSES_ROOT.
Чтобы изменить параметры интерактивного пользователя, сохраните изменения в разделеHKEY_CURRENT_USER\Software\Classes , а не HKEY_CLASSES_ROOT.
Чтобы изменить параметры по умолчанию, сохраните изменения в HKEY_LOCAL_MACHINE\Software\Classes. Если вы записываете ключи в ключ в HKEY_CLASSES_ROOT, система сохраняет сведения вHKEY_LOCAL_MACHINE\Software\Classes. Если вы записываете значения в ключ в разделе HKEY_CLASSES_ROOT, а ключ уже существует в HKEY_CURRENT_USER\Software\Classes, система будет хранить сведения там, а не вHKEY_LOCAL_MACHINE\Software\Classes.
Процессы, выполняемые в контексте безопасности, отличном от контекста интерактивного пользователя, не должны использовать раздел HKEY_CLASSES_ROOT с функциями реестра. Вместо этого такие процессы могут явно открыть ключHKEY_LOCAL_MACHINE\Software\Classes для доступа к параметрам по умолчанию. Чтобы открыть раздел реестра, который объединяет содержимое HKEY_LOCAL_MACHINE\Software\Classes с параметрами указанного пользователя, эти процессы могут вызвать функцию RegOpenUserClassesRoot . Например, поток, который олицетворяет клиента, может вызвать RegOpenUserClassesRoot , если ему нужно получить объединенное представление для олицетворения клиента. Обратите внимание, что RegOpenUserClassesRoot завершается ошибкой , если профиль пользователя для указанного пользователя не был загружен. Система автоматически загружает профиль для интерактивного пользователя при входе в систему. Для других пользователей необходимо вызвать функцию LoadUserProfile , чтобы явно загрузить профиль пользователя.
Если приложение выполняется с правами администратора и контроль учетных записей отключен, среда выполнения COM игнорирует конфигурацию COM для каждого пользователя и обращается только к конфигурации COM для каждого компьютера. Приложения, которым требуются права администратора, должны регистрировать зависимые COM-объекты во время установки в хранилище конфигураций COM для каждого компьютера (HKEY_LOCAL_MACHINE\Software\Classes). Дополнительные сведения см. в разделе AC: UAC: КОНФИГУРАЦИЯ COM Per-User.
Windows Server 2003 и Windows XP/2000: Приложения могут регистрировать зависимые COM-объекты в хранилище конфигураций COM для каждого компьютера или пользователя (HKEY_LOCAL_MACHINE\Software\Classes или HKEY_CURRENT_USER\Software\Classes).
Связанные темы