RUNAS
RUNASとは、Microsoftのページから引用させてもらうと
runas を使うと、ユーザーの現在のログオンで提供されるアクセス許可とは異なるアクセス許可で、特定のツールやプログラムを実行できます。
というコマンドである。Windows 2000やXPでは、実行ユーザーが存在するためプロセスの権限が変わり、できることできないことがあったりする。
このrunasであるが結構便利で、ファイル名を指定して実行から「runas /user:Administrator cmd」とすると「su -」のような感じでコマンドラインプロンプトを立ち上げることができる。
成功 or 失敗
さて、このコマンドを使うと指定したユーザーのパスワードを入れることになる。ここで、パスワードによる認証が成功したか失敗したかは取得できるのだが、困ったことにXPと2000だとエラーの値が違うのである。
実験
以下のようなバッチファイルを作成しそれぞれの結果を見てみた。
@echo off
runas /user:Administrator “notepad.exe”
echo %errorlevel%
結果 Windows 2000
認証成功するとerrorlevelに1が設定される。失敗の場合0。
結果 Windows XP
認証成功するとerrorlevelに0が設定される。失敗の場合1。
ということで、2000とXPでは値が違うので、認証できるまでパスワードを入れさせるようにするバッチを作る場合、先に2000かXPか判定しそれによる場合わけをする必要がある。ちなみに、2000 Server(サーバー)は2000と同様であり、2003 ServerはXPと同様な結果になった。