修改Manifest控制权限

2016-11-26 05:19
网络安全和信息化 2016年5期
关键词:普通用户对话框账号

引言:在Windows 7环境下,当使用普通用户账号运行某些应用程序时,系统会弹出对话框要求输入管理员账号和密码,否则无法运行。但同一个应用程序在Windows XP环境下却能基本运行。为了安全起见,公司电脑一般都不会赋予用户账号管理员权限,这样很多程序无法在Windows 7下运行。我们可以通过修改Manifest文件,来控制应用程序的运行权限。

在Windows 7环境下,当使用普通用户账号运行某些应用程序(程序图标显示有盾牌)的时候,系统会弹出对话框,要求输入管理员账号和密码,否则无法运行。也就是说,这类应用程序只允许管理员运行,普通用户则完全无法运行。

但同一应用程序在Windows XP环境下却能基本运行,只是部分功能因没有管理员权限而无法使用。为安全起见,公司电脑一般都不会赋予用户账号管理员权限,

这样一来,很多程序都会无法在Windows 7下运行,会造成相当的不便。这是由于Windows的UAC(用户账户控制)安全机制导致的。

用户账户控制机制

Windows从Vsita开始引入用户账户控制机制,当应用程序需要进行一些操作系统层面,或者影响其他用户操作的设置,比如更改控制面板设置、删除系统文件、修改注册表等,操作系统便会弹出对话框,提示用户输入管理员账号密码,获得许可后方能继续。

UAC的这种临时提升用户权限的设计,大大提高了Windows的安全性,应用程序的一些操作必须要获取到管理员用户的许可方能运行,这样可以防止恶意软件和间谍软件在未经许可的情况下,在计算机上运行安装或者对计算机进行更改。

凡是图标显示有盾牌的可执行文件,都需要管理员权限才能完全正常地运行,但也有可能该应用程序只是部分功能需要管理员权限而已。很多情况下,我们只需使用应用程序的一般功能,所以我们需要强制可执行文件以普通用户权限运行。

默认情况下,可执行文件EXE是以当前用户权限运行的,那么操作系统是如何知道应用程序需要使用管理员权限运行而弹出对话框提示用户呢?

操作系统是通过读取Manifest清单文件来获取EXE文件运行所需的权限。Manifest清单文件是一个后缀为.manifest的XML文件,保存了应用程序的配置元数据。该Manifest可作为文件存储在应用程序相同的目录下,也可作为一种资源嵌入在可执行文件内部。

修改Manifest文件

我们可以通过修改Manifest文件,来控制应用程序的运行权限。以下为外置和内置两种清单文件的修改方法。

1.外置同名Manifest文件

以软件“一号店在线客服”为例,软件安装后,修改程序目录(C:Program Files (x86)yhd)的文件夹权限,编辑Users用户组,添加“修改和写入”权限。在“高级”菜单中,勾选“更改权限→使用可从此对象继承的权限替代所有子对象项目”。然后以普通用户账号登录,运行主程序(im-desktop.exe),系统弹出UAC对话框。

用记事本编辑跟程序位于同一目录的im-desktop.exe.manifest文件(如图1)

配置中有一个requestedExecutionLevel项,这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择:

asInvoker:应用程序就是以当前的权限运行。highestAvailable:应用程序以当前用户可以获得的最高权限运行。requireAdministrator:应用程序仅以系统管理员权限运行。

所以,我们只需要将requestedExecutionLevel项目设置为asInvoker或者highestAvailable,程序就能以当前用户账号正常运行了。其中,highestAvailable和requireAdministrator这两个选项都可以提示用户获取系统管理员权限。

图1 编辑im-desktop.exe.manifest文件

图2 点击左侧的Manifest→1:1033

两个选项的区别在哪里呢?它们的区别在于,如果我们不是以管理员账户登录,而应用程序设置为requireAdministrator,那 么应用程序就直接运行失败,无法启动,也就是强制程序以管理员账号运行。而如果设置为highestAvailable,则应用程序可以运行成功,只是以当前账号的最高权限运行而不是系统管理员权限运行。另外,直接将该Manifest文件删除也可以强制操作系统以当前用户运行。

2.可执行文件内置Manifest文件

以软件“美图秀秀”为例,安装软件后,使用普通账号运行会弹出UAC对话框,

因其Manifest清单文件内置在EXE文件里,无法直接编辑。

(1)首先下载并安装可执行文件编辑软件Resource Hacker(http://www.angusj.com/resourcehacker/)。

(2)接着,用管理员账号运行Resource Hacker

软件(鼠标右键主程序以管理员身份运行),然后点击“File→ Open”,选 择 美图秀秀的主程序Xiuxiu.exe,点击左侧的资源列表中的 Manifest→ 1:1033(如图2)。这时候就看到了内置在EXE文件中的清单文件内容了,该文件内容和需要修改的内容都跟之前外置的清单文件一样,只要将requestedExecutionLevel项目修改为asInvoker或者highestAvailable即可。

(3)修改后,点击工具栏中的Compile Script,接着点击Save,程序会自动备份原文件为XiuXiu_original.exe。

(4)注销并重新登录一下当前的普通用户,运行xiuxiu.exe,程序就可以顺利运行了。

注意事项

现在,越来越多的应用程序运行时需要提升权限到管理员级别,这样可以提高软件的使用体验。但是,企业办公电脑由于安全性和管理的需要,一般不允许赋予普通用户本机管理员的权限,这样一来,很多软件都无法使用。通过关闭UAC功能或者修改Manifest清单文件,都可以令普通用户能基本运行这类应用程序。不过,关闭UAC后,即与Windows XP环境软件的运行机制类似,只能通过鼠标右键选择“运行为”来提升运行权限,而且基于安全性的考虑,不建议关闭UAC功能。

需要注意的是,修改清单文件后,不能保证软件可以百分百正常运行,修改后有时需要注销再登录当前用户或者重启系统才会生成。还有,清单文件修改前要注意对EXE文件和Manifest文件原文件做好备份。

猜你喜欢
普通用户对话框账号
A quantitative analysis method for contact force of mechanism with a clearance joint based on entropy weight and its application in a six-bar mechanism
彤彤的聊天账号
施诈计骗走游戏账号
正常恢复虚拟机
即使是普通用户也需要备一张家庭影院入门攻略:影音调校工具篇1
Bootlace Worms’Secret etc.
What Is Beauty?
我国社交媒体账号的对外传播之道——以“人民日报”Facebook账号“特朗普访华”议题报道为例
Numerical Analysis of Refueling Drogue Oscillation During Refueling Docking
浅谈VB的通用对话框《CommonDialog》控件的使用