深入了解UAC

应用程序清单 Manifest 中各种 UAC 权限级别的含义和效果 如果你的程序对 Windows 运行权限有要求,那么需要设置应用程序清单。本文介绍如何添加应用程序清单,并解释其中各项 UAC 权限设置的实际效果。 本文内容各种不同的 UAC 清单选项asInvokerrequireAdministratorhighestAvailable删除 requestedExecutionLevel 元素这些值都用于什么场景?为什么 UWP 程序不能指定 UAC 清单... 阅读详情

UAC(User Account Control)即用户帐户控制,是从Windows Vista开始引入的,并在Windows 7中得到了很大的改进一种机制,无论对普通用户还是对开发者都有很大的影响。但是谈到UAC到底是一个怎样的机制,不见得每个人都知道,反而在很大程度上都被误解了。本文就试图阐述UAC的一些原理机制及作用意义。

相信绝大多数人的Windows都只开了一个账户,即管理员账户,在微软曾经的一份调查中显示:Windows只有一个账户的比例高达70%。在Windows XP及其之前的操作系统中,这样会导致进程在启动时即从explorer.exe继承了管理员权限(绝大多数是这样),甚至可以将管理员权限继续传递给其子进程。拥有管理员权限的进程可以修改系统的任何设置,甚至可以修改其他用户的数据,恶意程序也可以因此修改系统的安全设置,比如关闭防火墙,关闭杀毒软件。因此不仅微软,普通用户也希望大多数程序在运行时只拥有普通权限,而并非管理员权限;即使那一小部分程序想要获得管理员权限,那么也是得在征得用户的许可下才可以成功获得。很幸运,UAC正是提供这样功能的一种机制。

从Windows Vista开始,第一个登录Windows的账户是一个PA(Protected Administrator)账户,而在之前版本的Windows中则是一个完全的管理员账户。在PA账户下运行的程序不具备管理员权限,除非对其进行提权。因此在开启UAC的Windows中,应用程序想要获得管理员权限必须征得用户的同意。征得用户同意的方式是将当前屏幕背景保存为快照(没错,的确保存为快照,可以在播放一段视频的时候进行提权,观察视频画面是否继续播放),并将其颜色变暗作为背景,同时创建“安全桌面”,并在其上弹出一个对话框询问是否进行提权, UI效果非常显著,如下图。

1

所谓“安全桌面”是指当前桌面属于操作系统而不是用户,就像登录Windows时的桌面一样;提权即指提升到管理员权限。如果Windows已成功验证程序的签名那么提权对话框会显示很友好的蓝色,如上图,如果程序无签名提权对话框会显示略带警告意思的橙黄色,但并不足以说明程序是具有威胁的。如果用户允许提权则程序才会获得管理员权限,否则程序是取消运行。

前文提到,拥有管理员权限的程序才可以对系统一些目录、设置进行更改,准确地说是全局目录、设置。目录比如%SYSTEMROOT%, %PROGRAMDATA%等,以为系统设置通常保存在注册表中,具有全局作用域的注册表键值比如HKEY_LOCAL_MACHINE\ SoftWare。举个例子,很多程序都想实现开机启动,具体的做法是将启动信息写在注册表HKEY_LOCAL_MACHINE\SoftWare\MicroSoft\Windows\CurrentVersion\Run或者HKEY_CURRENT_USER\SoftWare\MicroSoft\Windows\CurrentVersion\Run两个键的其中一个下。仔细看这两个键非常相似,唯一的不同就是根键,一个是HKEY_LOCAL_MACHINE(HKLM),另一个是HKEY_CURRENT_USER(HKCU)。它们的不同是HKLM中的信息通常是起全局作用的,而HKCU仅对当前用户起作用。如果我们当前用A账户登录Windows,安装程序将启动信息写到了HKLM\SoftWare\……\Run下那么即使下次用B账户登录程序依然会开机启动,但是如果写到HKCU\SoftWare\……\Run下那么这样的配置仅对A用户起作用。因此在注册表中HKEY_LOCAL_MACHINE\SoftWare是属于全局作用域。对此键值及其子键进行更改,程序必须具备管理员权限。可以想象,一个程序想对全局的设置做些手脚,而又不能保证总是能以管理员权限运行是一件很悲剧的事,在UAC的影响下轻则程序设置失败,重则程序崩溃。因此那些对全局的设置进行更改的程序保证能以管理员权限运行是很重要的,因此必须将程序做成拥有一种对用户友好的提权提示的形式。

