如何在出现提示时自动向 cmd 提供输入?
How to provide input to cmd automatically when prompted?
我想自动输入密码到 运行 cmd。
我正在尝试通过非管理员模式启动应用程序。我正在使用以下命令。
runas /user:nonadmin "C:\Program Files (x86)\API\Flex.exe"
当我在 cmd 中按回车键时,它要求输入如下密码
Enter the password for nonadmin:
现在我想自动输入密码。我不想手动输入密码。
我该怎么做?
微软报价
“创建用户帐户控制 (UAC) 是为了让用户(甚至是管理员)运行 大多数应用程序具有标准用户权限,从而使操作系统更不容易受到恶意软件的攻击。UAC 为管理任务和其他应用程序功能。此提升潜力是通过 运行 作为管理员选项提供的,您可以在右键单击可执行文件时获得该选项。"
因此命令行 运行As 强制执行 手动密码
您不应该试图 use/script 管理员密码,但是如果我们是唯一的用户并且脚本提升很方便,这可能不是我们关心的问题。
您有多种选择来替换 CMD>运行As Replacing RunAs.exe 或使用 powershell 编写替代脚本。
但是我发现最简单的方法是使用 SysInternals PsExec,因为它可以用于局域网中 pc 之间的许多其他类似任务。
>curl -o %temp%\pstools.zip https://download.sysinternals.com/files/PSTools.zip
>tar -xf %temp%\pstools.zip PsExec64.exe
>set password=MyPassword
>psexec64 -u Me -p %password% calc.exe
补充:
如果这是为了 交互式 方便,并且必须以交互方式提供密码 once 每台计算机是可以接受的(和用户),考虑使用 runas.exe
的 /savecred
选项:
runas /user:nonadmin /savecred "C:\Program Files (x86)\API\Flex.exe"
这将在 第一次 为当前用户调用给定计算机时提示输入 nonadmin
的密码,而不需要在 中提供密码]随后次调用。
否则,如果安装 psexec
等实用程序(如 K J 的回答所示)不是 选项:
您可以发送击键到runas.exe
,模拟交互式密码输入:
# Set your password here, or add it directly to the .SendKeys() argument below.
$password = 'test'
# Send the password as keystrokes, followed by Enter, then
# launch runas.exe, which should receive the keystrokes as if they
# had been typed interactively.
(New-Object -ComObject WScript.Shell).SendKeys("$password{ENTER}"); runas /user:nonadmin "C:\Program Files (x86)\API\Flex.exe"
注:
强制性警告:纯文本密码处理存在安全风险。
UI 脚本(模拟用户 activity)不像适当的程序控制那样稳健。
我想自动输入密码到 运行 cmd。
我正在尝试通过非管理员模式启动应用程序。我正在使用以下命令。
runas /user:nonadmin "C:\Program Files (x86)\API\Flex.exe"
当我在 cmd 中按回车键时,它要求输入如下密码
Enter the password for nonadmin:
现在我想自动输入密码。我不想手动输入密码。 我该怎么做?
微软报价
“创建用户帐户控制 (UAC) 是为了让用户(甚至是管理员)运行 大多数应用程序具有标准用户权限,从而使操作系统更不容易受到恶意软件的攻击。UAC 为管理任务和其他应用程序功能。此提升潜力是通过 运行 作为管理员选项提供的,您可以在右键单击可执行文件时获得该选项。"
因此命令行 运行As 强制执行 手动密码
您不应该试图 use/script 管理员密码,但是如果我们是唯一的用户并且脚本提升很方便,这可能不是我们关心的问题。
您有多种选择来替换 CMD>运行As Replacing RunAs.exe 或使用 powershell 编写替代脚本。
但是我发现最简单的方法是使用 SysInternals PsExec,因为它可以用于局域网中 pc 之间的许多其他类似任务。
>curl -o %temp%\pstools.zip https://download.sysinternals.com/files/PSTools.zip
>tar -xf %temp%\pstools.zip PsExec64.exe
>set password=MyPassword
>psexec64 -u Me -p %password% calc.exe
补充
如果这是为了 交互式 方便,并且必须以交互方式提供密码 once 每台计算机是可以接受的(和用户),考虑使用 runas.exe
的 /savecred
选项:
runas /user:nonadmin /savecred "C:\Program Files (x86)\API\Flex.exe"
这将在 第一次 为当前用户调用给定计算机时提示输入 nonadmin
的密码,而不需要在 中提供密码]随后次调用。
否则,如果安装 psexec
等实用程序(如 K J 的回答所示)不是 选项:
您可以发送击键到runas.exe
,模拟交互式密码输入:
# Set your password here, or add it directly to the .SendKeys() argument below.
$password = 'test'
# Send the password as keystrokes, followed by Enter, then
# launch runas.exe, which should receive the keystrokes as if they
# had been typed interactively.
(New-Object -ComObject WScript.Shell).SendKeys("$password{ENTER}"); runas /user:nonadmin "C:\Program Files (x86)\API\Flex.exe"
注:
强制性警告:纯文本密码处理存在安全风险。
UI 脚本(模拟用户 activity)不像适当的程序控制那样稳健。