深入了解Windows Vista用户帐户控制
2007-05-29 15:29:16 来源:WEB开发网图 4 文件系统虚拟化
注册表虚拟化的实施与文件系统虚拟化略有不同。虚拟化的注册表项包括 HKEY_LOCAL_MACHINESoftware 分支的大部分,但有许多例外项,例如以下项:
HKLMSoftwareMicrosoftWindows
HKLMSoftwareMicrosoftWindows NT
HKLMSoftwareClasses
只有通常由旧应用程序修改,但不会带来兼容性或互操作性问题的项才能虚拟化。Windows 将旧应用程序对虚拟化项的修改重定向到位于 HKEY_ CURRENT_USERSoftwareClassesVirtualStore 的用户注册表虚拟根目录。该项位于用户的 Classes 配置单元 %LocalAppData%MicrosoftWindowsUsrClass.dat 中,与任何其他虚拟化文件数据一样,它并不随漫游用户配置文件漫游。
与 Windows 为文件系统维护一个固定虚拟化位置列表不同,注册表项的虚拟化状态作为一个标志 REG_ KEY_DONT_VIRTUALIZE 存储在该项自身。Reg.exe 实用工具可以显示该标志以及另外两个虚拟化相关标志:REG_KEY_ DONT_SILENT_FAIL 和 REG_KEY_ RECURSE_FLAG,如图 5 所示。当设置了 REG_KEY_DONT_SILENT_FAIL 并且该项未虚拟化(已设置 REG_KEY_DONT_VIRTUALIZE)时,除了应用程序请求的访问外,原本被拒绝对该项执行操作访问的旧应用程序还将被授予用户对该项所拥有的任何访问权限。REG_KEY_RECURSE_FLAG 表明新的子项是否继承父项的虚拟化标志,而不仅仅是默认标志。
图 5 Reg 实用工具显示虚拟化标志
图 6 显示了配置管理器如何实施注册表虚拟化,该管理器管理操作系统内核 Ntoskrnl.exe 中的注册表。对于文件系统虚拟化,创建虚拟化项的子项的旧进程将被重定向到用户的注册表虚拟根,但默认权限会拒绝 Windows Vista 进程的访问。
更多精彩
赞助商链接