UAC文件和注册表操作虚拟化

来源:互联网 发布:php对象的使用 编辑:程序博客网 时间:2024/04/26 13:10

从vista开始microsoft推出了UAC机制,就是User Account Control。开启UAC机制之后,windows默认通过explorer启动的程序都是运行在标准用户权限下面,而不是管理员用户权限。标准用户权限下会限制用户的诸多操作,最需要我们程序员关注的就是对于文件和注册表的访问,但是在windows xp下,所有的用户都是管理,很多程序在设计之初,就只考虑了程序是运行在管理员权限下,如果这些程序直接运行到vista以上版本系统下,就会出现兼容的文件。microsoft为了保持对于旧的应用程序的兼容性,在标准用户权限下的应用程序,操作系统关键的文件和注册表,会进行了虚拟化,实际上是一种重定向。

文件操作虚拟化:重定位的目录%LocalAppData%\VirtualStore,虚拟化目录有:%ProgramFiles%, %ProgramData%,  %SystemRoot%

例如:C:\Windows\Application.ini   重定位到 C:\Users\Markruss\AppData\Local\VirtualStore\Windows\Application.ini


注册操作虚拟化:重定位到HKEY_ CURRENT_USER\Software\Classes\VirtualStore



我们程序安装和更新的时候,都是需要在管理权限下执行,否则文件的安装和更新都会被虚拟化,导致安装和更新失败。

windows对于安装程序和程序更新做了自己的鉴别,如果系统认为是一个安装或者更新的程序,就会提示用户是否启用管理员权限。

我们在程序开发中要如何处理,请参考 http://hi.baidu.com/yefeng654321/item/a0d1e81c38cbfd603f87ced3


UAC参考文献:

1、Inside Windows Win7 User Account Control

2、Inside Windows Vista User Account Control

原创粉丝点击