在我们日常使用Windows中,最常用的无外乎3种提权方法。一种是从右击程序弹出的菜单中选择“以管理员身份运行”,显然这种是不友好的,因为相信大多数用户都是习惯直接双击运行程序,而且很少的一部分有经验的用户知道在程序进行某一些操作失败时应该从这里运行程序;第二种是从程序属性的兼容性选项卡中勾选“以管理员身份运行”,这样程序以后都会以管理员身份运行,当然运行前会依然会弹出提权提示;第三种应该归结为程序自身的设计。之前有人问过为什么有的程序右下角会有一个小盾牌而有的程序则没有。比如下图

2

这个小盾牌表明在当前环境下运行此程序必须获得管理员权限。细心的用户会发现,有盾牌的程序每次运行会自动弹出提权对话框,不需要任何的人为干预,而没有盾牌的则不会弹出提权对话框,因此运行时也不具备管理员权限。那么这个盾牌是如何实现的呢?其实在每个程序中都会嵌入一个清单(manifest),实质上是一个xml文件,内容类似下图。

3

值得注意的是asInvoker这个值,与此类似这个位置可以有三个不同的值,分别是requireAdministrator、highestAvailable 、asInvoker。

requireAdministrator意思为总是需要管理员权限,如果没有获得管理员权限,则程序不会运行。因此这样的程序右下角会有一个小盾牌,出现提权提示时如果点否,则程序不会运行。

highestAvailable意思是尽可能地获得最高权限,如果程序实在管理员账户下运行,则出现提权提示,请求获得管理员权限;如果在普通用户下运行,则以标准权限运行。

asInvoker意思是和调用此程序的进程一样的权限运行(亦父进程)。

说了上面这么多,看上去UAC是一种安全机制,但坦白地说这只是UAC的一个副作用。UAC作为一种账户权限机制背后真正的意义是,能够让用户以标准用户权限使用电脑流畅自如。但这并不是一件容易的事,因为这首先需要开发者将其软件做成只需要标准用户权限运行的形式。在UAC的影响下,其实向开发者传递了这样一个信息:你们的程序并不会被保证总是会以管理员权限来运行,是以标准用户权限来完成原本没必要使用管理员权限完成的事,还是继续弹提权对话框来打扰用户,哪个更友好,你们自己看着办吧。

参考资料

Mark Russinovich.《Inside Windows 7 User Account Control》

Jeffrey Richter.《Windows核心编程》

睿易售前初级认证课程R4.2上网行为管理系统-2023练习题答案 速印机(理想、理光、基士得耶、荣大等)、复印机(夏普、东芝、理光、佳能、震旦等全系列)、打印机、扫描仪、传真机、多媒体教学一体机、交互式电子白板、报警器材、监控、国产化设备、竞业达监考设备及其它监考设备、听力考试设备、特种安防设备维护及维修。、企业办公场景,建议用企微认证,信息部不需要维护和管理专门的上网认证账号,利用企微的目录体系,就可以实现员工实名认证;、提供最大带宽限制、保障带宽、预留带宽的功能,实现灵活、高效、可靠的带宽控制能力。2、下列关于RG-UAC系列产品用户认证功能,销售脚本说法正确的是? 阅读详情

相关推荐

WIN10鼠标指针一直转圈解决方案及UAC了解

