Windows Vista的UAC功能浅析(二)

互联网 | 编辑: 董宇成 2007-05-15 10:30:00转载 一键看全文

Windows Vista的UAC功能浅析(4)

Windows Vista区别对待不同的进程

同样是系统内置的组件,例如regedit、mmc等GUI组件,其兼容性设置也被锁死,但是为什么系统会主动询问是否提升权限?难道命令行工具是后妈养的,Windows Vista有意给它穿小鞋?

用记事本(或者其他编辑器)打开分别打开regedit.exe和sc.exe,进行仔细对比查看,发现了秘密所在:

regedit.exe和SC.exe的内容分别如下图所示。

图4

图5

从图中可以看出:

在SC.exe中有如下xml格式的语句:

level="asInvoker"

regedit.exe中有如下xml格式的语句:

level="highestAvailable"

原来UAC有一种机制,可以由应用程序的manifest(程序清单)来指定该应用程序的运行级别,可以在manifest中指定以下三种级别:

? asInvoker:继承父进程的访问令牌,这就是为什么SC.exe默认运行在standard User环境下,因为继承了CMD Shell的访问令牌。

? highestAvailable:进程可以获得它所能得到的最高级别的访问令牌。

? requireAdministrator:进程必须由管理员组成员启动,并且必须获得完全级别的访问令牌。

唯一遗憾的是,只能由Microsoft自己对SC.exe的manifest信息进行修改,如果企图借助Winhex等工具直接修改SC.exe中的Manifest信息(例如试图将其RunLevel修改为"highestAvailable"),结果就会闹和笔者一样的笑话,收到“side by side”的出错消息──都是不懂开发给整的~

这里多说一句:如果病毒等恶意程序,也利用manifest信息在其代码里添加特权标记,会不会误导最终用户?

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