最近,我试图给我的应用程序pipe理员权限没有系统要求“你想给pipe理员权限? 我发现了一个完美的工作方式。
我find解决scheme
我创build了一个名为nonadmin.bat的bat文件,并在其中编写了下面的代码
cmd min C set __COMPAT_LAYER=RunAsInvoker && start %1
如果我们拖动它的任何exe文件,它给了他们pipe理员权限(在没有让我访问环境variables之前,但在拖拽文件之后,它确实工作)。
题
现在我的问题是:
__COMPAT_LAYER,以及如何使用它
__COMPAT_LAYER是一个系统环境变量,它允许您设置兼容性图层,这是您右键单击可执行文件时可以调整的设置,选择“属性”,然后转到“兼容性”选项卡。
除了您所了解的信息之外,还有几个选项供您选择 :
您可以使用多个选项将它们分隔一个空格: set __COMPAT_LAYER=Win98 640x480
取消设置__COMPAT_LAYER变量
只要变量存在,这些设置就会一直存在。 当变量被设置的命令提示符关闭时,或者变量被手动取消set __COMPAT_LAYER=
命令时,变量set __COMPAT_LAYER=
。
由于您正在通过批处理脚本设置变量,所以一旦拖动到其上的可执行文件完成并且脚本关闭,变量就会自动取消设置。 需要注意的是,变量设置会保留在您选择的可执行文件所产生的任何子进程中。
使用__COMPAT_LAYER的安全性
将__COMPAT_LAYER设置为RunAsInvoker 实际上并不给你管理员权限,如果你没有这些权限的话 ; 它只是防止出现UAC弹出窗口,然后以任何用户的身份运行该程序 。 因此,使用它是安全的,因为你不是神奇地获得管理权限。
您也可以将变量设置为RunAsHighest (如果您拥有管理员权限,则只触发UAC,但如果您没有管理员权限则不授予管理权限)或RunAsAdmin(始终触发UAC)。