软件星级:3分
之前遇到不少作用很简单的程序,却需要管理员权限运行,比如我记不清名字的某苹果越狱助手。要调试这样的程序的话调试器也需要以管理员权限重启,既麻烦又不安全。
Windows 有两种方法来判断在打开程序时要不要弹 UAC 窗口:
- 程序可以包含一个清单文件,在其内要求以管理员权限运行
- 程序的名称、描述等地方存在特定关键字,让系统认为这是安装包或更新器
AsInvoker 可以修改程序的清单,将申请的管理员权限替换为使用调用程序权限(通常是普通用户权限)。如果程序没有清单,则会写入一个默认清单,覆盖掉 Windows 的安装包检测。
AsInvoker 是一个 Windows 可执行文件降权工具。它可以移除 exe 程序清单里的管理员权限要求。
用法
用法: AsInvoker.exe 目标.exe
或者直接把目标程序拖到 AsInvoker 上。
AsInvoker 使用 kernel32.dll 里的资源 API 来从 exe 里读取程序清单,搜索 requestedExecutionLevel 元素,并替换掉管理员权限的要求。
requestedExecutionLevel 详解(英文):https://docs.microsoft.com/en-us/previous-versions/bb756929(v=msdn.10)
(也可搜索“requireAdministrator 提权”)
用例
这里的演示程序是微软 Sysinternals 的 Disk2vhd 小工具,
用来把磁盘分区转换成虚拟磁盘文件。这个程序在清单里注明了需要管理员权限。
运行这个工具的时候,UAC 画面会跳出来。如下图,程序运行正常。
现在我们用 AsInvoker 将 Disk2vhd 降权。Disk2vhd 的图标上,UAC 盾牌标志不见了。
运行时系统不再弹出 UAC 画面了。此外工具现在不能读取磁盘分区列表了,因为它现在没有管理员权限。