runasコマンドでパスワードをSendKeysで自動送信するには?

解決


モモ  2008-09-02 11:42:13  No: 101042  IP: 192.*.*.*

runasコマンドを使って、ログインしているユーザではなく特定の共通ユーザで処理をさせようとしてます。

runasが実行された時に、新しくコマンドプロンプトが開くのですが、
そのコマンドプロンプトに対して呼び出し元からパスワードを
SendKeysにて送信したいのですが、うまくいきません。
解決方法を教えていただけますでしょうか。

-----------------------------------------------------
Set objShell = CreateObject("WScript.Shell")
strCommand = """cscript.exe aaa.vbs""""
'runasと外部コマンドの設定
strRunas = "runas /user:test_user " & strCommand
iReturn = objShell.Run(strRunas, 1, True)

WScript.Sleep (100)
objShell.SendKeys "pswd"
objShell.SendKeys "{Enter}"
--------------------------------------------------

上記のやり方では、
「iReturn = objShell.Run(strRunas, 1, True)」
で呼び出したパスワード入力を求めてくるウィンドウを
閉じた後に元のバッチファイルウィンドウに
対してSendKeysされてました。。

お手数ですが、宜しくお願いします。

編集 削除
higadesu  2008-09-07 00:23:24  No: 101043  IP: 192.*.*.*

objShell.Run(strRunas, 1, True)
  の第三引数がなぜ「True」なのでしょうか?
  True : 実行したプログラムが終了するまで、処理を待機します。
と言う意味とおもわれるのですが、
  objShell.Run(strRunas, 1, False)
でも同じ結果なのでしょうか?

編集 削除
モモ  2008-09-08 17:24:06  No: 101044  IP: 192.*.*.*

>higadesuさん
書き込みありがとうございます。
True,Falseは関係なかったみたいです。

「WSHShell.AppActivate "runas.exe"」
を追加してパスワード入力したいウィンドウを指定して
アクティブにしたら、無事処理できました。

ただ、タイミングによっては
動きが不安定なので、Sleepの長さを微調整する
必要があるみたいです。

編集 削除