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