Windowsでコマンドラインパスワードのマスク

先日のエントリで

pw = gets
puts "\n" * 50

みたいな恥ずかしいパスワード入力処理を書いてしまったのが気になって眠れなかったので調べてみた。


なんか「Unixだとsystem('stty -echo')だよ」みたいな古典的回答で結局知りたいことがわからない一連の流れが多くてうんざりだったけど、どうやらこれっぽい。

ほうほう。っていうか、

PG さん、こんにちは。WSHVBScript の関数またはメソッドを使用してパスワードをマスクしたいというのであれば、がっかりさせてしまうかもしれません。というのも WSHVBScript のどちらもパスワードのマスクをサポートしていないからです。ただし、まったく不可能というわけではなく、これらのコア スクリプト テクノロジに固執せず、視野を広げれば大丈夫です。

大丈夫っていわれても。すげえなWindows


てなわけでまあ、

require 'win32ole'
pw = WIN32OLE.new('ScriptPW.Password').getPassword
puts

こう書けばよいことがわかった。


ところがこれ、自宅のXP Homeじゃうごかない。scriptpw.dllってのが、入ってないとダメっぽい。視野を広げても大丈夫じゃないじゃん!


Vista?知るかそんなん。ぷんすか。