我有以下 HTA 文件:
<html>
<head>
<title>test</title>
<SCRIPT Language="VBScript">
createobject("Shell.Application").ShellExecute "C:\windows\system32\cmd.exe", "/k powercfg /batteryreport", "", "runas", 1
</SCRIPT>
<body>
</body>
</html>
当我运行它时,它会显示一个带有来自“Windows 命令处理器”的“是”/“否”按钮的 UAC 提示。单击“是”后,将打开一个标题为“管理员:C:\WINDOWS\SysWOW64\cmd.exe”的命令提示符窗口。但是该命令失败,指出“无法加载电源效率诊断库 (energy.dll)”。
由于以下原因,我很确定打开的命令窗口具有管理员权限:
- 它显示一个 UAC 框以打开 CMD 窗口
- VBScript 命令应该以提升的权限运行外部命令
- 当我在同一个命令窗口中运行以下命令时,它显示“成功”:
net session >nul 2>&1 && echo Success || echo Failure
。(此命令检查管理员权限;我在这篇文章的评论中发现:https ://superuser.com/a/667745 - 标题中写着“管理员:”。
所以,我想知道为什么这个命令不起作用,如果可能的话,我怎样才能让它工作。
我注意到的另一件有趣的事情是,createobject("Shell.Application").ShellExecute "C:\windows\system32\cmd.exe", "/k powercfg /batteryreport", "", "runas", 1
从该 HTA 文件中取出第 5 行 ( ) 并将其放入空白 .VBS 文件实际上会导致不同的结果。使用此方法生成的命令窗口的标题不同(“管理员:C:\Windows\System32\cmd.exe”),产生的错误也不同。它说:
启用跟踪 60 秒...观察系统行为...无法打开电源效率诊断 ETW 会话。ETW 会话已在使用中。确保当前没有其他 PowerCfg 实例正在运行。
有没有人对此问题有潜在的解释或解决方案?谢谢你。