RegOpenUserClassesRoot 函数为处理交互式用户以外的客户端的进程(如服务)提供了合并视图。 在这种情况下,HKEY_CLASSES_ROOT 键提供注册表的视图,该视图将 HKEY_LOCAL_MACHINE\Software\Classes 中的信息与来自 HKEY_CURRENT_USER\Software\Classes的信息合并。
系统使用以下规则合并来自两个源的信息:
- 合并视图包括 HKEY_CURRENT_USER\Software\Classes 键的所有子项。
- 合并视图包括 HKEY_LOCAL_MACHINE\Software\Classes 键的所有即时子项,这些子项不复制 HKEY_CURRENT_USER\Software\Classes的子项。
- 本主题末尾是 HKEY_LOCAL_MACHINE\Software\Classes 和 HKEY_CURRENT_USER\Software\Classes中找到的子项列表。 仅当这些 HKEY_LOCAL_MACHINE 键不是来自 HKEY_CURRENT_USER 树的即时子项重复时,这些键的直接子项才会包含在合并视图中。 合并视图不包括重复子项 HKEY_LOCAL_MACHINE 内容。
如果应用程序使用管理员权限运行并且用户帐户控制被禁用,COM 运行时将忽略每用户 COM 配置,并且仅访问每台计算机 COM 配置。 在安装到每台计算机 COM 配置存储(HKEY_LOCAL_MACHINE\Software\Classes)期间,需要管理员权限的应用程序应注册依赖 COM 对象。 有关详细信息,请参阅 AC:UAC:COM Per-User 配置。
Windows Server 2003 和 Windows XP/2000: 应用程序可以将依赖 COM 对象注册到每台计算机或每用户 COM 配置存储(HKEY_LOCAL_MACHINE\Software\Classes 或 HKEY_CURRENT_USER\Software\Classes)。
下面的示例演示 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 键下的一组子项以及生成的 HKEY_CLASSES_ROOT合并视图。
HKEY_LOCAL_MACHINE\SOFTWARE\ClassesCLSID24inprocserver32localserver327
HKEY_CURRENT_USER\Software\ClassesCLSID14localserver610localserver
HKEY_CLASSES_ROOTCLSID124inprocserver32localserverlocalserver326710localserver
在 HKEY_LOCAL_MACHINE\Software\Classes 和 HKEY_CURRENT_USER\Software\Classes中找到以下子项。 从 HKEY_LOCAL_MACHINE 树中,仅当这些键不是来自 HKEY_CURRENT_USER 树的即时子项的副本时,这些键的直接子项才会包含在合并视图中。 合并视图不包括重复子项 HKEY_LOCAL_MACHINE 内容。
*
*\shellex
*\shellex\ContextMenuHandlers
*\shellex\PropertySheetHandlers
AppID
ClsID
组件类别
驱动器
Drive\shellex
Drive\shellex\ContextMenuHandlers
Drive\shellex\PropertySheetHandlers
FileType
文件夹
Folder\shellex
Folder\shellex\ColumnHandler
Folder\shellex\ContextMenuHandlers
Folder\shellex\ExtShellFolderViews
Folder\shellex\PropertySheetHandlers
Installer\Components
Installer\Features
Installer\Products
接口
Mime
Mime\Database
Mime\Database\Charset
Mime\Database\Codepage
Mime\Database\Content Type
Typelib