Windowsでコマンドラインパスワードのマスク
先日のエントリで
pw = gets puts "\n" * 50
みたいな恥ずかしいパスワード入力処理を書いてしまったのが気になって眠れなかったので調べてみた。
なんか「Unixだとsystem('stty -echo')だよ」みたいな古典的回答で結局知りたいことがわからない一連の流れが多くてうんざりだったけど、どうやらこれっぽい。
ほうほう。っていうか、
PG さん、こんにちは。WSH や VBScript の関数またはメソッドを使用してパスワードをマスクしたいというのであれば、がっかりさせてしまうかもしれません。というのも WSH と VBScript のどちらもパスワードのマスクをサポートしていないからです。ただし、まったく不可能というわけではなく、これらのコア スクリプト テクノロジに固執せず、視野を広げれば大丈夫です。
大丈夫っていわれても。すげえなWindows。
てなわけでまあ、
require 'win32ole' pw = WIN32OLE.new('ScriptPW.Password').getPassword puts
こう書けばよいことがわかった。
ところがこれ、自宅のXP Homeじゃうごかない。scriptpw.dllってのが、入ってないとダメっぽい。視野を広げても大丈夫じゃないじゃん!
Vista?知るかそんなん。ぷんすか。