windows 10系统有时候会出现鼠标指针一直转圈,但并不影响正常使用的情况,让强迫症们特别难以接受,那要怎么解决呢? 方法/步骤: 1、win+r键运行msconfig 2、在打开的系统配置窗口中,点击上面的“工具”标签 3、在工具列表中,我们找到更改UAC设置项,选中该项后 点击右下角的“启动”按钮 4、打开用户账户控制设置窗口,在这里把滑块调整到最低端,最后点击确定按钮 5、重启计算机后就可以了 知其然,还要知其所以然,我们要指定UAC是干什么的。...

A soul tortured by desire 9167

关于UAC执行级别的研究

用户帐户控制 (User Account Control)简称UAC,是Windows Vista以及之后操作系统中一组新的基础结构技术,可以帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统,同时也可以帮助组织部署更易于管理的平台。 UAC执行级别在VS里面的设置如下:   测试动作:拷贝文件(从C盘考到C盘) 测试记录: 纵行:用户 横行:编译时设置 as

liujiayu2的专栏 6051

C语言编写Picard迭代和牛顿迭代法

为了完成学校计算方法的作业,花了两个多星期将所有实验报告编写出来,看到同桌找代码的辛苦,优快云也没有这类代码,我只是一时兴起,想分享我写的代码与大家共飨,有错误还请多多指正,代码都不难,也是为了让优快云帮我保存下,我辛辛苦苦做出来的,倘若能给别人带来一丝一毫的帮助,我都万分荣幸。 1:什么是Picard迭代 先弄一个满足f(x) = 0的函数将其转化为x= 正在上传… 重新上传 取消 ...

mohenxiang的博客 4699

Windows应用程序运行权限设置

  在Vista以后的windows版本中,有些时候需要提升编译后生成程序的权限,即希望让生成的程序以管理员身份运行。虽然在一般情况下,可以使用鼠标右键选择的方式来强行以管理员身份运行,但它并没有屏蔽普通运行方式,而且普通人通常也不会使用右键选择以管理员身份运行,所以必须在生成程序时就限定程序只能以管理员方式来运行。        先简单说一下,在Vista以后的windows版本中,微软引入了U...

weixin_33755649的博客 1008

从轻量化到高精度:3DXML 转 STP 的工程数据升级技术指南

本文详细解析了3DXML转STP格式的工程数据升级技术,对比了两种格式在轻量化和高精度方面的特性差异,并提供了CATIA、FreeCAD及Python编程等多种专业级转换方案。通过实际案例展示了如何确保转换过程中的数据精度,适用于CAD设计、精密制造等场景,帮助工程师实现工程数据的高效升级。

weixin_29201859的博客 215

oh-my-zsh详细安装与主题插件配置

使用Linux的小伙伴都知道默认shell是bash,但是对于喜欢折腾,喜欢酷炫的我们bash怎能够用。zsh的作为一种shell,功能更强大,但是配置复杂。后来,有大佬创建了一个名为oh-my-zsh的开源项目,使用方便,功能强大。 下面就去oh-my-zsh的配置。 ①安装zsh 想要安装oh-my-zsh,首先得安装zsh,输入命令 sudo apt-get install zsh 界面如下 ②查看是否安装成功 输入命令 zsh --version 可以查看安装zsh的版本..

惜洛-Jankin的博客 2万+

C#进程运行权限

环境说明: VS2012,windows 7 亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目--》属性--》安全性--》选中【启用ClickOnce安全设置】 此时在我们的项目下Properties目录下多了个叫 app.manifest 的文件 步骤2: 文件里面的代码如下,我们只需要将以下这句更改了即可 <requestedExecutionLevel level="asInvoker" uiAccess="false" /&gt..

lifei_0001的博客 745

告别裸机:在FreeRTOS上为STM32移植SOEM 1.4.0的完整指南

本文详细介绍了在FreeRTOS环境下为STM32H7系列芯片移植SOEM 1.4.0的完整指南,涵盖环境准备、任务架构设计、OSAL层适配及网络驱动优化等关键步骤。通过EtherCAT主站解决方案的实现,帮助开发者构建稳定可靠的工业自动化系统,提升实时通信性能。

