“__COMPAT_LAYER”实际上是做什么的?

2024-02-20

最近,我试图给我应用程序管理员权限,无需系统询问“您想授予管理员权限吗?”我找到了一种效果很好的方法。

我找到的解决方案

我创建了一个名为的bat文件非管理员.bat并在其中写入以下代码

cmd min C set __COMPAT_LAYER=RunAsInvoker && start "" %1

如果我们将任何 exe 拖到其上,它就会为他们提供管理员权限(之前它不允许我在没有它的情况下访问环境变量,但在将文件拖到 bat 上后它确实可以工作)。

Question

现在我的问题是:-

  1. “__COMPAT_LAYER”实际上是什么意思以及它有什么作用?
  2. 我如何删除这样的东西,以便它再次要求管理员权限?
  3. 这会降低系统安全性吗?

__COMPAT_LAYER,以及如何使用它
__COMPAT_LAYER 是一个系统环境变量,允许您设置兼容性层,您可以在右键单击可执行文件、选择“属性”并转到“兼容性”选项卡时调整这些设置。

多种选项可供选择 https://support.microsoft.com/en-us/kb/286705除了您所知道的之外:

  • 256Color- 以 256 种颜色运行
  • 640x480- 以 640x480 屏幕分辨率运行
  • 禁用主题- 禁用视觉主题
  • Win95- 在 Windows 95 的兼容模式下运行程序
  • Win98- 在 Windows 98/ME 的兼容模式下运行程序
  • Win2000- 在 Windows 2000 的兼容模式下运行程序
  • NT4SP5- 在 Windows NT 4.0 SP5 的兼容模式下运行程序

您可以通过用空格分隔来使用多个选项:set "__COMPAT_LAYER=Win98 640x480"

取消设置 __COMPAT_LAYER 变量
只要变量存在,这些设置就会一直存在。当设置变量的命令提示符关闭时,或者使用命令手动取消设置变量时,变量将停止存在set __COMPAT_LAYER=.

由于您是通过批处理脚本设置变量,因此一旦您拖动到变量上的可执行文件完成并且脚本关闭,该变量就会自动取消设置。请务必注意,变量设置会保留到由您选择的可执行文件生成的任何子进程中。

使用__COMPAT_LAYER的安全性
将 __COMPAT_LAYER 设置为 RunAsInvoker如果您没有管理员权限,则实际上不会授予您管理员权限;它只是阻止 UAC 弹出窗口出现,然后以任何用户调用的方式运行程序 http://packageology.com/2014/08/supressing-uac-prompts-in-appv5-with-compat-layer/。因此,使用它是安全的,因为您不会神奇地获得管理员权限。

您还可以将变量设置为最高运行 http://ss64.com/nt/syntax-variables.html(仅在您拥有管理员权限时触发 UAC,但如果您没有管理员权限,则不会授予管理员权限)或 RunAsAdmin(始终触发 UAC)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“__COMPAT_LAYER”实际上是做什么的? 的相关文章

随机推荐