我有一个脚本需要以管理员身份运行,然后在非提升的上下文中运行单个命令。我以前用 执行此操作runas /trustlevel:0x20000 program.exe
,但在将 Windows 11 更新到 22H2 后,该命令现在给出以下输出(此处以运行记事本为例):
PS > runas /trustlevel:0x20000 notepad
RUNAS ERROR: Unable to run - notepad
87: The parameter is incorrect.
我已仔细检查了 trustlevel 参数值并且它似乎是正确的:
PS > runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)
我尝试的任何应用程序都会发生这种情况,不仅仅是记事本或我脚本中的应用程序。我也在 Powershell 7、Windows Powershell (5) 和命令行中尝试过,但没有什么区别。Runas 本身并没有完全损坏,因为我可以这样做,runas /profile /env /user:<username> notepad
它会启动(输入我的密码后)。我也做了一个sfc /scannow
以防万一,但没有什么区别。
我目前正在尝试弄清楚我是否可以在这里做些什么,或者该功能是否已在 22H2 中被弃用。
答案1
这是最新 Windows 11 更新的一个已知问题。它已在预览版本 25247 中得到解决:
修复了导致 runas 命令在某些情况下意外失败的问题,并出现错误 87,提示参数不正确(但事实并非如此)。
答案2
解决方法是在 runas 命令行中包含 /machine 开关。
答案3
正如 BlueMonkMN 所回答的,使用 /machine:x86|amd64|arm|arm64 的解决方法是可行的。如果您使用的是 64 位英特尔计算机并想要执行批处理文件,则没有可用的机器选项,因为 cmd.exe 是 64 位应用程序。C:\Windows\sysWOW64\cmd.exe 中有一个 32 位版本的 cmd.exe,因此命令可能如下:
runas /machine:x86 /trustlevel:0x20000 "C:\Windows\sysWOW64\cmd.exe <yourBatchfileHere>"
由于我暂时无法对答案发表评论,所以我不得不发表新的评论,以防有人遇到与我同样的问题。