AsInvokerexe文件降权工具是一款Windows平台可执行文件降权工具包含一个清单文件,在其内要求以管理员权限运行,可以修改程序的清单,将申请的管理员权限替换为使用调用程序权限(通常是普通用户权限)。如果程序没有清单,则会写入一个默认清单,覆盖掉 Windows 的安装包检测。
AsInvoker软件介绍
之前遇到不少作用很简单的程序,却需要管理员权限运行,比如我记不清名字的某苹果越狱助手。要调试这样的程序的话调试器也需要以管理员权限重启,既麻烦又不安全。
Windows 有两种方法来判断在打开程序时要不要弹 UAC 窗口:
- 程序可以包含一个清单文件,在其内要求以管理员权限运行
- 程序的名称、描述等地方存在特定关键字,让系统认为这是安装包或更新器
AsInvoker 可以修改程序的清单,将申请的管理员权限替换为使用调用程序权限(通常是普通用户权限)。如果程序没有清单,则会写入一个默认清单,覆盖掉 Windows 的安装包检测。
这是我只花了两个晚上写的,很可能有bug,例如对不同语言的exe支持等等。欢迎抓虫!
本工具仅会清除管理员权限的要求,不会也无法保证原程序能正常运行。请自行备份原程序。
AsInvoker软件用法
用法: AsInvoker.exe 目标.exe
或者直接把目标程序拖到 AsInvoker 上。
AsInvoker 使用 kernel32.dll 里的资源 API 来从 exe 里读取程序清单,搜索 requestedExecutionLevel 元素,并替换掉管理员权限的要求。
已知问题
如果把降权后的程序在 Resource Hacker 里打开,能看到原来的清单文件其实还存在于资源里。
这意味着修改过后的程序现在有两个程序清单了。
然而修改后的清单排在原版清单的前面,大概就是它生效的原因了。
我目前还不清楚怎么删掉原来的清单。如果调用 UpdateResource 并把 lpData 和 cb
置零,会直接报错无效参数,并且无法添加新清单或者保存修改。