欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过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毫秒(保守值,再短的间歇笔者没有测试)。