通过VBS脚本无交互执行RUNAS命令
程序员文章站
2022-07-03 09:30:43
...
日常管理中,为了防止用户有意无意地更改电脑设置或安装软件,终端上会将用户的权限设置为Users。但是,在Users权限下,无法使用向日葵等远程协助工具(即便可以使用,权限也与用户相同)。
在Windows系统中,提供了一个runas命令,可以用特定的用户(如:管理员)身份运行程序。
但runas有一个问题,就是用户的密码无法作为命令的参数带入执行,只能在runas命令执行后,按提示输入密码。
经过上网查找资料,发现可以通过vbs编写一个脚本,代替人工输入密码。
dim WshShell,cmd
cmd = "%SystemRoot%\system32\cmd.exe"
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run cmd
WScript.Sleep 500
WshShell.SendKeys "runas /user:TEST " & chr(34) & "{%}cd{%}\SunloginClient_11.1.1.38222_x64.exe" & chr(34)
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
WshShell.SendKeys "t"
WScript.Sleep 100 '暂停100毫秒
WshShell.SendKeys "e"
WScript.Sleep 100
WshShell.SendKeys "s"
WScript.Sleep 100
WshShell.SendKeys "t"
WScript.Sleep 200
WshShell.SendKeys "{ENTER}"
'WScript.Sleep 500
'WshShell.SendKeys "exit"
'WshShell.SendKeys "{ENTER}"
set WshShell = nothing
在实际测试中发现,runas需要交互输入密码的时候,不能使用字符串将密码一次性输入,否则可能会造成密码输入不完整,导致认证失败。建议是在输入密码的每个字符之间,暂停100毫秒(保守值,再短的间歇笔者没有测试)。
推荐阅读