最近,我试图在系统不弹出"您是否想要授予管理员权限?"的情况下给我的应用程序管理员权限,并且我找到了一个完美运行的方法。
我发现的解决方案
我创建了一个名为nonadmin.bat的批处理文件,并在其中编写了以下代码:
cmd min C set __COMPAT_LAYER=RunAsInvoker && start "" %1
如果我们将任何.exe文件拖到它上面,它会赋予它们管理员权限(在没有这个批处理文件的情况下,我无法访问环境变量,但是在将文件拖到批处理文件之后,它可以工作)。
问题:
现在我的问题是:
- '__COMPAT_LAYER' 实际上是什么意思?它是做什么的?
- 如何删除这种东西以便再次要求管理员权限?
- 这是否会减少系统安全性?
cmd /min /c ...
才对? - TripeHoundstart
后面始终加上""
,因为如果%1
被引用,则start
将把它解释为窗口标题。尝试使用start "C:\Program Files\whatever"
和start "" "C:\Program Files\whatever"
进行比较。 - Benoit