weixin_33582311的博客 363

VS2010制作安装程序+卸载程序并提升运行权限

一、提升软件运行权限 在项目中添加应用程序清单,并更改权限为highestAvailable 二、制作安装包 1、在开发项目解决方案下新建项目 2、选择Visual Studio Installer->安装项目 3、在应用程序文件夹添加要打包的文件,包括使用的库文件,如果有文件件则新建文件夹,再在文件夹中添加相应的文件 4、选中添加的

fairypwq的专栏 4058

当图像配准遇见边缘计算:低功耗设备的优化实践

本文探讨了在边缘计算环境下优化图像配准技术的实践方法,重点解决低功耗设备如树莓派和Jetson Nano上的算力瓶颈问题。通过算法轻量化、硬件加速和内存优化等策略,实现了毫秒级图像配准,适用于智能安防、移动医疗等实时性要求高的场景。

weixin_29054195的博客 387

华为od 面试八股文_前端_01_含答案

华为od 面试八股文_前端_01_含答案

MISAYAONE的博客 2748

UAC遭禁用?UAC知识了解

大家都晓得,Win 8 系统有自带的音乐和视频播放器,所以用自带的播放器听听音乐看看视频,效果也是不错的。恰好有几首Taylor的歌,所以想试试系统自带的音乐功能,but 当我选择使用音乐播放的时候,弹出了一个对话框,如下。(对话框没有来得及截图,百度了一只相似的)                          UAC怎么解除禁用呢?一起踏上解开禁用UAC的旅程吧。

王璐 4540

AI幻觉缓解的成本效益分析:投入产出比优化

在当今AI技术飞速发展的时代,AI幻觉成为了一个不容忽视的问题。AI幻觉就像是AI在“做梦”,会给出一些不符合实际或者错误的答案。我们这篇文章的目的就是要分析缓解AI幻觉所需要投入的成本和能够获得的效益,看看怎么能让投入和产出的比例达到最优。范围涵盖了常见的AI应用场景,比如智能客服、自动驾驶等领域。接下来,我们会先介绍一些和AI幻觉、成本效益分析相关的术语。然后用一个有趣的故事引出核心概念,解释什么是AI幻觉、成本效益分析等,以及它们之间的关系。

AI 原生应用开发的博客 935

[译]UAC--渗透测试需要了解的

原文地址:[url]http://blog.cobaltstrike.com/2014/03/20/user-account-control-what-penetration-testers-should-know/[/url] UAC是User Account Control缩写。通过UAC,可以用来提权(包含vista)。 本文聚焦Windows完整性级别和UAC提权。 [b]进...

iteye_16188的博客 360

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图、天地图)

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图)

1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

安全、兼容性及权限——关于UAC的一席谈(略更新)

UAC,全称User Account Control(用户帐户控制),相信使用NT6.X系统的各位对它都不会陌生。尽管距其在Vista中首次出现已经有了两年多的时间,但舆论仍然没有接受它。在这种环境下,UAC在操作者群体的意识中成了操作繁琐、蔑视操作者智商的多余功能,不少朋友纷纷把关闭UAC列入“装好系统后必做的几件事”中。我对这种观点不敢苟同,否则我也就没必要来写这篇文章了。 杀毒软件

FrankieWang008的专栏 1998

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

安全新兵营第六天:使用UAC

InfoWorld Security Boot Camp: Day 6: Use UAC for good, not evil September 28, 2009 SECURITY BOOT CAMP, WEEK TWO

jackiechen_vip的专栏 530

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

从vista开始microsoft推出了UAC机制,就是User Account Control。开启UAC机制之后,windows默认通过explorer启动的程序都是运行在标准用户权限下面,而不是管理员用户权限。标准用户权限下会限制用户的诸多操作,最需要我们程序员关注的就是对于文件和注册表的访问,但是在windows xp下,所有的用户都是管理,很多程序在设计之初,就只考虑了程序是运行在管理员

