Команда RUNAS при перенаправлении её входного потока не срабатывает, но как оказывается, за исключением случая, когда ввод читается из устройства CON. При этом:
1) пароль начинает отображаться при вводе;
2) макросы DOSKEY начинают работать с RUNAS.EXE:
doskey.exe /exename=runas.exe pw=Мой пароль
runas /user:admin "chkdsk x:" <con
— теперь вместо пароля можно ввести «pw».
В свою очередь макросы DOSKEY позволяют улучшить автоматизацию ввода пароля с помощью WshShell.SendKeys(), — я подозреваю, что в тех случаях, когда говорят, что это не работает с RUNAS, виноват ненадёжный метод WshShell.SendKeys(): например, пароль содержит символы отсутствущие в текущей раскладке клавиатуры и т.п. Если же воспользоваться макросом, имя которого — устойчивый к отправке с помощью WshShell.SendKeys() символ, например, точка или цифра, то всё должно заработать:
@if (0)==1 @end /*
@echo off
set title="%~fs0 %random% %time%"
title %title%
doskey.exe /exename=runas.exe .=Мой пароль&&^
CScript.exe /nologo /e:JScript "%~fs0"&&^
runas.exe /user:admin "cmd.exe /k set user" >nul <con
exit /b
*/
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.AppActivate(WshShell.ExpandEnvironmentStrings("%title%"))?
WshShell.SendKeys(".~") : WScript.Quit(1);
(не следует запускать в скрытом окне, но можно в свёрнутом).