用户帐户控制(User Account Control)是Windows Vista(及更高版本操作系统)中一组新的基础结构技术,可以帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统,同时也可以帮助组织部署更易于管理的平台。
使用UAC,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。
用户帐户控制(UAC)是新版Windows的核心安全功能,也是其最常被人误解的众多安全功能当中的一种。
而在这些程序里面,有的需要授权、有的不需要,是因为UAC是分授权等级的
首先请按Win+R,输入gpedit.msc,打开组策略。
然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制:管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:
不提示直接提升:关闭UAC,需要权限时直接提升权限。
在安全桌面上提示凭据:需要权限时在安全桌面上输入管理员密码提升权限。
在安全桌面上同意提示:需要权限时在安全桌面上选择“允许”提升权限。
提示凭据:需要权限时在普通窗口中输入管理员密码提升权限。
同意提示:需要权限时在普通窗口中选择“允许”提升权限。
非 Windows 二进制文件的同意提示:(默认设置)当非 Microsoft 应用程序的某个操作需要提升权限时,选择“允许”提升权限。
因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。
如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。
•程序只能在运行前要求提权。如果已经在运行了,那么将失去申请提权的能力•权限提升仅对此次进程有效
提升权限的操作大致有两个:
•自动提权请求•手动提权请求
手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限,如:注册表编辑器
在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。
visual studio里面的uac
在visual studio里面有一个manifest文件,这个文件本质上是一个xml文件,用于标识当前应用程序的配置属性。其中这几个级别明细如下
•aslnvoker 默认权限•highestAvailable 最高权限•requireAdministrator 必须是管理员权限
将编译选项调整为requireAdministrator,则当用户运行程序后,将获得管理员权限会话,不需要绕过UAC。