
文件与注册表的虚拟化技术
1. UAC虚拟化的由来
从安全角度考虑,微软一直所大力提倡我们在日常操作中应使用标准用户帐户登录,而非管理员帐户。但是,XP中使用标准用户帐户存在很多不便,这也许正是许多人尽管意识到使用管理员帐户不是个好的选择但仍坚持使用管理员帐户的原因。首先,在这些系统中的标准用户帐户,权限被设置得过于严格,许多操作均受到限制,造成工作中的繁琐;其次,也是最致命的一点,便是应用程序兼容性。由于许多应用程序是使用管理员帐户编写和测试的,很多时候在标准用户帐户下无法运行或出现不可预知的故障,比如说当应用程序要尝试写入受限区域——如 Program Files 目录或 HKLM 注册表项——便会出现权限不足导致程序无法运行的情况,许多用户不得不陷入安全与易用性间的两难。 Vistat和Win7则在保证系统安全性的前提下解决了这些问题,通过新纳入的UAC(用户帐户控制),即使登录用户没有管理员权限,UAC也可以使用户方便地进入各类日常操作。
2.通过虚拟化改善程序兼容性
在Vistat和Win7 中,通过提供文件与注册表的虚拟化功能,可以让许多在XP下无法以标准用户身份运行的应用程序,不用经过修改即可在 Vistat和Win7中运行。
在XP中,当应用程序试图往标准用户没有访问权限的文件系统和注册表的保护区域写入数据时,程序就会崩溃。 Vistat和Win7 则通过巧妙的机制避免了这个问题:将写入操作(以及随后的文件或注册表读取)重定向到该用户配置文件中的一个特殊位置来改善应用程序兼容性。例如,如果一个应用程序试图向 “C:/program files/contoso/settings.ini” 进行写入操作,但该用户没有写入该目录的权限,那么写入操作将会被重定向到 “C:/Users/用户名/AppData/Local/VirtualStore/Program Files/contoso/settings.ini”。而如果一个应用程序试图写入 “HKEY_LOCAL_MACHINE/Software/Contoso”,该操作将会被自动重定向到 “HKEY_CURRENT_USER/Software/Classes/VirtualStore/MACHINE/
Software/Contoso”。
例如:《几何图霸》制作的文件,保存到程序文件夹时,你到那里是看不 到的,它被存到另一虚拟位置了。如果再用程序去打开时,还在用保存时的位置。在图标的左下方有一个安全锁标志。如下图:
3.进一步了解UAC
UAC在注册表中的对应位置:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem
相关键值设置:
UAC高
ConsentPromptBehaviorAdm
in = 2
EnableLUA = 1
PromptOnSecureDesktop = 1
UAC中
ConsentPromptBehaviorAdm
in = 5
EnableLUA = 1
PromptOnSecureDesktop = 1
UAC低
ConsentPromptBehaviorAdm
in = 5
EnableLUA = 1
PromptOnSecureDesktop = 0
UAC关
ConsentPromptBehaviorAdm
in = 0
EnableLUA = 0
PromptOnSecureDesktop = 0
注:相关键说明
ConsentPromptBehaviorAdm
in
通知强度级别
EnableLUA
是否开启UAC
PromptOnSecureDesktop
桌面是否变黑