我想运行一个包含 runas 命令的批处理文件。 是否可以在批处理文件中链接密码? 例如: runas /profile /用户\域 PASSWORD 预先感谢您的回答
替代解决方案
看起来好像
runas
不允许你做你想要的事情(不会严重损害安全性......见下文)。但是,有一个名为 PsExec
的第三方实用程序,它确实 允许这样做。来自 Sysinternals PsExec 页面:
Usage: psexec [\\computer[,computer2[,...] | @file\]][-u user [-p psswd][-n s] [-r servicename][-h][-l][-s|-e][-x][-i [session]] [-c executable [-f|-v]][-w directory][-d] [-<priority>][-a n,n,...] cmd [arguments]
(注意:使用
PsExec
的想法来自 Lauren7060 对 Spiceworks 上这个问题的回答)。
所以,类似:
psexec -u MYUSER -p MYPASSWORD MYBATCH.BAT
应该做你想做的事。
什么不起作用
正如您所发现的,
runas
通常会提示用户输入密码。有趣的是,您可以将数据通过管道传输到 runas
:
echo password | runas ...
或从文件重定向输入:
runas ... < PASSWORD.TXT
和
runas
将不会提示输入密码。但是,无论我如何格式化数据,我都无法让 runas
接受密码有效。在后一种情况(从文件重定向)中,我尝试了带行尾和不带行尾的两种方法,但都不起作用。我的猜测是管道/重定向足以停止
runas
提示输入密码,但它不会真正从
stdin
读取任何内容。 Tech Torials 网站上的这篇文章部分支持了这一点,该文章描述了一种方法,您可以使用
runas
而不提示输入密码,但仅如果您将帐户的密码设置为空字符串. 我也找到了如何做到这一点的方法。但不幸的是我找不到任何方法如何在互联网上做到这一点。然后我发现(从自己的)一种方法,您可以在不使用任何第三方软件的情况下做到这一点。您可以通过使用批处理脚本和 vbs 来完成此操作。 首先,我创建了一个 vbs 文件,用于将密码发送到命令提示符并自动按 Enter 键。我有 1 秒的暂停脚本,以便在运行 runas 命令后可以输入密码。 只需创建一个这样的文件:-
echo Set x=CreateObject("wscript.shell")>C:\users\%username%\Desktop\pass.vbs
echo wscript.sleep 1000>>C:\users\%username%\Desktop\pass.vbs
echo x.sendkeys "<password of user>">>C:\users\%username%\Desktop\pass.vbs
echo x.sendkeys "{enter}">>C:\users\%username%\Desktop\pass.vbs
start C:\users\%username%\Desktop\pass.vbs
runas /user:<Username for which you want> "<File that you want to run>"
您需要两个文件:
batch文件。 InputPass.vbs:
Set w=CreateObject("wscript.shell")
w.sendkeys "<PASSWORD>"
w.sendkeys "{enter}"
StartProg.bat:
start InputPass.vbs
runas /user:<ADMIN OR ANY OTHER USERNAME WITH ADMIN RIGHTS> "<PROGRAM TO EXECUTE>"
之后你可以执行StartProg.bat,就可以了! :D