wangjiabin2007的专栏 1912

Disabling the Windows 8 UAC

http://www.computerperformance.co.uk/win8/windows8-uac-disable.htm https://msdn.microsoft.com/en-us/library/cc232765.aspx 转载于:https://www.cnblogs.com/CodeGear/p/4321627.html

dianmengkui1387的博客 156

gpedit msc组策略面板 win10在哪里_win10系统中关闭UAC的方法

大家都知道UAC机制是保障系统的安全性,但是有些用户对UAC机制的弹窗非常的烦感,那么如何关闭win10系统中的UAC机制呢?今天我们就具体的了解一下。在win7操作系统的时候,关闭是非常的简单的。但是win10系统中就稍微的麻烦一些,所以我们要仔细的阅览。不过也可以将UAC的权限调到“从不通知”,临时关闭UAC。首先,打开控制面板、所有控制面板项、安全和维护,在此页面下找到“更改用户账户控制设置...

weixin_39709178的博客 727

linux下编译eXosip、osip,以及UAC和UAS的例子

linux下编译eXosip、osip,以及UAC和UAS的例子 从网站上看到了这样的一篇博文 :Windows下编译eXosip、osip,以及UAC和UAS的例子  (链接:http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155427.html) 觉得对学习sip的初学者,包括我,都是很有帮助的。但是那是在window下的编译,

H265技术专栏 1467

UAC(USB音频)标准文档下载仓库

UAC(USB音频)标准文档下载仓库 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到UAC(USB音频)标准文档的下载仓库!这里为您提供了官方UAC说明文档的下载资源,旨在帮助您更好地了解USB音频的相关规范。 资源描述 本仓库所提供的资源文件为《UAC(USB音频)标准文档》,具体内容如下: 官方UAC说明文档:详细介绍了USB音频类设备的规范,包括设备架构、接口定...

gitblog_06789的博客 382

Windows系统介绍

Win8以上,计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Configuration。MBR位于物理硬盘的0柱面,0磁头,1扇区,也就是整个硬盘的第一个扇区(偏移量为0),共占512个字节(即一个扇区)。c:\windows\1.txt 不存在,%localappdata%\VirtualStore\Windows\1.txt存在。包含4个表项,每个表项16字节,共占用64字节。

过好每一天的女胖子 2363

如何解除Windows阻止软件运行

有时候,你可能会遇到Windows阻止某些软件运行的情况,这可能是因为用户账户控制(UAC)设置得太严格。下面是一些步骤,教你如何解除Windows的阻止,让软件能够顺利运行。首先,按下键盘上的Win + R组合键,打开“运行”窗口。这样就会打开本地组策略编辑器。在弹出的窗口中,选择“已禁用”选项,然后点击确定。最后,重启你的电脑,这样设置就会生效。这样,你之前被Windows阻止的软件应该就能顺利运行了。通过以上步骤,你可以轻松解除Windows对软件的阻止,让你的工作更加顺畅。打开组策略编辑器 🖥️。

raslee的专栏 1万+

以管理员身份运行matlab安装程序,安装软件的时候,右键“以管理员身份运行”安装和普通双击安装有什么不同?...

取决于不同的软件,安装过程中可能需要不同级别的权限。例如某些软件需要修改系统级设置,需要安装给本机所有用户,需要给系统中安装驱动或服务,这些软件在安装过程中需要具备管理员权限。但有些软件可能只安装给当前用户,无需修改系统级设置,这些软件可能用标准帐户即可安装。在启用 UAC 的情况下,当双击一个软件的安装程序时,一开始将使用标准权限来运行这个安装程序,并开始进行安装。如果在安装过程中需要管理员权限...

weixin_42421177的博客 3101
上一篇: Bug一词的由来
下一篇: 如何选购高性能的镜像交换机
Debug哥
博客等级 码龄14年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值