使用命令行运行奇怪的功能

使用命令行运行奇怪的功能

我有一个.bat用于启动一些程序的文件。其中一些程序需要提升权限(即devcon基于设备的是否存在检查),但有些则不需要。因此,我.bat以管理员身份运行,然后使用runas命令运行其他程序。

runas /trustlevel:0x20000 "C:\Folder\foo.exe"
runas /trustlevel:0x20000 "C:\Folder\bar.exe"

这对某些程序有效。然而,对于某些程序,它会显示此错误消息(由自己从芬兰语翻译而来,英文可能略有不同):

ERROR: Can not execute - bar.exe
740: The requested operation requires elevation.

奇怪的是,如果我创建这个.bat

@echo off
start "" "bar.exe"

并运行它runas,它就像一个魔咒。它们的组合

runas /trustlevel:0x20000 "start \"\" \"C:\Folder\bar.exe\""

不起作用,因为start不是文件。什么原因导致的?

更新:我尝试了另一个命令,并且成功了。

runas /trustlevel:0x20000 "cmd /c start \"\" \"C:\Folder\bar.exe\""

我想知道的是不是如何让它工作但是为什么会发生这种情况

更新 2:正如评论中所建议的那样和31415foo.exe这是和之间的区别bar.exe。但是,运行它们的方式肯定有区别,因为它们的结果不同;这种区别就是我所寻找的。

更新 3:我使用以下方法检查了程序的清单:资源编辑器,它们在这里。看起来它们具有相同的执行级别(asInvoker即最低用户级别)。

清单

上面的是bar.exe,下面的是foo.exe。(我知道,搞错了 :D)

更新 4:psexec确认从提升的命令提示符也会发生这种情况:

psexec -l -i bar.exe

出现错误,

psexec -l -i cmd /C start "" "bar.exe"

作品。

相关内容